我有一个相当老的软件,不支持 TLS 1.2。但是 SMTP 服务器仅支持 TLS 1.2。
现在我想使用 stunnel 连接到 SMTP 服务器并监听 smtp 访问。我已经有此服务器的有效证书。在配置不同的 TLS 版本之前,我只想测试这个“stunnel 代理”是否正常工作。我使用 Thunderbird 连接到 :587 在 [TLS_proxy_connector] 和 [TLS_proxy_listener] 中我有protocol = smtp
。我试图在一个或两个部分中将它们注释掉。但是我立即收到错误或某种超时,Thunderbird 无法发送电子邮件。
这是 stunnel 配置:
setuid = stunnel4
setgid = stunnel4
foreground = yes
;don't write pid
pid =
[TLS_proxy_connector]
client = yes
accept = 127.0.0.1:53681
protocol = smtp
connect = <mailserver>:587
verify = 2
CApath = /etc/ssl/certs/
checkHost = <mailserver>
;OCSPaia = yes
[TLS_proxy_listener]
accept = 587
protocol = smtp
key = /etc/ssl/private/key.pem
cert = /etc/ssl/certs/cert_.pem
CAfile = /etc/ssl/certs/chain_.pem
connect = 53681
我做错了什么?有没有更适合的工具?我知道我可以设置一个自己的邮件服务器,它接受 TLS 1.0 和 1.1 并用作智能主机,但那太过分了,因为那样我就不得不关心安全性了。目前正在检查安全性,因为您只能使用有效的凭据发送。谢谢你的帮助。
更新:当两个条目都有时,它可以与上述配置一起使用protocol = smtp
。在对 TLS 版本进行进一步测试后,我将添加更多信息。
答案1
以上配置对于代理不同的 TLS 版本是正确的。无需在 stunnel 中为 SSL/TLS 配置任何特殊内容。
stunnel -version
stunnel 5.30 on x86_64-pc-linux-gnu platform
当您通过 安装时,此版本是 Debian 10 上的默认版本sudo apt install stunnel
。
原始服务器的 testssl.sh 输出
Testing protocols via sockets
SSLv2 not offered (OK)
SSLv3 not offered (OK)
TLS 1 not offered
TLS 1.1 not offered
TLS 1.2 offered (OK)
SPDY/NPN (SPDY is an HTTP protocol and thus not tested here)
HTTP2/ALPN (HTTP/2 is a HTTP protocol and thus not tested here)
testssl.sh 通过 stunnel 输出代理端口
Testing protocols via sockets
SSLv2 not offered (OK)
SSLv3 not offered (OK)
TLS 1 offered
TLS 1.1 offered
TLS 1.2 offered (OK)
SPDY/NPN (SPDY is an HTTP protocol and thus not tested here)
HTTP2/ALPN (HTTP/2 is a HTTP protocol and thus not tested here)
注意:使用 TLS 1 和 1.1 通常不是一个好主意,因为这两种协议都有安全漏洞,例如https://www.venafi.com/blog/why-its-dangerous-use-outdated-tls-security-protocols 在这种情况下,此 TLS 代理端口将仅在内部网络中可用,并且永远不会暴露给互联网,因此可以使用此技巧,直到不支持 TLS 1.2 的旧软件被替换。