将.cer证书转换为.jks

50

我需要将.cer文件转换为.jks文件。我看到了一些相关的问题,但没有看到我需要的解决方案。

我不需要将其添加到我的本地证书中,而是需要将其作为一个文件上传到服务器上。同时我也只需要进行一次转换,而不是通过编程实现。这篇文章Converting .cer to .jks using java中的作者说他已经成功地完成了转换,但由于我没有足够的声望,无法对他的最后回复进行评论,也无法给他发送私人消息来询问。

因此,如果有人知道一个简单的方法来完成此操作,我会很高兴听取建议。

5个回答

94

keytool 是随JDK的安装一同提供的(在 bin 文件夹中):

keytool -importcert -file "your.cer" -keystore your.jks -alias "<anything>"

这将创建一个新的密钥库并仅向其中添加您的证书。

因此,您无法将证书转换为密钥库:您需要证书添加到密钥库中。


嗨,我可以在哪里找到创建的密钥库?在证书管理器上吗? - viviramji
4
@viviramji,密钥库将作为一个文件创建,在您运行此命令的文件夹中。 - David Lavender

11

为确保您需要的确实是这种"转换",请注意jks文件是密钥库,一种用于存储多个证书并允许您使用Java安全API以编程方式检索它们的文件格式,而不是等效格式之间的一对一转换。

因此,如果您只想将该证书导入新的特定密钥库中,可以使用Keystore Explorer这个图形化工具来完成。您将能够像使用java终端工具keytool一样修改密钥库和其中包含的证书(但更易于操作)。


4
以下是有助于的内容:
keytool -import -v -trustcacerts \
-alias keyAlias \
-file server.cer \
-keystore cacerts.jks \
-keypass changeit

3

从密钥库中导出证书:

keytool -export -alias mydomain -file mydomain.crt -keystore keystore.jks

3
我认为这个程序做的是相反的事情。 - zmerr

0

这对我非常有效。

首先,创建一个PKCS12密钥库:

openssl pkcs12 -export -in my-app-certificate.crt -inkey my-app-certificate-private.key -out my-app-keystore.p12 -name my-app

这将需要一个密码

-name 是密钥库中私钥条目的别名。

接下来,使用keytool命令将PKCS12密钥库转换为JKS密钥库:

keytool -importkeystore -srckeystore my-app-keystore.p12 -srcstoretype PKCS12 -destkeystore my-app-certificate.jks -deststoretype JKS

查看JKS文件内容:

keytool -v -list -keystore my-app-certificate.jks

参考: 使用OpenSSL创建自签名证书的步骤

这将要求输入创建PKCS12密钥库时输入的密码


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