LinuxコンピュータをWPA2 Enterprise Wi-Fi(私が管理している)に接続したいです。 OpenSSLを使用して生成した証明書はAndroidデバイスとiOSデバイスの両方で機能しますが、wpa_supplicantに必要な証明書の種類が何であるかはわかりません。
デフォルトでは ca.pem があり、特定のデバイスに対して次のファイルが生成されます。
- デモファイル
- デモ.csr
- デモキー
- デモ.p12
のように見えるwpa_supplicantは、公開証明書と個人証明書を含むファイルを使用したり、2つのファイルを使用したりできます。最初は2つのファイルを使用します。
- デモキー
- .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)
Debian ドキュメント私たちに教えてください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"
}