首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决keytool错误: java.lang.Exception:输入不是X.509证书

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

Stack Overflow用户
提问于 2020-09-14 13:15:45
回答 1查看 617关注 0票数 0

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

代码语言:javascript
复制
openssl s_client -showcerts -verify 5 -connect portal.myshop.com:9043 < /dev/null | openssl x509 -pubkey -noout>/home/app/portalpublic.crt

然后使用以下命令将公共证书添加到信任存储区:

代码语言:javascript
复制
keytool -import -alias portalpubliccert -file /home/app/portalpublic.crt -storetype JKS -keystore cacerts

然而,我在这样做的时候得到了下面的错误:

代码语言:javascript
复制
Enter keystore password:
keytool error: java.lang.Exception: Input not an X.509 certificate

你能建议我如何解决这个问题吗?

代码语言:javascript
复制
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-----$
EN

回答 1

Stack Overflow用户

发布于 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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63878439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档