Ssl

如何將“僅 SSLv3”Web 客戶端連接到僅接受 TLS1.0 - TLS1.2 的 Web 伺服器

  • March 12, 2021

我有一個支持 SSLv3、TLS1.0、TLS1.1 和 TLS1.2 的舊式嵌入式 HTTP 客戶端(非常舊)。出於安全原因,我想刪除 SSLv3。

我重建了 openssl 庫並想驗證這個 webclient 在安全 HTTP 連接期間是否不使用 SSLv3。該客戶端還被程式為連接到 Internet 上的特定 Web 伺服器,該伺服器已經不支持 SSLv3。

我試圖通過在嵌入式 Web 客戶端和 Internet Web 伺服器之間使用代理來驗證它是否工作。

設置:

Webclient <—-> Squid 代理 <—-> https://www.loremipsum.com/xxx/xxx

環境:
網頁客戶端
- 僅限 SSLv3
魷魚代理:
-安裝在 windows server 2012   

-client TLS version --&gt; TLS1.0, TLS1.1, TLS1.2 enabled   

-server TLS version --&gt; SSLv3 Only  

外部網路伺服器:
- 僅支持 TLS1.0、TLS1.1 和 TLS1.2

預期成績:
移除 SSLv3 之前:在 HTTPS 連接中使用 SSLv3

刪除 SSLv3 後:Webclient 無法連接數據包中的握手失敗程式碼

實際結果:
刪除 SSLv3 之前:使用 **TLS1.0** 代替 SSLv3(這部分是我的問題)

移除 SSLv3 後:HTTPS 連接中使用了 TLS1.0

這裡有人知道為什麼在實際測試中使用 TLS1.0 而不是 SSLv3 嗎?或者您能推薦任何我可以用來確認此更改的工具嗎?

非常感謝你。

為什麼在您的測試中使用 tls:客戶端將檢查其可用的密碼並首先嘗試最強的密碼。所以它總是更喜歡 tls 而不是 ssl3。

如果該網站在 Internet 上可見,您可以使用https://testtls.com等測試服務之一來驗證啟用/禁用哪個協議。

如果(我猜)該服務僅在內部可用,您可以使用 curl 並指定協議:

curl -vvv --sslv3 https://www.myhost.tld

您可以深入了解並單獨指定每個密碼:https ://curl.se/docs/ssl-ciphers.html

另一種方法是直接使用 openssl:(https://www.misterpki.com/openssl-s-client/

openssl s_client -connect www.host.tdl:443 -ssl3

請注意,在這兩種情況下,您都需要 openssl/curl 且 ssl3 仍然可用(較新的根本沒有編譯 ssl)

您需要在 squid 中進行配置是這樣的(您可能需要根據 openssl 版本調整選項):

https_port ... options=SSLv3:NO_SSLv2:NO_TLS1:NO_TLS1_1:NO_TLS1_3
http_port ... ssl-bump options=NO_SSLv3:NO_SSLv2:NO_TLS1:NO_TLS1_1:NO_TLS1_3

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