[Mac] 使用 Wireshark 檢視客戶端支援的 TLS cipher suite
最近在看專案 TLS cipher 的問題…
如果是用 curl 的話,它提供了 SSL ciphers 這頁裡列出的 cipher,
用 –ciphers 就可以指定要使用的 cipher,
像是想要指定 ECDHE-RSA-AES128-GCM-SHA256 和 ECDHE-RSA-AES256-SHA384 的話,
就用 ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384 (用 : 隔開):
curl -L -v --ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384 https://www.whitehouse.gov
用 Wireshark 觀察一下 TLS handshake 的過程,
先用搜尋條件 tls (或是再搭配上其他 ip.addr 之類的條件),
找到有興趣的 TLS 連線其中一個封包 (packet) 後,可以按右鍵 > Follow > TCP Stream:
這樣就可以把整個 TCP 連線都列出來~
客戶端一開始會送出 TLS 的 Client Hello 封包,
裡面的 Cipher Suites 欄位就會列出客戶端希望使用的 cipher 列表。
正如剛剛在 curl 中指定的參數,下面也看到了同樣的兩個 cipher
(另外多出來的 TLS_EMPTY_RENEGOTIATION_INFO_SCSV
代表的似乎是「客戶端支援 Secure Renegotiation」):
這樣子,用 Wireshark (或 tcpdump) 就可以確認送出去的 cipher suite 囉~
參考資料:
Transport Layer Security (TLS) Renegotiation Indication Extension
SSL Legacy Renegotiation vs Secure Renegotiation Explained using Wireshark DevCentral