使用二级证书设置与 WPA2 Enterprise (PEAP/MSCHAPv2) 的连接

使用二级证书设置与 WPA2 Enterprise (PEAP/MSCHAPv2) 的连接

很长一段时间以来,我一直能够使用 Debian 7 中配置的 NetworkManager + wpa_supplicant 连接到工作中的安全无线网络(即 WPA2 Enterprise,具有 PE​​AP + MSCHAPv2 身份验证)。

最近,我想通过将服务器的证书合并到我的网络管理器连接设置中来提高连接的安全性。我从网络管理员那里收到了两个 PEM 密钥:

  • radius1.pem -- RADIUS 证书
  • globalsign_intermediary.pem -- 中介证书

RADIUS 证书的真实性取决于中介证书;中间证书取决于 GlobalSign 的最终根 CA。

这是我的目标:每当我连接到 wifi 网络时,我想让我的笔记本电脑检查 wifi 接入点的真实性。如何将这些证书放入连接设置(/etc/NetworkManager/system-connections/THE-AP-NAME文件)中以便我可以实现此目标?具体来说:应在何处列出哪个文件(例如,哪个配置文件),以及需要哪些额外步骤来验证服务器证书?我在这里问这个问题是因为我在其他地方发现的都是一步证书检查,其中证书可能依赖于一个完善的根 CA,而不是像我的情况那样依赖于中间 CA。

目前,这是我的连接设置文件的内容(XXXX 和 YYYY 表示模糊信息):

[ipv6]
method=ignore

[connection]
id=XXXXXXXXX
uuid=XXXXXXXXX
type=802-11-wireless
timestamp=1436377448

[802-11-wireless-security]
key-mgmt=wpa-eap

[802-11-wireless]
ssid=XXXXXXXXX
mode=infrastructure
seen-bssids=XXXXXXXXX
security=802-11-wireless-security

[802-1x]
eap=peap;
identity=XXXXXXXXX
password=YYYYYYYYY
ca-cert=/etc/NetworkManager/certs/work/globalsign_intermediary.pem
phase2-auth=mschapv2

[ipv4]
method=auto

如您所见,我正在使用中间证书文件。但这是不对的。仅使用 RADIUS 证书文件也是不对的。无论哪种情况,我都会收到以下错误syslog

Jul  8 12:02:37 wirawan1 wpa_supplicant[3638]: wlan0: CTRL-EVENT-EAP-STARTED EAP authentication started
Jul  8 12:02:37 wirawan1 kernel: [3880972.051159] wlan0: Limiting TX power to 20 (20 - 0) dBm as advertised by xx:xx:xx:xx:xx
Jul  8 12:02:37 wirawan1 wpa_supplicant[3638]: wlan0: CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=25
Jul  8 12:02:37 wirawan1 wpa_supplicant[3638]: OpenSSL: tls_connection_ca_cert - Failed to load root certificates error:00000000:lib(0):func(0):reason(0)
Jul  8 12:02:37 wirawan1 wpa_supplicant[3638]: wlan0: CTRL-EVENT-EAP-METHOD EAP vendor 0 method 25 (PEAP) selected
Jul  8 12:02:37 wirawan1 wpa_supplicant[3638]: TLS: Certificate verification failed, error 20 (unable to get local issuer certificate) depth 1 for '/C=BE/O=GlobalSign nv-sa/CN=GlobalSign Organization Validation CA - G2'
Jul  8 12:02:37 wirawan1 wpa_supplicant[3638]: wlan0: CTRL-EVENT-EAP-TLS-CERT-ERROR reason=1 depth=1 subject='/C=BE/O=GlobalSign nv-sa/CN=GlobalSign Organization Validation CA - G2' err='unable to get local issuer certificate'
Jul  8 12:02:37 wirawan1 wpa_supplicant[3638]: SSL: SSL3 alert: write (local SSL3 detected an error):fatal:unknown CA
Jul  8 12:02:37 wirawan1 wpa_supplicant[3638]: OpenSSL: openssl_handshake - SSL_connect error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Jul  8 12:02:38 wirawan1 wpa_supplicant[3638]: wlan0: CTRL-EVENT-EAP-FAILURE EAP authentication failed
Jul  8 12:02:40 wirawan1 wpa_supplicant[3638]: wlan0: Authentication with xx:xx:xx:xx:xx timed out.

