Java keytool 不会解析我的 CA 证书的扩展

Java keytool won't parse Extensions of my CA certificate

我目前正在创建一个 Android 应用程序,它应该向服务器发送 POST 请求。不幸的是,服务器正在使用自签名证书。所以我必须创建一个 PKCS12 密钥库,其中将包含 CA 证书,并让我的应用程序使用该密钥库。

要创建这样的密钥库,我目前正在使用以下命令:

keytool -import -trustcacerts -alias my-alias -file cacert.pem
-keystore mykeystorefile -storetype PKCS12

不幸的是,密钥库不起作用。 (请求在 SSL 握手时失败。)

当我使用此命令检查密钥库时:

keytool -list -v -keystore mykeystorefile

我注意到此列表的末尾有一行奇怪的行。

#8: ObjectId: 2.5.29.18 Criticality=false
Unparseable IssuerAlternativeName extension due to
java.io.IOException: No data available in passed DER encoded value.

0000: 30 00                                              0.



*******************************************
*******************************************

Keytool 无法解析作为 CA 证书一部分的扩展。

我对 LetsEncrypt 的 CA 证书进行了同样的尝试,效果很好。

我很高兴收到有关如何处理和解决此问题的任何指示。

谢谢。

编辑: 我目前使用的 Keytool 是 java-8-openjdk 的一部分。

Edit2: 因此在检查 ca 证书后,Issuer Alternative Name extension 没有任何价值。想知道是否有办法跳过这些扩展?

无法跳过证书上的任何内容。

如果 Issuer Alternative Name 为空,则表明生成该证书的人生成错误。如果是自签名证书,则 Issuer Alternative Name 和 Subject Alternative Name 是相同的值。如果它由任何 CA 签名,则 CA 的主题备用名称将放在最终用户的颁发者备用名称中。

您可能需要向他们询问正确的 CA 证书。