Openssl
stunnel4:禁用安全客戶端發起的重新協商
如何在 stunnel4 中禁用安全客戶端發起的重新協商?我在帶有 OpenSSL 1.0.1f 的 Ubuntu 14.04 Trusty 上使用版本 stunnel 4.53-1.1ubuntu1,在帶有 OpenSSL 1.0.1e 的 Debian Wheezy 上使用版本 stunnel 4.53-1.1。
stunnel 文件列出了一個選項:
重新談判 = 是 | 不
支持 SSL 重新協商
但不幸的是,這會導致以下錯誤:
第 70 行:“重新協商 = 否”:指定的選項名稱在此處無效
但是這個選項在哪裡有效?我為單一服務嘗試了它(無論如何這毫無意義),但它也不起作用。該文件對此不是很冗長,我無法通過搜尋引擎找到任何有關此的資訊。
有誰知道,如何做到這一點?
我使用了以下最小配置:
pid=/stunnel4.pid debug = 5 output = /var/log/stunnel4/stunnel.log cert = /etc/ssl/certs/ssl-cert-snakeoil.pem key = /etc/ssl/private/ssl-cert-snakeoil.key renegotiation = no [https] accept = 443 connect = localhost:8000
這些測試表明,支持重新協商:
Qualys 的 ssltest 顯示:
安全客戶端發起的重新協商:支持的 DoS 危險(更多資訊)
使用 openssl 手動執行,也確認:
$ openssl s_client -connect localhost:443 CONNECTED(00000003) [...] --- R RENEGOTIATING depth=0 CN = mint.home verify error:num=18:self signed certificate verify return:1 depth=0 CN = mint.home verify return:1
根據stunnel ChangeLog,
renegotiation
參數是在stunnel 版本 4.54中添加的。這就解釋了為什麼 stunnel 4.53 抱怨指定的選項名稱在此處無效
替代解決方案:
- 安裝更高版本的 stunnel deb 文件,例如 jessie(測試)或 sid(不穩定)的 stunnel
- 做自編譯 stunnel