关键工具错误: java.lang.Exception: 输入不是X.509证书

9
我正在尝试导入Gmail的smtp证书以便与Jira一起使用,但在使用Java的keytool导入时出现了以下错误。
我使用openssl获取了证书,即在----Begin Certificate----和----End Certificate----之间的所有内容(包括边界)。我还尝试使用Windows证书管理器创建x.509证书,但仍然出现此错误。我已验证文件中没有额外的空格。
我看到许多人在网上遇到了这个问题,但是其中的解决方案似乎都不适用于我。如有帮助,将不胜感激。
谢谢
3个回答

16

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

然后使用DER格式的证书。


我真的很希望这能够起作用,但我一直收到相同的错误。以下是我正在做的事情。openssl s_client -connect smtp.gmail.com:465我将其复制到名为gmail.pem的文件中openssl x509 -outform der -in gmail.pem -out gmail.der keytool -import -file pathTo/gmail.der -keystore pathTo/cacerts - dbbooh01
这实际上是有效的,我在使用keytool时忘记了参数-trustcacerts。谢谢你的帮助。 - dbbooh01
@dbbooh01,这个命令之所以有效,可能是因为-trustcacerts导入了分发的cacerts文件中的标准根CA。这将包括在Gmail信任链中的根CA。 - Alastair McCormack
@dbbooh01:您能给我完整的命令吗?我也输入了 x509 -outform der -in gmail.pem -out gmail.der,但它没有生成文件gamil.der。它在哪里生成文件gmail.der? - Java Curious ღ

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

是的,这也是我的问题原因。 - Andrejs

2

遗憾的是,openssl 对我没用。

无法加载证书2740:error:0D0680A8:asn1编码 过程:ASN1_CHECK_TLEN:错误的标记:./crypto/as n1/tasn_dec.c:1294: 2740:error:0D07803A:asn1编码过程:ASN1_ITEM_EX_D2I:嵌套 asn1错误:./ crypto/asn1/tasn_dec.c:380:Type=X509_CINF 2740:error:0D08303A:asn1编码 过程:ASN1_TEMPLATE_NOEXP_D2I:嵌套asn1错 误:./crypto/asn1/tasn_dec.c:749:Field=cert_info, Type=X509 2740:error:0906700D:PEM过程: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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接