由于我升级到 Debian 10,我无法连接到eduroam。事实证明,我的雇主决定使用使用散列函数EAP-TLS
签名的客户端证书。MD5
从我在网上可以找到的内容来看,MD5
签名证书在 OpenSSL 1.1 版中被禁用,并且wpa_supplicant日志似乎证实了这一点:
wpa_supplicant[718]: EAP: EAP entering state RECEIVED
wpa_supplicant[718]: EAP: Received EAP-Request id=3 method=13 vendor=0 vendorMethod=0
wpa_supplicant[718]: EAP: EAP entering state GET_METHOD
wpa_supplicant[718]: wlp4s0: CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=13
wpa_supplicant[718]: EAP: Status notification: accept proposed method (param=TLS)
wpa_supplicant[718]: EAP: Initialize selected EAP method: vendor 0 method 13 (TLS)
wpa_supplicant[718]: TLS: using phase1 config options
wpa_supplicant[718]: TLS: Trusted root certificate(s) loaded
wpa_supplicant[718]: OpenSSL: tls_connection_client_cert - SSL_use_certificate_file failed error:140C618E:SSL routines:SSL_use_certificate:ca md too weak
wpa_supplicant[718]: TLS: Failed to set TLS connection parameters
wpa_supplicant[718]: ENGINE: engine deinit
wpa_supplicant[718]: EAP-TLS: Failed to initialize SSL.
wpa_supplicant[718]: wlp4s0: EAP: Failed to initialize EAP method: vendor 0 method 13 (TLS)
OpenSSL 1.1 中有没有办法启用MD5
,最好只用于wpa_supplicant?
为了后代,我最终会阅读 OpenSSL 和 wpa_supplicant 的源代码并找到(部分)解决方案。
问题是由 OpenSSL 的默认安全回调引起的,它(合理地)在每个级别禁用 MD5 的使用:证书签名和隧道密码套件。我想禁用对客户端证书的检查,因为这不会给我带来任何安全风险(应该关注另一个端点)。但是,如果不替换安全回调就无法做到这一点,这不是一个干净的解决方案。
因此,在wpa_supplicant中使用弱客户端证书的唯一方法是将安全级别降低到 0。虽然大多数 Google 搜索“ca md too weak”最终建议修改默认OpenSSL配置以包括:
其中
<section_default_conf>
,<section_ssl_conf>
和<section_system_default>
是任意名称,这不适用于wpa_supplicant,它会覆盖默认配置。为了降低wpa_supplicant的安全级别,我必须向他提供一个配置文件 (
/etc/wpa_supplicant/wpa_supplicant.conf
),其中包含:仅当使用接口参数 ( ) 调用wpa_supplicant时才使用此设置
-i <interface>
。作为大多数用户,我不直接使用 wpa_supplicant,而是使用 NetworkManager 来完成。在 Debian 上,两者作为服务运行并通过 DBus(或 Unix 套接字)进行通信。由于NetworkManager无法将
openssl_ciphers
参数传递给wpa_supplicant,因此必须通过修改wpa_supplicant.service
(throughsystemctl edit --full wpa_supplicant.service
) 对所有 WiFi 连接执行此操作,以便 exec 指令来自:阅读:
wlan0
(唯一的)WiFi 接口的名称在哪里。