簡體   English   中英

如何解決 keytool 錯誤: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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM