2010-09-09 9 views
2

J'utilise clojure-http pour faire ce qui suit POST:Désactiver la vérification du nom d'hôte pour les connexions 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"}) 

Et obtenir cette exception:

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

Pour une raison bizarre, environ 10% du temps, je ne suis pas obtenir l'exception et la demande passe par.

Je crois que c'est un problème avec le nom d'hôte Java vérifiant sur les connexions SSL *, alors ma question est, comment puis-je désactiver cela de Clojure? (Ou est-ce une mauvaise idée sage sécurité?)

Merci, Wei

* déduit de ce poste et d'autres semblables: http://www.jroller.com/hasant/entry/no_subject_alternative_names_matching

Répondre

2

ne est pas un problème avec votre code, est un problème avec le site Web d'android. Ouvrez ce lien dans un navigateur moderne https://android.apis.google.com/. Vous verrez que le certificat SSL appartient à *.google.com, mais que vous visitez un domaine sous *.apis.google.com. Vous devriez probablement rechercher sur les forums Android pour trouver une solution à ce problème.

C'est une mauvaise idée de désactiver la vérification du nom d'hôte, vous vous ouvrez à des attaques de type "man-in-the-middle". Si vous ne vous souciez pas vraiment de la sécurité, vous pouvez tout aussi bien utiliser http, c'est plus simple que de désactiver les contrôles de nom d'hôte.

+0

Merci! Je ne savais pas que je pouvais me débrouiller (pour l'instant) en utilisant juste http. Je prévois de laisser un message sur la liste de diffusion Android leur demandant de réparer leur certificat SSL. – yayitswei