인증서를 확인하지 않는 경우에만 작동하는 WPA2 기업 네트워크에 연결해야 합니다. 누구든지 MSCHAPv2 메시지를 볼 수 있기 때문에 이 작업을 수행하고 싶지 않습니다.
이 문제를 해결하기 위한 첫 번째 단계는 AP가 제공한 인증서를 보고 해당 인증서만 신뢰하도록 wpa_supplicant를 구성하는 것입니다. 그런데 자격증을 취득하는 방법을 모르겠습니다. wpa_cli "status" 명령은 이를 표시하지 않으며 어떤 로그에도 없습니다.
또한 어떤 SSL/TLS 암호화 제품군이 사용되는지 궁금합니다. openssl s_client를 사용하여 수동으로 연결할 수 있습니까?
답변1
@grawity가 하는 것처럼 Wireshark를 사용하여 핸드셰이크를 덤프한 다음 openssl을 사용하여 바이너리 데이터를 PEM으로 변환할 수 있습니다.유제수퍼유저의 경우:
불행하게도 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
인증서(물건)"를 선택하고 "선택한 패킷 바이트 내보내기"를 선택합니다. Wireshark는 이를 바이너리 DER 형식의 파일로 저장합니다. 다른 모든 인증서에 대해 이 작업을 반복합니다. 최상위 인증서(RADIUS 서버의 인증서)에는 정보가 포함됩니다
altsubject_match
. 마지막(루트 CA) wpa_supplicant 에 제공되어야 합니다ca_cert
.이제 바이너리 DER 형식의 일부 파일이 생겼습니다
*.crt
.*.der
PEM "텍스트" 형식으로 변환합니다.openssl x509 -inform DER < mycert.der > mycert.pem
(wpa_supplicant가 OpenSSL을 TLS 핸들러로 사용하는 경우~ 해야 하다"루트 CA" 인증서를 제공하십시오. 서버 인증서를 제공하면 작동하지 않습니다.
Wireshark에 표시된 마지막 인증서가 루트 CA가 아닐 수도 있습니다.발행자디렉터리에 있는 루트 CA 중 하나
/etc/ssl/certs
... 이 경우 설정해야 합니다altsubject_match
. 그렇지 않으면 공용 CA를 사용하는 것이 안전하지 않습니다. 불행하게도 802.1X는 HTTPS처럼 확인할 "호스트 이름"이 무엇인지 모르기 때문입니다. 예를 들어 그렇습니다. )
답변2
이렇게 하는 것은 쉽습니다WPA 신청자그 자체. Wireshark가 필요하지 않습니다.
- 연결을 끊다
- 달리기
sudo wpa_cli
- 연결하다
<3>CTRL-EVENT-EAP-PEER-CERT depth=0 subject='/C=CA/ST=Ontario/L=Ottawa/O=University of Ottawa/CN=roam2.uottawa.ca' cert=[...]
아무것도 없는 것처럼 보이는 마지막 거대한 선을 찾으세요hash=
.- 16진수 형식의 인증서를
cert=
다음 이름의 새 파일에 복사합니다.eduroam.hex
더 쉽게 보거나 다른 응용 프로그램과 함께 사용할 수 있도록 변환하려면 다음을 수행하세요.
- 그것을
.der
로 변환하다xxd -r -p eduroam.hex eduroam.der
- 그것을
.pem
로 변환하다openssl x509 -inform der -in eduroam.der -outform pem -out eduroam.pem
- 보기
openssl x509 -noout -text -in eduroam.pem