Ssl
Stunnel 不適用於某些主機的 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
有人對這裡發生的事情有任何見解嗎?google了好幾個小時,還是搞不清楚。
OpenSSL 版本:OpenSSL 0.9.8e-fips-rhel5 2008 年 7 月 1 日。
隧道版本: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