Ssl
如何將“僅 SSLv3”Web 客戶端連接到僅接受 TLS1.0 - TLS1.2 的 Web 伺服器
我有一個支持 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 --> TLS1.0, TLS1.1, TLS1.2 enabled -server TLS version --> 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