Openssl

如何發現用於 EAP-TLS 的證書有什麼問題?

  • April 20, 2020

我正在嘗試將 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_passwdwpa_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_certprivate_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

引用自:https://unix.stackexchange.com/questions/581181