Ser*_*gey 9 ssl openssl ssl-certificate stunnel
我正在尝试将 Stunnel 设置为服务器作为 SSL 缓存。一切都很顺利,而且大多数情况下都按设计工作。
然后我在日志文件中遇到错误:
SSL_accept: 1408F10B: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
Run Code Online (Sandbox Code Playgroud)
由于某些奇怪的原因,并非所有客户端都会触发。使用链接从 CentOS 连接 - 出现错误(尝试了多台机器)。使用链接从 Ubuntu 连接 - 没有错误。
尝试使用 wget,使用 TLSv1 一切顺利,但使用 SSLv3 出现错误。同时,wget 报告:
OpenSSL: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
Run Code Online (Sandbox Code Playgroud)
无法建立 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
Run Code Online (Sandbox Code Playgroud)
任何人都对这里发生的事情有任何见解?现在谷歌搜索了几个小时,无法弄清楚。
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:
Run Code Online (Sandbox Code Playgroud)
与-tls1
工作正常相同,没有任何错误。
Ser*_*gey 10
好的,问题解决了...我将其添加到配置中:
sslVersion = all
options = NO_SSLv2
Run Code Online (Sandbox Code Playgroud)
据我了解,错误与 SSLv23 有关。现在一切都按预期工作。
SSL3_GET_RECORD:wrong version number
是关键。您的 CentOS 系统上的 lynx 似乎没有使用 SSLv3。
使用以下命令检查确切行为会更容易openssl s_client
:
检查仅使用 SSLv3 会发生什么:
openssl s_client -connect server:443 -ssl3
Run Code Online (Sandbox Code Playgroud)
仅使用 TLS:
openssl s_client -connect server:443 -tls1
Run Code Online (Sandbox Code Playgroud)