如何找出用于 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 编码的。

阅读了inprivate_key配置项的描述后,似乎行为如下:wpa_supplicant.conf/usr/share/doc/wpa_supplicant/examples/wpa_supplicant.conf

  • 如果您的客户端证书和相应的私钥是PEM格式,您应该分别指定它们的文件名、usingclient_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

相关内容