2010-09-09 34 views
2

我使用Clojure的-HTTP做出以下POST:禁用SSL連接的主機名檢查?

(clojure-http.resourcefully/post "https://android.apis.google.com/c2dm/send" 
    {"Authorization" (str "GoogleLogin auth=" auth-token)} 
    {"registration_id" registration-id 
    "data.msg" "blah" 
    "collapse_key" "blah"}) 

並得到此異常:

java.security.cert.CertificateException: No subject alternative DNS name matching android.apis.google.com found. 
[Thrown class javax.net.ssl.SSLHandshakeException] 

出於某種奇怪的原因,時間我不約10%得到異常並且請求通過。

我相信這是Java的主機名檢查SSL連接*的問題,所以我的問題是,我該如何禁用Clojure? (或者是一個壞主意安全明智?)

感謝, 衛

*這個職位和其他類似的推論:http://www.jroller.com/hasant/entry/no_subject_alternative_names_matching

回答

2

它不是一個問題,你的代碼,它的一個問題與Android的網站。

在現代瀏覽器中打開此鏈接 - https://android.apis.google.com/。您將看到SSL證書屬於*.google.com,但您正在訪問的域名是​​。您應該可以在Android論壇上搜索解決此問題的解決方案。

這是一個壞主意,禁用主機名檢查,你開放自己的人在中間的攻擊。如果你真的不關心安全性,那麼你不妨使用http,這比禁用主機名檢查更容易。

+0

謝謝!沒有意識到我可以通過(現在)只使用http。我打算在Android郵件列表上留言,要求他們修正他們的SSL證書。 – yayitswei 2010-09-09 20:31:05