2009-04-01 16 views
4

接続先のhttpsサーバのSSL実装にバグがあるようです。最初は私のアプリケーションで問題が発生しましたが、それ以降はopensslコマンドラインユーティリティを使ってデバッグ/再現していますので、現時点ではアプリケーションとは何の関係もありません。SSLバグの回避策

-connect以外のオプションを指定せずにリモートサーバーに接続すると、OpenSSLはSSLv2 CLIENT-HELLOを送信し、サーバーはTLSv1 ServerHelloで応答し、すべて正常に処理されます。

-ssl3と接続した場合、OpenSSLはSSLv3 ClientHelloを送信し、サーバーはSSLv3 ServerHelloで応答し、すべて正常です。

私は-no_ssl2または-tls1と接続する場合は、私は自分のアプリケーションで見ていた元の問題である、OpenSSLはTLSv1ののClientHelloを送信し、サーバが"TLS 1.0 Alert [length 0002], fatal unexpected_message"で応答します。

現時点では、いくつかの可能性のある回避策がありますが、この特定のサーバーを特別に扱うのではなく、一般的なものを理想的に探しているので、「標準的な」回避策このため。

答えて

2

問題は実際にはRFC 5077のセッションチケット拡張が原因であるようです。これを無効にすると(例えば、をopensslに渡すことによって)、TLSv1 ClientHelloはリモートサーバーで成功することができました。私のアプリケーションでこの拡張機能を特に必要としないので、この回避策は進めるのに最も適切な方法のようです。

問題がちょうど空のセッションチケットの拡張であることを示唆していますが、この特定のサーバーが空でないものに問題があるかどうかを判断しようとはしませんでした。

関連する問題