4

接続している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"ます。これは、アプリケーションで見られた元の問題です。

この時点で考えられる回避策はいくつかありますが、この特定のサーバーを特別なケースにするのではなく、一般的なものを探しているのが理想的です。そのため、このための何らかの「標準」回避策があることを期待しています。

4

1 に答える 1

2

問題は実際にはRFC5077セッションチケット拡張によって引き起こされたようです。これを無効にすると(-no_ticketたとえば、opensslに渡すことにより)、TLSv1ClientHelloがリモートサーバーで成功するようになりました。アプリケーションでこの拡張機能を特に必要としないため、この回避策は続行するための最も適切な方法のようです。

少し調べてみると、問題は単に空のセッションチケットの拡張である可能性がありますが、この特定のサーバーに空でないサーバーで問題があるかどうかをわざわざ調べようとはしませんでした。

于 2009-04-02T15:19:36.333 に答える