接続先の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"
で応答します。
現時点では、いくつかの可能性のある回避策がありますが、この特定のサーバーを特別に扱うのではなく、一般的なものを理想的に探しているので、「標準的な」回避策このため。