微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何解决keytool错误:java.lang.Exception:输入的不是X.509证书

如何解决如何解决keytool错误:java.lang.Exception:输入的不是X.509证书

我从安全网址获取公共证书,如下所示:

openssl s_client -showcerts -verify 5 -connect portal.myshop.com:9043 < /dev/null | openssl x509 -pubkey -noout>/home/app/portalpublic.crt

,然后使用以下命令将公共证书添加到信任库:

keytool -import -alias portalpubliccert -file /home/app/portalpublic.crt -storetype JKS -keystore cacerts

但是,这样做却出现以下错误

Enter keystore password:
keytool error: java.lang.Exception: Input not an X.509 certificate

您能建议我如何解决此问题吗?

cat -ev /home/app/portalpublic.crt

-----BEGIN PUBLIC KEY-----$
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6iAD/I9U2kKAqEokzEkA$
b2QmPQb73A/bA9YD+I+pqEkqtwQmpe6Oiu3+mx2ppA/NXG2QqNb4IfpVEgRrQygG$
6giuhMikPRq6PQ7wywfxWaPkJDDcrLg7Dn8v3l5XgpeaFZN1KSGMDpdrsEpSlxFS$
ZaxDKUfySyjppsC9GV4Lv1IXET5sSmfYw2RqCkO/Q8zcItVkzjZIBw8Y/eVrloGm$
AnQj89cLJbDFq2VogVjMGdOSGQc7cQ0ZZAyrv0XV4hKpi9taiNNXv0ZKWuvk1oFo$
GyfildXPnVKORxSx6d865kj93fCsEXlLjJ1c8xHVr992hEWlWVthByqpTB7DVccj$
xQIDAQAB$
-----END PUBLIC KEY-----$

解决方法

元:这不是编程或开发问题,不是问题,而如今很可能已经关闭。它可能适用于security.SX或超级用户。

我从安全网址获取公共证书,如下所示:

openssl s_client ... | openssl x509 -pubkey ...

不,您。您得到的是公钥而不是证书。尽管公钥(此处为类型)包含公钥,但公钥只是公钥而不是证书,并且证书也不只是公钥。另外,您也没有从“ URL”获得它。您是从域名获得的,或者更确切地说,是从某个域名或显然是域名的主机获得的。域名不是URL;它不是URL。 一些 URL(不是全部!)包含一个域名,但是它们是不同的。

keytool -import ... -file ...

keytool -import[cert]需要证书。公钥不是证书。这就是为什么错误消息指出输入不是证书-因为不是证书。

Java密钥库可以将证书(特别是X.509 / PKIX类型的证书)存储为TrustedCertEntry,但不能存储裸公开密钥。如果要将来自给定URL的证书存储在密钥库中,请获取然后导入证书-而不是公钥。如果出于某种原因,您只想存储公用密钥(如果它没有链接到证书中的其他信息,则基本上是没有用的),请不要使用Java密钥库,也不要使用keytool

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。