2010-09-09 46 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