2010-08-10 108 views
9

我正在嘗試導入Gmail的smtp證書以供Jira使用,但在使用Javas keytool導入時出現此錯誤。keytool錯誤:java.lang.Exception:輸入不是X.509證書

我使用openssl獲取證書,----開始證書----和---- ----證書----(包含)之間的所有內容。我也嘗試使用Windows證書管理器創建一個x.509證書,但仍然出現此錯誤。我已驗證文件中沒有多餘的空格。

我在網上看到很多有這個問題的人,但沒有一個解決方案似乎適用於我。任何幫助,將不勝感激。

由於

回答

16
openssl x509 -outform der -in foo.pem -out foo.der

然後使用DER編碼輸出證書。

+0

我真的很希望這會工作,但我突出部分繼續得到同樣的錯誤。這是我正在做的事情。 的OpenSSL的s_client.First -connect smtp.gmail.com:465 我複製到一個名爲gmail.pem OpenSSL的X​​509 -outform DER文件-in gmail.pem退房手續gmail.der 的keytool -import -file pathTo /gmail.der -keystore pathTo/cacerts – dbbooh01 2010-08-10 14:27:52

+0

這實際上確實奏效,我在使用keytool時忘記了參數-trustcacerts。感謝您的幫助 – dbbooh01 2010-08-10 14:38:27

+0

@ dbbooh01這可能起作用的原因是因爲'-trustcacerts'從分佈式cacerts文件導入標準根CA.這將包括Gmail的信任鏈中的根CA. – 2013-02-22 21:53:14

5

答案是正確的,但一定要在複製/粘貼中包含-----BEGIN CERTIFICATE----------END CERTIFICATE-----。 那麼該命令將工作:

openssl x509 -outform der -in gmail.pem -out gmail.der 

,然後你做:

sudo keytool -import -file gmail.der -keystore $JAVA_HOME/jre/lib/security/cacerts -trustcacerts 
+0

葉普,這也是我的問題的原因 – Andrejs 2012-09-12 14:31:44

2

不幸的是,OpenSSL的並沒有爲我工作。

unable to load certificate 2740:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:./crypto/as n1/tasn_dec.c:1294: 2740:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:./ crypto/asn1/tasn_dec.c:380:Type=X509_CINF 2740:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 e rror:./crypto/asn1/tasn_dec.c:749:Field=cert_info, Type=X509 2740:error:0906700D:PEM routines:PEM_ASN1_read_bio:ASN1 lib:./crypto/pem/pem_oth .c:83:

使用了這個知識庫並且成功了。

https://knowledge.verisign.ch/support/code-signing-support/index?page=content&id=SO18659&actp=search&viewlocale=en_US&searchid=1343045026667