如何查看AP提供的WPA2 PEAP证书?

如何查看AP提供的WPA2 PEAP证书?

我必须连接到 WPA2 Enterprise 网络,该网络仅在我不验证证书时才有效。我不想这样做,因为这样任何人都可以看到 MSCHAPv2 消息。

解决此问题的第一步是查看 AP 提供的证书,然后将 wpa_supplicant 配置为仅信任该证书。但我不知道如何获得证书。 wpa_cli“status”命令不显示它,也不在任何日志中。

我也很好奇使用了哪些 SSL/TLS 密码套件。是否可以手动连接,也许使用 openssl s_client?

答案1

您可以使用 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

右键单击“证书 (东西)”并选择“导出选定的数据包字节”。Wireshark 会将其保存为二进制 DER 格式的文件。对所有其他证书重复此操作。最上面的证书(RADIUS 服务器的)包含您可以在 中配置的信息altsubject_match;最后一个 ( root CA) 应作为 提供给 wpa_supplicant ca_cert

现在您有一些二进制 DER 格式的文件*.crt*.der将它们转换为 PEM“文本”格式:

openssl x509 -inform DER < mycert.der > mycert.pem

(如果您的 wpa_supplicant 使用 OpenSSL 作为 TLS 处理程序,您必须为其提供“根 CA”证书;给它服务器的证书将不起作用。

请注意,Wireshark 中看到的最后一个证书也可能不是根 CA,而只是由...发出您目录中的根 CA 之一/etc/ssl/certs...如果是这种情况,请务必进行设置altsubject_match- 否则使用公共 CA 会不安全,因为不幸的是 802.1X 不知道要验证什么“主机名”,例如 HTTPS会。)

答案2

很容易做到这一点本身。无需 Wireshark。

  1. 断开
  2. 跑步sudo wpa_cli
  3. 连接
  4. 找到最后一条看起来像<3>CTRL-EVENT-EAP-PEER-CERT depth=0 subject='/C=CA/ST=Ontario/L=Ottawa/O=University of Ottawa/CN=roam2.uottawa.ca' cert=[...]没有任何的巨线hash=
  5. 将十六进制格式的证书复制cert=到名为的新文件中eduroam.hex

如果您想对其进行转换以便于查看或与其他应用程序一起使用:

  1. 将其转换.derxxd -r -p eduroam.hex eduroam.der
  2. 将其转换.pemopenssl x509 -inform der -in eduroam.der -outform pem -out eduroam.pem
  3. 查看它openssl x509 -noout -text -in eduroam.pem

相关内容