Mac-Osx
如何使用 SSL3 與伺服器通信?
我正在嘗試獲取可以為客戶端和 ALB 之間的請求解密的 Wireshark 跟踪。為了解密交易,我需要強制客戶端/伺服器禁用 PFC(完美前向保密)。我可以訪問伺服器私鑰。
當我這樣做時:
openssl s_client -connect server:443 -debug -msg -state -cipher AES128-SHA
有用。
但是,當我這樣做時:
openssl s_client -connect keystone-ext.develop.zillow.net:443 -debug -msg -state -cipher AES128-SHA -ssl3
它失敗。輸出如下:
SSL3 alert read:fatal:handshake failure SSL_connect:failed in SSLv3 read server hello A 31996:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-64.50.7/src/ssl/s3_pkt.c:1145:SSL alert number 40 31996:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-64.50.7/src/ssl/s3_pkt.c:566:
我在用:
$ openssl version OpenSSL 0.9.8zh 14 Jan 2016
知道我做錯了什麼嗎?
如何使用 SSL3 與伺服器通信?
不。不要更改協議(或使用舊的 OpenSSL),這會改變安全性。完美的前向保密是一項功能。
相反,在客戶端或伺服器上使用會話密鑰日誌記錄。將環境變數設置
SSLKEYLOGFILE
為跟踪文件。這得到了一些客戶端的支持,特別是瀏覽器、NSS 和libcurl。然後將 Wireshark 指向它:Edit > Preferences, Protocols > SSL > (Pre)-Master-Secret 日誌文件名。編輯:TLS 解密的另一個參考是來自 SharkFest ASIA 2018 的 SSL/TLS 解密展示。它指出 ECDHE 不能僅使用 RSA 私鑰解密。提醒一下,TLS 1.3 將是所有 PFS。它還描述了 SSL 密鑰記錄的更多實現的狀態,特別是 OpenSSL 和派生類允許應用程序呼叫
SSLCTXsetkeylogcallback()
,而 NSS 和 GnuTLS 具有SSLKEYLOGFILE
環境變數。因此,對於靜態連結的 OpenSSL,您可以讓開發人員使用不同的 TLS 庫,或者實現他們自己的帶有日誌記錄的回調函式,或者您自己探勘調試器來提取它。請注意,如果動態連結,則切換正在使用的 libssl(並更新它)會更容易。
替代方案包括提前終止 TLS,如在代理上並擷取未加密的數據包,或刪除 PFS 並使用私鑰解密。