EAP-TLSで使用される証明書にどのような問題があるのか​​、どうすればわかりますか?

EAP-TLSで使用される証明書にどのような問題があるのか​​、どうすればわかりますか?

Raspberry PiをEAP-TLS Wi-Fiアクセスポイントに接続しようとしています。接続に失敗しました:

wlan0: CTRL-EVENT-EAP-STARTED EAP authentication started
wlan0: CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=13
OpenSSL: tls_read_pkcs12 - Failed to use PKCS#12 file error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
OpenSSL: pending error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error
OpenSSL: tls_connection_private_key - Failed to load private key error:00000000:lib(0):func(0):reason(0)
TLS: Failed to load private key '/etc/ssl/private/demo.key'
TLS: Failed to set TLS connection parameters
EAP-TLS: Failed to initialize SSL.

「ASN1_CHECK_TLEN:無効なラベル」を検索すると、証明書ファイルが何らかの方法で破損し、先行または末尾の空白がないことを確認する必要があるという提案のみを見つけることができます。ファイルを実行するとopenssl rsa -check -noout -in /etc/ssl/private/demo.keyパスワードを入力するように求められ、パスワードを入力すると「RSA key ok」が印刷されることを除いてファイルは問題ないようです。

private_key_passwdに保存されているパスワードも再確認しましたが、wpa_supplicant.conf正しいようです。

何が問題なのか、どうすればわかりますか?

答え1

openssl rsaデフォルトではPEMでエンコードされたRSAキーが必要ですが、エラーメッセージはキーファイルwpa_supplicantがPKCS#12でエンコードされていると仮定していることを示します。

構成項目の説明を読んだ後のprivate_key動作は次のとおりです。wpa_supplicant.conf/usr/share/doc/wpa_supplicant/examples/wpa_supplicant.conf

  • クライアント証明書とその秘密鍵がPEM形式の場合は、それぞれのファイル名、使用法、およびclient_cert構成private_keyオプションを指定する必要があります。

  • クライアント証明書と秘密鍵が単一のPKCS#12ファイルにある場合(サフィックスは通常.pfxまたは.p12であり、直接読み取れないopenssl rsa)、構成エントリのみを使用してファイル名を指定する必要がprivate_keyあり、すべてのエントリの設定client_cert。つまり、client_cert指定されておらずprivate_key通常のファイル名の場合は、wpa_supplicantPKCS#12形式が使用されます。

  • client_cert構成項目が存在せず、構成項目に可能なURIスタイルの形式のうちの1つが含まれている場合、private_keyこれらの形式はPKCS#11トークン(スマートカード)またはWindows証明書ストア(該当する場合)になります。

client_certに指定できなかったようですwpa_supplicant.conf

関連情報