stunnelサーバーの設定に関するバグ: `SSL3_GET_CLIENT_HELLO:wrong version number`


9

stunnelWindows XPでサーバーを設定していますが、クライアントがアクセスしようとすると、次のバグが発生します。

2013.02.14 00:02:16 LOG7[8848:7664]: Service [https] accepted (FD=320) from 107.20.36.147:56160
2013.02.14 00:02:16 LOG7[8848:7664]: Creating a new thread
2013.02.14 00:02:16 LOG7[8848:7664]: New thread created
2013.02.14 00:02:16 LOG7[8848:9792]: Service [https] started
2013.02.14 00:02:16 LOG5[8848:9792]: Service [https] accepted connection from 107.20.36.147:56160
2013.02.14 00:02:16 LOG7[8848:9792]: SSL state (accept): before/accept initialization
2013.02.14 00:02:16 LOG7[8848:9792]: SSL alert (write): fatal: handshake failure
2013.02.14 00:02:16 LOG3[8848:9792]: SSL_accept: 1408A10B: error:1408A10B:SSL routines:SSL3_GET_CLIENT_HELLO:wrong version number
2013.02.14 00:02:16 LOG5[8848:9792]: Connection reset: 0 byte(s) sent to SSL, 0 byte(s) sent to socket
2013.02.14 00:02:16 LOG7[8848:9792]: Local socket (FD=320) closed
2013.02.14 00:02:16 LOG7[8848:9792]: Service [https] finished (0 left)

これについてどうすればいいですか?私がオンラインで読んだところ、これは私のサーバーがSSL3で通信できることを宣伝していることを意味している可能性がありますが、実際にはできません。これが本当なら私はこれをどのように修正できるか知りたいのですが。stunnel.confファイルを編集していますが、これを修正するために何を変更すればよいかわかりません。

更新:

上記のエラーメッセージは、Twilioクライアント(Twilioのサーバー)がサーバーにアクセスしようとしたときにのみ表示されます。自分のコンピューターの1つでサーバーにアクセスしようとすると、ページは表示されますが、コンテンツが表示された後、Chromeは約30秒間「読み込み中」としてページを表示し、最後にstunnel次のメッセージを表示します。

transfer: s_poll_wait: TIMEOUTclose exceeded: closing

更新:

以下はwiresharkのキャプチャです:https : //gist.github.com/cool-RR/4963477

キャップファイル:https : //dl.dropbox.com/u/1927707/wireshark.cap

サーバーはポート8088で実行されることに注意してください。

更新:

サーバーからのログは次のとおりです(debug = 7):

2013.02.17 17:06:52 LOG7[7636:2092]: No limit detected for the number of clients
2013.02.17 17:06:52 LOG5[7636:2092]: stunnel 4.54 on x86-pc-msvc-1500 platform
2013.02.17 17:06:52 LOG5[7636:2092]: Compiled/running with OpenSSL 1.0.1c-fips 10 May 2012
2013.02.17 17:06:52 LOG5[7636:2092]: Threading:WIN32 SSL:+ENGINE+OCSP+FIPS Auth:none Sockets:SELECT+IPv6
2013.02.17 17:06:52 LOG5[7636:2092]: Reading configuration from file stunnel.conf
2013.02.17 17:06:52 LOG5[7636:2092]: FIPS mode is enabled
2013.02.17 17:06:52 LOG7[7636:2092]: Compression not enabled
2013.02.17 17:06:52 LOG7[7636:2092]: Snagged 64 random bytes from C:\Documents and Settings\User/.rnd
2013.02.17 17:06:52 LOG7[7636:2092]: Wrote 1024 new random bytes to C:\Documents and Settings\User/.rnd
2013.02.17 17:06:52 LOG7[7636:2092]: PRNG seeded successfully
2013.02.17 17:06:52 LOG6[7636:2092]: Initializing service [https]
2013.02.17 17:06:52 LOG7[7636:2092]: Certificate: G:\Dropbox\StartSSL\SSL Cert.pem
2013.02.17 17:06:52 LOG7[7636:2092]: Certificate loaded
2013.02.17 17:06:52 LOG7[7636:2092]: Key file: G:\Dropbox\StartSSL\SSL Cert.pem
2013.02.17 17:06:52 LOG7[7636:2092]: Private key loaded
2013.02.17 17:06:52 LOG7[7636:2092]: Could not load DH parameters from G:\Dropbox\StartSSL\SSL Cert.pem
2013.02.17 17:06:52 LOG7[7636:2092]: Using hardcoded DH parameters
2013.02.17 17:06:52 LOG7[7636:2092]: DH initialized with 2048-bit key
2013.02.17 17:06:52 LOG7[7636:2092]: ECDH initialized with curve prime256v1
2013.02.17 17:06:52 LOG7[7636:2092]: SSL options set: 0x03000004
2013.02.17 17:06:52 LOG5[7636:2092]: Configuration successful
2013.02.17 17:06:52 LOG7[7636:2092]: Service [https] (FD=268) bound to 0.0.0.0:8088
2013.02.17 17:07:08 LOG7[7636:2092]: Service [https] accepted (FD=320) from 54.242.25.199:45922
2013.02.17 17:07:08 LOG7[7636:2092]: Creating a new thread
2013.02.17 17:07:08 LOG7[7636:2092]: New thread created
2013.02.17 17:07:08 LOG7[7636:8004]: Service [https] started
2013.02.17 17:07:08 LOG5[7636:8004]: Service [https] accepted connection from 54.242.25.199:45922
2013.02.17 17:07:08 LOG7[7636:8004]: SSL state (accept): before/accept initialization
2013.02.17 17:07:08 LOG7[7636:8004]: SSL alert (write): fatal: handshake failure
2013.02.17 17:07:08 LOG3[7636:8004]: SSL_accept: 1408A10B: error:1408A10B:SSL routines:SSL3_GET_CLIENT_HELLO:wrong version number
2013.02.17 17:07:08 LOG5[7636:8004]: Connection reset: 0 byte(s) sent to SSL, 0 byte(s) sent to socket
2013.02.17 17:07:08 LOG7[7636:8004]: Local socket (FD=320) closed
2013.02.17 17:07:08 LOG7[7636:8004]: Service [https] finished (0 left)

