EAP-TLS Wi-Fi 인증서를 생성하는 방법은 무엇입니까?

EAP-TLS Wi-Fi 인증서를 생성하는 방법은 무엇입니까?

Linux 컴퓨터를 WPA2 Enterprise Wi-Fi(내가 관리함)에 연결하고 싶습니다. OpenSSL을 사용하여 생성한 인증서는 Android 및 iOS 장치 모두에서 작동하지만 wpa_supplicant에 필요한 인증서 유형이 무엇인지 알 수 없습니다.

기본적으로 ca.pem이 있고 특정 장치에 대해 다음 파일이 생성됩니다.

  • 데모 파일
  • 데모.csr
  • 데모 키
  • 데모.p12

처럼 보인다wpa_supplicant는 공용 및 개인 인증서가 포함된 파일을 사용하거나 두 개의 파일을 사용할 수 있습니다. 처음에는 두 개의 파일을 사용합니다.

  • 데모 키
  • .demo.pem을 실행하여 생성된 openssl pkcs12 -in demo.p12 -out demo.pem -clcerts.

wpa_supplicant.conf구성은 다음과 같습니다.

network={
    ssid="HelloWorld"
    key_mgmt=WPA-EAP
    pairwise=CCMP
    group=CCMP
    eap=TLS
    identity="[email protected]"
    ca_cert="/etc/ssl/private/ca.pem"
    client_cert="/etc/ssl/private/demo.pem"
    private_key="/etc/ssl/private/demo.key"
    private_key_passwd=...
}

다음 오류로 인해 인증이 실패합니다.

OpenSSL: tls_read_pkcs12 - PKCS#12 파일을 사용할 수 없습니다. 오류: 0D0680A8: asn1 인코딩 루틴: ASN1_CHECK_TLEN: 잘못된 레이블

제거 client_cert하고 private_key.pem 파일을 가리키면 오류가 동일하게 유지됩니다.

.p12를 가리키면 오류는 다음과 같습니다.

OpenSSL: tls_connection_private_key - 개인 키 오류를 로드할 수 없습니다: 00000000:lib(0):func(0):reason(0)

데비안 문서우리에게 말해주세요PEM은 .pfx에서 생성되어야 합니다. 내가 이것을 할 때 :

openssl pkcs12 -export -out demo.pfx -inkey demo.key -in demo.crt -certfile ca.crt
openssl pkcs12 -in demo.pfx -out demo.pem -clcerts

원래 오류가 다시 발생했습니다.

OpenSSL: tls_read_pkcs12 - PKCS#12 파일을 사용할 수 없습니다. 오류: 0D0680A8: asn1 인코딩 루틴: ASN1_CHECK_TLEN: 잘못된 레이블

wpa_supplicant에 대한 인증서를 정확히 어떻게 생성합니까?

답변1

귀하의 wpa_supplicant.conf파일 에는eap=TTLS

좋다:

network={
ssid="HelloWorld"
key_mgmt=WPA-EAP
pairwise=CCMP
group=CCMP
eap=TTLS
identity="[email protected]"
ca_cert="/etc/ssl/private/ca.pem"
client_cert="/etc/ssl/private/demo.pem"
private_key="/etc/ssl/private/demo.key"
private_key_passwd=...
}  

또한 구성에 따라 anonymous_identity및 가 필요할 수도 있습니다 phase2.

EAP-TTLS-MSChapv2 가정:

network={
ssid="HelloWorld"
key_mgmt=WPA-EAP
pairwise=CCMP
group=CCMP
eap=TTLS
identity="[email protected]"
ca_cert="/etc/ssl/private/ca.pem"
client_cert="/etc/ssl/private/demo.pem"
private_key="/etc/ssl/private/demo.key"
private_key_passwd=...
phase2="auth=MSCHAPV2"
}  

관련 정보