오랫동안 저는 Debian 7에 구성된 NetworkManager + wpa_supplicant를 사용하여 직장에서 보안 무선 네트워크(예: PEAP + MSCHAPv2 인증을 사용하는 WPA2 Enterprise)에 연결할 수 있었습니다.
최근에는 서버 인증서를 Network Manager 연결 설정에 통합하여 연결 보안을 강화하고 싶었습니다. 네트워크 관리자로부터 두 개의 PEM 키를 받았습니다.
- radius1.pem -- RADIUS 인증서
- globalsign_intermediary.pem -- 중개 인증서
RADIUS 인증서의 신뢰성은 중간 인증서에 따라 다릅니다. 중간 인증서는 GlobalSign의 최종 루트 CA에 따라 다릅니다.
이게 내 목표야: Wi-Fi 네트워크에 연결할 때마다 노트북에서 Wi-Fi 액세스 포인트의 신뢰성을 확인하고 싶습니다. /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 백포트 패키지 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
그런 다음 인증서를 루트로 연결하십시오.
# 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