数字证书:如何使用什么方法将.cer文件导入到.truststore文件中?

104

有人遇到过需要处理“ .truststore”文件的情况吗?并知道如何将“.cer”导入到“.truststore”文件中吗?

我不确定是要使用Java Keytool还是Linux命令(例如openssl命令)。

谢谢。

3个回答

223
# 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
10
这个命令可以将证书下载到名为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
如果您有“jssecacerts”文件,请使用“-keystore jssecacerts”,而不是“cacerts”。将忽略“cacerts”。 - kommradHomer

29

你可以使用 openssl s_client 命令输出证书并通过管道传递给 openssl x509 -out certfile.txt 命令来过滤证书,而不是使用 sed 命令。例如:

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

这个回答旨在改进关于下载证书的已接受答案的Christian评论。可能应该是一条评论。 - jbuhacoff

11

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

您无需放置密钥库的别名和密码,只需键入:

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

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

关于cer和crt之间区别的更新(仅作澄清) 根据Apache with SSL - How to convert CER to CRT certificates?和用户@Spawnrider的说法:

CER是二进制形式的X.509证书,DER编码。
CRT是基于文本(base-64)编码的二进制X.509证书。
它们的编码方式不同。


2
这只是意味着你使用了稍微不同的名称导出文件。它不会改变文件、问题或答案。最好指定一个别名:否则你可能会覆盖之前的导入。 - user207421
.crt和.cer格式相同吗?扩展名在证书中没有任何作用吗?关于别名的观点很好。 - Andreas Panagiotidis
2
我回答我的问题:是的,crt和cer具有相同的格式。一样的东西。您可以在信任存储中导入两者。 - Andreas Panagiotidis

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