OpenWRT下使用WPA Supplicant连接AT&T时出现OpenSSL弱CA哈希算法错误及EAP认证失败的解决方法
OpenWRT下使用WPA Supplicant连接AT&T时出现OpenSSL弱CA哈希算法错误及EAP认证失败的解决方法
看起来你遇到的问题核心是OpenSSL默认拒绝了AT&T使用的弱哈希算法签名的CA证书,直接导致EAP-TLS初始化失败,进而触发了一连串的认证错误。我来给你一步步解决这个问题:
调整WPA Supplicant的OpenSSL安全级别
新版本的OpenSSL默认禁用了MD5、SHA1这类弱哈希算法,而AT&T的CA证书恰好使用了这类算法。我们需要在WPA Supplicant的配置里添加参数,降低OpenSSL的安全检查级别:- 如果你用的是OpenWRT默认的
/etc/config/wireless配置文件,找到对应AT&T网络的config wifi-iface块,添加一行:option eap_args 'openssl_ciphers=DEFAULT:@SECLEVEL=0' - 如果你是使用独立的
wpa_supplicant.conf文件,在对应的network配置块里添加:
完整的network块示例大概是这样:eap_tls_cipher="DEFAULT:@SECLEVEL=0"network={ ssid="AT&T-XXXX" key_mgmt=WPA-EAP eap=TLS identity="你的认证身份" ca_cert="/etc/certs/att-ca.pem" client_cert="/etc/certs/your-client.pem" private_key="/etc/certs/your-private.key" private_key_passwd="你的私钥密码" eap_tls_cipher="DEFAULT:@SECLEVEL=0" }
- 如果你用的是OpenWRT默认的
验证CA证书的哈希算法(可选)
你可以先确认下AT&T的CA证书是不是真的用了弱算法,执行这条命令:openssl x509 -in /path/to/your/ca.pem -text | grep Signature如果输出里出现MD5或者SHA1,就坐实了是弱算法的问题,上面的配置调整肯定管用。
重启无线网络服务
改完配置后,在OpenWRT终端执行命令让配置生效:wifi reload或者直接重启WPA Supplicant服务:
/etc/init.d/wpa_supplicant restart之后再查看日志,应该就不会再出现“ca md too weak”的错误了,EAP认证也能正常进行。
注意:降低OpenSSL的安全级别(@SECLEVEL=0)会放宽一些安全限制,虽然在运营商网络环境下风险可控,但如果是自己搭建的网络,建议尽量更换强哈希算法的证书。
备注:内容来源于stack exchange,提问作者Evan Carroll
相关产品推荐
相关产品推荐

