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_supplicant
PKCS#12形式が使用されます。client_cert
構成項目が存在せず、構成項目に可能なURIスタイルの形式のうちの1つが含まれている場合、private_key
これらの形式はPKCS#11トークン(スマートカード)またはWindows証明書ストア(該当する場合)になります。
client_cert
に指定できなかったようですwpa_supplicant.conf
。