我从安全URL获取公共证书,如下所示:
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-----$发布于 2020-09-14 16:37:05
Meta:这不是一个编程或开发问题,问题或问题,现在很可能已经结束了。它可能适用于security.SX或超级用户。
我从安全URL获取公共证书,如下所示:
openssl s_client ... | openssl x509 -pubkey ...
你没有,,你得到了公钥,而不是证书。公钥只是一个公钥,而不是证书,尽管证书(这里的类型)包含公钥,但证书不仅仅是公钥。而且,你也不是“从URL”获取的。你是从一个域名获取的,或者更准确地说,是从位于或明显位于域名的主机获取的。域名不是URL;有些URL(不是全部!)包含域名,但它们是不同的东西。
keytool -import ... -file ...
keytool -import[cert]需要证书。公钥不是证书。这就是为什么错误消息说输入不是证书--因为它不是。
Java keystore可以将证书(特别是X.509/PKIX类型的证书)存储为trustedCertEntry,但它不能存储纯公钥。如果希望将给定URL中的证书存储在密钥库中,请获取证书,然后导入该证书--而不是公钥。如果出于某种原因,您只想存储公钥(如果它没有链接到证书中的其他信息,那么这基本上是无用的),请不要使用Java keystore,也不要使用keytool。
https://stackoverflow.com/questions/63878439
复制相似问题