显然信任链无法建立。

硬件是(lspci):

03:00.0 Network controller: Intel Corporation PRO/Wireless 5100 AGN [Shiloh] Network Connection

它使用 iwlwifi+iwldvm 驱动程序。内核版本3.12.9-1~bpo70+1 (2014-02-07),来自 debian backport 包linux-image-3.12-0.bpo.1-amd64

我对 Linux 并不陌生,但真的不知道如何在 Linux 中处理 x509 和/或 SSL/TLS 安全性,因此请按照分步说明进行回答。谷歌搜索寻找这个问题的答案让我感到沮丧。 WPA 请求者文档非常简洁地讨论了与 WPA2 Enterprise 结合使用的证书。 NetworkManager 的文档甚至更差。

答案1

我最终与该组织的 IT 人员进行了交谈并轻松解决了该问题。我的错误由几个失误组成:

  • 包括错误的证书
  • 不包括正确的根证书
  • 未按正确的顺序订购证书

“CA 证书”文件需要是包含证书列表的单个文本文件(PEM 格式),按信任顺序链接(最不可信的在前,最受信任的最后)。不需要(也不应该)包含 RADIUS 证书。 RADIUS 证书的有效寿命也是最短的。为了使这种方法发挥作用,我们必须包含上游证书直到根证书。就我而言,信任顺序如下(从最不信任到最信任):

RADIUS cert -> intermediary cert -> root cert

警告:您的情况可能非常不同。 IT人员告诉我,我的根证书是“GlobalSign Root R1”,其序列号如下:

04:00:00:00:00:01:15:4b:5a:c3:94

如果没有他的帮助,我将无法找到这个。我从 GlobalSign 网站下载了根证书(见下文),然后将二进制证书转换为 PEM 格式:

$ openssl x509 -inform der -in Root-R1.crt -out Root-R1.pem

然后将证书链接为 root

# cat globalsign_intermediary.pem Root-R1.pem > /etc/NetworkManager/certs/work/all-certs.pem

并在 NetworkManager 的连接设置中包含完整路径all-certs.pem(通过 GUI 或编辑我在问题中列出的文本文件)。现在,重新启动 NetworkManager ——在我的 Debian 框中,这意味着发出:

# service networkmanager restart

重新启动后,我能够验证 AP 的真实性,如系统日志中所示:

Jul  8 16:03:32 wirawan1 wpa_supplicant[3638]: wlan0: CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=25
Jul  8 16:03:32 wirawan1 wpa_supplicant[3638]: wlan0: CTRL-EVENT-EAP-METHOD EAP vendor 0 method 25 (PEAP) selected
Jul  8 16:03:32 wirawan1 wpa_supplicant[3638]: wlan0: CTRL-EVENT-EAP-PEER-CERT depth=2 subject='/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA'
Jul  8 16:03:32 wirawan1 wpa_supplicant[3638]: wlan0: CTRL-EVENT-EAP-PEER-CERT depth=1 subject='/C=BE/O=GlobalSign nv-sa/CN=GlobalSign Organization Validation CA - G2'
Jul  8 16:03:32 wirawan1 wpa_supplicant[3638]: wlan0: CTRL-EVENT-EAP-PEER-CERT depth=0 subject='/C=US/XXXXXX (details removed)'
Jul  8 16:03:33 wirawan1 wpa_supplicant[3638]: EAP-MSCHAPV2: Authentication succeeded
Jul  8 16:03:33 wirawan1 wpa_supplicant[3638]: EAP-TLV: TLV Result - Success - EAP-TLV/Phase2 Completed
Jul  8 16:03:33 wirawan1 wpa_supplicant[3638]: wlan0: CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully

更多血腥细节

对于感兴趣的人,中级证书具有以下主题:

subject= /C=BE/O=GlobalSign nv-sa/CN=GlobalSign Organization Validation CA - G2

此“组织”CA 应使用 R1 密钥,如下所示:

https://support.globalsign.com/customer/portal/articles/1426602-globalsign-root-certificates

相关内容