更新:

これが私のstunnel.confファイルです。


Dropboxファイルが見つからないようです。サーバーがHTTP / 404を返す
Mircea Vutcovici

@MirceaVutcoviciすみません、今直しました。
Ram Rachum 2013

質問の報奨金を100ポイントに増やしました。
Ram Rachum 2013

1
stunnel.confファイルも含めてください。サーバーがSSLv3.0接続を拒否しているようです
Stephane

含まれています
Ram Rachum 2013

回答:


3

ネットワークキャプチャを行い、拒否された理由を確認する必要があります。また、両方のエンドポイントのログを確認してください。増加debugのstunnelのconfの中にレベルを。

クライアントがサポートしているSSLプロトコルのバージョンを確認するには、ネットワークトレースを作成する必要があります。次に、サーバーがそのバージョンもサポートすることを確認します。

クライアントは、サポートする最高のTLSプロトコルバージョン、乱数、推奨されるCipherSuiteのリスト、および推奨される圧縮方法を指定したClientHelloメッセージを送信します。

ソース

再ネゴシエーションのセキュリティバグのため、SSLプロトコルが数年前に変更されたことに注意してください。参照してください。CVE-2009-3555およびこのページを SSL再ネゴシエーションに

サーバーは次のように応答しています:

Secure Sockets Layer
    SSLv3 Record Layer: Alert (Level: Fatal, Description: Handshake Failure)
        Content Type: Alert (21)
        Version: SSL 3.0 (0x0300)
        Length: 2
        Alert Message
            Level: Fatal (2)
            Description: Handshake Failure (40)

SSLサーバーのログを確認して、接続が拒否された理由を確認する必要があります。stunnelでSSLデバッグを有効にしてみてください:debug=7

stunnelサーバが持っているoptions = NO_SSLv3が、クライアントはのSSLv3を使用して接続しようとしています。SSLの新しいバージョンをサポートするようにクライアントをアップグレードするかstunnel、SSLv3を受け入れるように構成を変更する必要があります。


質問を詳細に更新しました。ネットワークキャプチャを実行する必要がありますか?
Ram Rachum 2013

はい、SSLクライアントでサポートされているバージョンを確認します。
Mircea Vutcovici 2013

Wiresharkのキャプチャを実行し、質問にリンクしました。
Ram Rachum 2013

1
OK、問題はFIPSモードが有効になっていて(FIPSでコンパイルされたstunnelではデフォルトで有効になっている)、クライアントがSSLv3を使用して接続しようとしていることです(ログまたはネットワークキャプチャから確認する必要があると思います)。ただし、FIPSはTLSv1以降でのみ機能します。
Mircea Vutcovici 2013

1
次の2つの解決策があります。1. SSLクライアント(Twilio)をアップグレードします。2. fips = nostunnel.confに追加することにより、FIPSコンプライアンスを無効にし、セキュリティを低下させます
Mircea Vutcovici

0

クライアントとサーバーの間でSSLバージョンが一致していない可能性があります。クライアントで古いSSLバージョンを無効にして、クライアントがSSL3のみに設定されていることを確認します。


どうすればいいのか分かりません。
Ram Rachum、2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.