2009-04-01 7 views
4

Il semble y avoir un bug dans l'implémentation SSL d'un serveur https auquel je me connecte; le problème est apparu initialement dans mon application, mais depuis je l'ai débogué/reproduit avec l'utilitaire de ligne de commande openssl, donc je suis à peu près certain qu'il n'a rien à voir avec mon application à ce stade.Solution de contournement pour le bogue SSL

Si je me connecte au serveur distant sans autre option que -connect, OpenSSL envoie un CLIENT-HELLO SSLv2, le serveur répond avec un TLSv1 ServerHello et tout se passe normalement.

Si je me connecte avec -ssl3, OpenSSL envoie un SSLv3 ClientHello, le serveur répond avec un SSLv3 ServerHello, et encore une fois tout va bien.

Cependant, si je me connecte avec -no_ssl2 ou -tls1, OpenSSL envoie un TLSv1 ClientHello, et le serveur répond avec "TLS 1.0 Alert [length 0002], fatal unexpected_message", ce qui est le problème d'origine que je voyais dans ma demande. Il existe un certain nombre de solutions de contournement possibles qui se présentent à ce stade, mais je recherche idéalement quelque chose de générique, plutôt que spécial-boîtier de ce serveur particulier, donc j'espère qu'il y a une sorte de solution de contournement "standard" pour ça.

Répondre

2

Il semble que le problème ait été provoqué par l'extension de ticket de session RFC 5077; la désactivation de ce paramètre (en passant par exemple -no_ticket à openssl) a permis au ClientLello TLSv1 de réussir avec le serveur distant. Comme je n'ai pas particulièrement besoin de cette extension dans mon application, cette solution de contournement semble être la meilleure façon de procéder. Un peu de recherche suggère que le problème peut être vides extensions de ticket de session, mais je n'ai pas pris la peine d'essayer de savoir si ce serveur particulier avait des problèmes avec les non-vides.

Questions connexes