使用 stunnel 作為帶有 STARTTLS 的 SMTP 的 SSL 版本之間的代理
我有一個不支持 TLS 1.2 的舊軟體。但是 SMTP 伺服器只支持 TLS 1.2。
現在我想使用 stunnel 連接到 SMTP 伺服器並監聽 smtp 訪問。我已經有此伺服器的有效證書。在配置不同的 TLS 版本之前,我只想測試這個“stunnel 代理”是否正常工作。我使用 Thunderbird 連接到 :587 In
$$ 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 版本進行進一步測試時,我將添加更多資訊。
以上配置對於代理不同的 TLS 版本是正確的。無需在 stunnel 中為 SSL/TLS 配置任何特殊內容。
stunnel -version stunnel 5.30 on x86_64-pc-linux-gnu platform
當您通過
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 代理埠將只在內部網路中可用,並且永遠不會暴露在網際網路上,所以可以使用這個 hack,直到這個不支持 TLS 1.2 的舊軟體被替換。