Openssl
如何發現用於 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:wrong tag”時,我只能找到證書文件以某種方式損壞的建議,並且我需要檢查是否有前導或尾隨空格。該文件似乎很好,除了當我執行時
openssl rsa -check -noout -in /etc/ssl/private/demo.key
,它會提示輸入密碼,當我輸入密碼時,它會列印:“RSA key ok。”我還仔細檢查了儲存在其中的密碼
private_key_passwd
,wpa_supplicant.conf
它看起來是正確的。我如何找出問題所在?
openssl rsa
預設情況下需要 PEM 編碼的 RSA 密鑰,但錯誤消息表明wpa_supplicant
假設密鑰文件是 PKCS#12 編碼的。在閱讀了 in 的配置項的描述後,
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
配置項不存在並且private_key
配置項包含幾種可能的 URI 樣式格式之一,則這些將被解釋為對 PKCS#11 令牌(智能卡)或儲存在 Windows 證書儲存中的證書的引用(如果適用)。您似乎未能在 中
client_cert
指定wpa_supplicant.conf
。