使用 stunnel 作为 SMTP 与 STARTTLS 之间 SSL 版本的代理

使用 stunnel 作为 SMTP 与 STARTTLS 之间 SSL 版本的代理

我有一个相当老的软件,不支持 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 的旧软件被替换。

相关内容