我在 Raspberry Pi 上运行了 Stunnel,它充当 apache2 服务器的 TLS 包装器。我已将其配置为使用TLS-PSK(我认为是正确的),但是当我尝试完成 TLS 握手时,日志显示以下内容:
2016.04.11 21:05:53 LOG7[0]: Service [PSK_server] started
2016.04.11 21:05:53 LOG5[0]: Service [PSK_server] accepted connection from 192.168.42.10:4097
2016.04.11 21:05:53 LOG7[0]: SSL state (accept): before/accept initialization
2016.04.11 21:05:53 LOG7[0]: SNI: no virtual services defined
2016.04.11 21:05:53 LOG7[0]: SSL alert (write): fatal: protocol version
2016.04.11 21:05:53 LOG3[0]: SSL_accept: 1408F10B: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
2016.04.11 21:05:53 LOG5[0]: Connection reset: 0 byte(s) sent to SSL, 0 byte(s) sent to socket
2016.04.11 21:05:53 LOG7[0]: Deallocating application specific data for addr index
2016.04.11 21:05:53 LOG7[0]: Local descriptor (FD=3) closed
2016.04.11 21:05:53 LOG7[0]: Service [PSK_server] finished (0 left)</code>
我已经在 Wireshark 中检查过,我发送的数据包都是 TLS 1.2。
我的 stunnel 配置文件如下所示:
output = /etc/stunnel/stunnel.log
client = no
fips = no
ciphers = PSK
PSKsecrets = /home/psk.txt
debug = 7
sslVersion = TLSv1.2
[PSK_server]
accept = PSK_server
connect = 80
它发送一个 TLS 致命警报数据包,错误代码为 70(这是协议版本,因此它实际上并没有告诉我比日志更多的信息)
这很奇怪;我可以发送客户端问候消息,服务器发送服务器问候和服务器问候完成,没有任何问题。只有当我发送客户端密钥交换消息时,我才会收到警报。任何帮助/建议都将不胜感激!
答案1
我会降低 TLS 版本
这是我在树莓派上用到的
options = NO_SSLv2
options = NO_SSLv3
CAFile = /etc/stunnel/server.crt
cert = /etc/stunnel/server.crt
key = /etc/stunnel/server.key
pid = /var/run/stunnel.pid
output = /var/log/stunnel
verify = 4
debug = 5
[SERVICE]
client = yes
accept = 127.0.0.1:9200
connect = SERVER.com:1111