![](/img/trans.png)
[英]keytool keytool error: java.lang.Exception: Input not an X.509 certificate
[英]How to resolve keytool error: java.lang.Exception: Input not an X.509 certificate
我從安全 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-----$
Meta:這不是編程或開發問題,問題或問題,現在很可能會關閉。 它可能適用於 security.SX 或超級用戶。
我從安全 URL 獲取公共證書,如下所示:
openssl s_client ... | openssl x509 -pubkey ...
不,你沒有。 你得到的是公鑰而不是證書。 公鑰只是公鑰而不是證書,並且證書不僅僅是公鑰,盡管證書(此處的類型)包含公鑰。 此外,您不是“從 URL”獲得的。 您是從域名中獲取的,或者更確切地說是從位於或顯然位於域名的主機中獲取的。 域名不是 URL; 一些URL(不是全部!)包含域名,但它們是不同的東西。
keytool -import ... -file ...
keytool -import[cert]
需要證書。 公鑰不是證書。 這就是為什么錯誤消息說輸入不是證書的原因——因為它不是。
Java 密鑰庫可以存儲證書,特別是 X.509/PKIX 類型的證書,作為受信任的證書條目,但它不能存儲裸公鑰。 如果您想將來自給定 URL 的證書存儲在密鑰庫中,請獲取並導入證書——而不是公鑰。 如果出於某種原因您只想存儲公鑰,如果它沒有鏈接到證書中的其他信息,那么這基本上是無用的,請不要使用 Java 密鑰庫,也不要使用keytool
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.