Ssl

使用 stunnel 作為帶有 STARTTLS 的 SMTP 的 SSL 版本之間的代理

  • July 1, 2021

我有一個不支持 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 的舊軟體被替換。

引用自:https://serverfault.com/questions/1068270