据我了解,使用WPA-Enterprise的无线访问点(即WPA加802.1X)可以在连接建立过程中将公共密钥证书发送给客户端。客户端可以验证此证书以确保它未连接到恶意AP(类似于HTTPS中的证书验证)。
问题:
- 我理解正确吗?
- 如果是,是否可以下载AP证书?理想情况下,我想要一个可以在Linux下运行的解决方案。
我想下载一个自签名证书,以将其用于验证后续的连接尝试。这比向AP的运营商索要文件要简单。
据我了解,使用WPA-Enterprise的无线访问点(即WPA加802.1X)可以在连接建立过程中将公共密钥证书发送给客户端。客户端可以验证此证书以确保它未连接到恶意AP(类似于HTTPS中的证书验证)。
问题:
我想下载一个自签名证书,以将其用于验证后续的连接尝试。这比向AP的运营商索要文件要简单。
Answers:
是的,最常见的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。)
tpcpdump
但效果非常不错。有趣的是,我的流中只有一个服务器Hello,Certificate,...条目