如何查看 AP 提供的 WPA2 PEAP 證書?
我必須連接到 WPA2 Enterprise 網路,該網路僅在我不驗證證書時才有效。我不希望這樣做,因為這樣任何人都可以看到 MSCHAPv2 消息。
解決此問題的第一步是查看 AP 提供的證書,然後將 wpa_supplicant 配置為僅信任該證書。但我不知道如何獲得證書。wpa_cli “status” 命令沒有顯示它並且它不在任何日誌中。
我也很好奇使用了哪些 SSL/TLS 密碼套件。是否可以手動連接,也許使用 openssl s_client?
您可以使用 Wireshark 轉儲握手,然後使用 openssl 將二進制數據轉換為 PEM,正如@grawity在超級使用者的類似問題中所建議的那樣:
遺憾的是,即使在調試模式下,wpa_supplicant 也沒有轉儲證書的選項。(如果我找到更好的方法,我會更新它。)不過,您仍然可以監控實際的 EAPOL 身份驗證過程。首先,安裝 Wireshark。
斷開連接時,手動啟動介面並在其上開始擷取:
$ sudo ip link set wlan0 up $ wireshark -ki wlan0 &
啟動 wpa_supplicant,很快你就會看到 TLS 握手:
伺服器將在 ServerHello 之後立即發送其證書。選擇第一個這樣的數據包,然後深入研究:
802.1X └─Extensible Authentication Protocol └─Secure Sockets Layer └─Handshake Protocol: Certificatte └─Certificates
右鍵點擊“Certificate ( stuff )”的第一個實例並選擇“Export selected packet bytes”。Wireshark 會將其保存為二進制 DER 格式的文件。對所有其他證書重複此操作。最上面的一個(RADIUS 伺服器)包含您可以在其中配置的資訊
altsubject_match
;最後一個(根 CA)應作為ca_cert
.現在你有一些二進制 DER 格式
*.crt
的*.der
文件。將它們轉換為 PEM“文本”格式:openssl x509 -inform DER < mycert.der > mycert.pem
(如果你的 wpa_supplicant 使用 OpenSSL 作為 TLS 處理程序,你必須給它“根 CA”證書;給它伺服器的證書是行不通的。
請注意,在 Wireshark 中看到的最後一個證書也可能不是根 CA,而是僅由您
/etc/ssl/certs
目錄中的一個根 CA 頒發…如果是這種情況,請確保也設置altsubject_match
- 使用 public否則 CA 將是不安全的,因為不幸的是 802.1X 不知道要驗證的“主機名”,例如 HTTPS 的方式。)