警告:SSLv3は廃止されました 。 完全に無効にする を検討してください。
StunnelをSSLキャッシュとしてサーバーに設定しようとしています。すべてがスムーズで、ほとんどが設計どおりに機能しています。
次に、ログファイルでエラーが発生しました。
SSL_accept: 1408F10B: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
奇妙な理由で、すべてのクライアントがそれをトリガーするわけではありません。リンクを使用してCentOSから接続する-エラーが表示されます(複数のマシンを試しました)。リンクを使用してUbuntuから接続-エラーなし。
Wgetを使用して試してみましたが、TLSv1ではすべてスムーズですが、SSLv3ではエラーが表示されます。同時に、wgetは次のように報告します。
OpenSSL: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
SSL接続を確立できません。
これが私の設定です:
pid = /etc/stunnel/stunnel.pid
debug = 3
output = /etc/stunnel/stunnel.log
socket=l:TCP_NODELAY=1
socket=r:TCP_NODELAY=1
verify=3
; fixing "fingerprint does not match" error
fips=no
[https]
accept=12.34.56.78:443
connect=127.0.0.1:80
TIMEOUTclose=0
xforwardedfor=yes
CAfile = /path/to/ssl/example.com.cabundle
cert=/path/to/ssl/example.com.crt
key=/path/to/ssl/example.com.key
誰がここで何が起こっているのかについて何か洞察がありますか?数時間グーグル化して、それを理解することはできません。
OpenSSLバージョン:OpenSSL 0.9.8e-fips-rhel5 2008年7月1日。
Stunnelバージョン:4.32
編集:
これはopenssl s_client -connect example.com:443 -ssl3
の出力です
CONNECTED(00000004)
3897:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1086:SSL alert number 40
3897:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:530:
-tls1
と同じですが、エラーなしで問題なく動作します。
さて、問題は解決しました...私はこれを構成に追加しました:
sslVersion = all
options = NO_SSLv2
私が理解している限り、エラーはSSLv23に関連していました。これですべてが期待どおりに動作します。
SSL3_GET_RECORD:wrong version number
がキーです。 CentOSシステムのlynxがSSLv3を使用していないようです。
openssl s_client
を使用すると、正確な動作を簡単に確認できます。
SSLv3だけで何が起こるかを確認します。
openssl s_client -connect server:443 -ssl3
そしてTLSだけで:
openssl s_client -connect server:443 -tls1
設定しなければならなかった
options = -NO_SSLv3
nO_SSLv3のnow defaultオプションを無効にします。 (に接続するサーバーはTLSを実行しません)