我正在使用clojure-http进行以下POST:
(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
答案 0 :(得分:2)
这不是你的代码的问题,它是android的网站的问题。
在现代浏览器中打开此链接 - https://android.apis.google.com/。您将看到SSL证书属于*.google.com
,但您正在访问*.apis.google.com
下的域。您应该在Android论坛上搜索此问题的解决方案。
禁用主机名检查是一个坏主意,你正在开放自己的中间人攻击。如果你真的不关心安全性,你也可以使用http,这比禁用主机名检查更容易。