接続しているhttpsサーバーのSSL実装にバグがあるようです。この問題は最初は私のアプリケーションで発生しましたが、opensslコマンドラインユーティリティを使用してデバッグ/再現しているので、現時点ではアプリケーションとは何の関係もないと確信しています。
以外のオプションを指定せずにリモートサーバーに接続すると-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"
ます。これは、アプリケーションで見られた元の問題です。
この時点で考えられる回避策はいくつかありますが、この特定のサーバーを特別なケースにするのではなく、一般的なものを探しているのが理想的です。そのため、このための何らかの「標準」回避策があることを期待しています。