如何下载使用802.1X的无线AP的证书?

sle*_*ske 12 wireless-networking wpa ieee802.1x wpa-supplicant

据我了解,使用 WPA-Enterprise(即 WPA 加 802.1X)的无线接入点可以在连接设置期间向客户端发送公钥证书。客户端可以验证此证书以确保它没有连接到恶意 AP(类似于 HTTPS 中的证书验证)。

问题:

  • 我理解正确吗?
  • 如果是,有没有办法下载AP证书?理想情况下,我想要一个在 Linux 下工作的解决方案。

我想下载一个自签名证书,用它来验证后续的连接尝试。这比向 AP 的操作员索要文件要简单。

use*_*686 11

是的,最常见的 WPA-Enterprise 配置使用 PEAP 或 TTLS,两者都在 802.1X 上通过 EAP 实现 TLS。

通常,网络运营商已经为此目的在某处发布了证书。这不是用户应该要求的。

遗憾的是,即使在调试模式下,wpa_supplicant 也没有转储证书的选项。(如果我找到更好的方法,我会更新它。)不过,您仍然可以监视实际的 EAPOL 身份验证过程。首先,安装Wireshark。

断开连接时,手动启动接口并开始捕获:

$ sudo ip link set wlan0 up
$ wireshark -ki wlan0 &
Run Code Online (Sandbox Code Playgroud)

启动 wpa_supplicant,很快你就会看到 TLS 握手:

服务器将在 ServerHello 之后立即发送其证书。选择第一个这样的数据包,然后深入研究:

802.1X
??Extensible Authentication Protocol
  ??Secure Sockets Layer
    ??Handshake Protocol: Certificatte
      ??Certificates
Run Code Online (Sandbox Code Playgroud)

右键单击“Certificate ( stuff )”的第一个实例,然后选择“Export selected packet bytes”。Wireshark 会将其保存为二进制 DER 格式的文件。对所有其他证书重复此操作。最上面的一个(RADIUS 服务器的)有你可以配置的信息altsubject_match;最后一个(根 CA)应该作为ca_cert.

现在,你有几个*.crt*.der二进制DER格式的文件。将它们转换为 PEM“文本”格式:

openssl x509 -inform DER < mycert.der > mycert.pem
Run Code Online (Sandbox Code Playgroud)

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

请注意,在 Wireshark 中看到的最后一个证书也可能不是根 CA,而是仅/etc/ssl/certs目录中的一个根 CA颁发...如果是这种情况,请务必也进行设置domain_suffix_match- 否则,使用公共 CA 是不安全的(不幸的是,802.1X 不知道要验证的“主机名”,例如 HTTPS 的方式。)