如何检查用户证书文件格式以便将它们安装在 Android 手机上

问题描述 投票:0回答:0

我正在为使用 EAP-TLS 的多个 Android 终端设备身份验证设置一个 freeradius 实例。

我首先使用嵌入式 linux 设备对其进行测试,并且设置有效。

第一步是让它与一个安卓设备一起工作。

所以我使用 freeradius cert Makefile 生成我的证书和密钥(用于客户端、服务器和 CA)。 摘录:

######################################################################
#
#  Create a new client certificate, signed by the the above server
#  certificate.
#
######################################################################
client.csr client.key: client.cnf
    $(OPENSSL) req -new  -out client.csr -keyout client.key -config ./client.cnf
    chmod g+r client.key

client.crt: ca.key ca.pem client.csr
    $(OPENSSL) ca -batch -keyfile ca.key -cert ca.pem -in client.csr -key $(PASSWORD_CA) -out client.crt -extensions xpclient_ext -extfile xpextensions -config ./client.cnf

client.p12: client.crt
    $(OPENSSL) pkcs12 -legacy -export -in client.crt -inkey client.key -out client.p12  -passin pass:$(PASSWORD_CLIENT) -passout pass:$(PASSWORD_CLIENT)
    chmod g+r client.p12
    cp client.p12 $(USER_NAME).p12

client.pem: client.p12
    $(OPENSSL) pkcs12 -legacy -in client.p12 -out client.pem -passin pass:$(PASSWORD_CLIENT) -passout pass:$(PASSWORD_CLIENT)
    chmod g+r client.pem
    cp client.pem $(USER_NAME).pem

.PHONY: client.vrfy
client.vrfy: ca.pem client.pem
    c_rehash .
    $(OPENSSL) verify -CApath . client.pem

我已将以下文件上传到我的 Android 设备:

  • client.p12
  • 客户端.pem
  • client.crt

生成证书的 openssl 版本是:

OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)

我在安装用户证书文件时遇到多个问题:

  • 在安装 p12 文件时,我首先从 logcat 收到此警告:

W CredentialHelper: java.io.IOException: 异常解密数据 - java.security.NoSuchAlgorithmException: 1.2.840.113549.1.5.12 SecretKeyFactory 不可用

所以我问 openssl 用户邮件列表,他们回答我必须在 openssl pkcs12 命令中使用“-legacy”选项。 我修复它,并重新生成密钥。

  • 然后我想安装我新的“遗留”p12 文件,我从 logcat 得到这个:

wpa_supplicant:TLS - SSL 错误:错误:0900006e:PEM 例程:OPENSSL_internal:NO_START_LINE

因为它来自 PEM Android 模块,我想尝试安装我的 client.pem 文件,但我收到此错误:

W CredentialHelper: parseCert(): java.security.cert.CertificateException: com.android.org.conscrypt.OpenSSLX509CertificateFactory$ParsingException: com.android.org.conscrypt.OpenSSLX509CertificateFactory$ParsingException: java.lang.RuntimeException:错误:0c0000be:ASN.1 编码 例程:OPENSSL_internal:WRONG_TAG

我认为它来自 crt 文件中的格式错误,但我怎样才能获得更多详细信息?

android openssl pem pkcs#12
© www.soinside.com 2019 - 2024. All rights reserved.