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


11

据我了解,使用WPA-Enterprise的无线访问点(即WPA加802.1X)可以在连接建立过程中将公共密钥证书发送给客户端。客户端可以验证此证书以确保它未连接到恶意AP(类似于HTTPS中的证书验证)。

问题:

  • 我理解正确吗?
  • 如果是,是否可以下载AP证书?理想情况下,我想要一个可以在Linux下运行的解决方案。

我想下载一个自签名证书,以将其用于验证后续的连接尝试。这比向AP的运营商索要文件要简单。


我不知道专门用于下载和保存证书的工具,但是它是很明显的,因此您可以使用Wireshark或tcpdump捕获它。我似乎还记得在debug / verbose wpa_supplicant日志中看到过证书数据,因此您也可以查看一下。这些方法中的任何一种都可能需要一些数据处理才能将其从pcap / log格式获取到正确的X.509 .cer文件。
2014年

Answers:


11

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

通常,正是出于这一目的,证书已由网络运营商在某个地方发布。这不是用户应该要求的。

可悲的是,即使在调试模式下,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

右键单击“证书(stuff)” 的第一个实例,然后选择“导出选定的数据包字节”。Wireshark将其以二进制DER格式保存为文件。对所有其他证书重复此操作。最顶层的(RADIUS服务器)具有可以在其中配置的信息altsubject_match;最后一个(根CA)应以形式提供给wpa_supplicant ca_cert

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

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

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

请注意,它也有可能是在看到Wireshark的最后一个证书将不会是一个根CA,但只有通过发行在您的根CA的一个/etc/ssl/certs目录...如果是这样的话,一定要设置domain_suffix_match,以及-否则,使用公共CA将是不安全的(不幸的是,802.1X不知道要使用哪种“主机名”进行验证,例如HTTPS。)


感谢您的详细撰写。听起来有点复杂;但是,如果那是最简单的方法,我会尝试。
sleske 2014年

是的,它确实有效,我下载了EAP echange,tpcpdump但效果非常不错。有趣的是,我的流中只有一个服务器Hello,Certificate,...条目
mTorres,

在我的示例中,TLS消息由于太大(特别是如果它发送了一堆大RSA证书)而分散在多个EAP数据包中。但是,它始终始终只是一个TLS ServerHello。
user1686

如果我说的不对,请多多包涵。此类活动的需要是下载证书,并将其应用到不允许在首次连接时下载和接受证书的设备上。
毛罗
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.