数字证书:如何将.cer文件导入到.truststore文件中?


89

有没有人遇到过他们必须处理.truststore文件的地方?并且知道如何将.cer导入.truststore文件?

我不确定是否必须使用Java Keytool或Linux命令(例如openssl命令)。

谢谢

Answers:


196
# Copy the certificate into the directory Java_home\Jre\Lib\Security
# Change your directory to Java_home\Jre\Lib\Security>
# Import the certificate to a trust store.

keytool -import -alias ca -file somecert.cer -keystore cacerts -storepass changeit [Return]

Trust this certificate: [Yes]

changeit是默认的信任库密码


任何人都知道如何在openssl
Balamurugan 2011年

8
此命令使您可以将证书下载到名为certfile.txt的文件:openssl s_client -connect HOSTNAME:PORTNUM 2>&1 | sed -ne'/ -BEGIN CERTIFICATE-/,/-END CERTIFICATE- / p'> certfile.txt ---然后使用keytool将其导入您的信任库中
Christian Achilli

2
您可以在浏览器中下载任何受SSL保护的网站的证书。在FireFox中,只需双击URL地址字段中的锁定符号。
BetaRide 2013年

如果您有“ jssecacerts”文件,请改用“ -keystore jssecacerts”。“
证书

23

除了使用sed过滤出的证书之外,您还可以通过管道openssl s_client输出openssl x509 -out certfile.txt,例如:

echo "" | openssl s_client -connect my.server.com:443 -showcerts 2>/dev/null | openssl x509 -out certfile.txt

此答案旨在改进Christian对有关下载证书的已接受答案的评论。可能应该是一个评论。
jbuhacoff

8

将.cer文件导入信任库的方式与从Firefox导出中导入.crt文件的方式相同。

您不必输入别名和密钥库的密码,只需键入:

keytool -v -import -file somefile.crt  -alias somecrt -keystore my-cacerts

最好使用Java安装中已经存在的cacerts文件(jre \ lib \ security \ cacerts),因为它包含安全的“流行”证书。

关于cer和crt差异的更新(为澄清起见), 根据使用SSL的Apache所述-如何将CER转换为CRT证书?和用户@Spawnrider

CER是DER编码的二进制形式的X.509证书。
CRT是二进制X.509证书,封装在文本(base-64)编码中。
它不是相同的编码。


1
这意味着您导出的文件名略有不同。它不会更改文件,问题或答案。明智的做法是指定一个别名:否则,您可能会覆盖先前的导入内容。
罗恩侯爵,

.crt和.cer是否具有某些格式?扩展名在证书中不起作用吗?关于别名的要点。
安德烈亚斯·帕纳焦蒂迪斯

1
我回答我的问题:是的,crt和cer具有相同的格式。一样。您可以将两者都导入到信任库中。
Andreas Panagiotidis
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.