如何在java信任库中导入jks证书

时间:2012-07-28 10:17:55

标签: java ssl https keytool jks

如何将.jks文件导入java security的信任库?我看到的所有教程都使用“.crt”文件。但是,我只有“.jks”文件,它也是我使用keytool命令生成的密钥库。

目前,我正在关注this tutorial

我能够生成Java密钥库和密钥对,并为现有Java密钥库生成证书签名请求(CSR),该请求基于本教程。但我无法将根证书或中间CA证书导入现有Java密钥库,并将签名的主证书导入现有Java密钥库,因为它正在查找“.cert”文件。

我是否遗漏了教程中列出的步骤?如果我拥有的唯一文件是“.jks”文件,我如何信任证书?什么是“.csr”文件的用途?

请注意我使用的是Windows。

2 个答案:

答案 0 :(得分:11)

".jks" 信任库,或者至少应该是将它分配给JSSE。您应该将CA中的证书添加到该文件中。然后,软件将通过迭代证书来查找证书链。私钥应保留在(密码保护的)".jks"文件中。

换句话说,您应该将证书导入".jks"而不是导出证书。如果证书请求的响应中未包含特定提供商的证书,则可能需要单独下载这些证书。您可能也可以从您喜欢的浏览器中导出它们。通常这些是以X5.09 DER格式存储的(应该与Java keytool兼容)。

步骤(一般而言):

  1. 生成密钥对&证书请求,存储到新的或现有的密钥库(.jks
  2. 发送要签名的证书请求,从您请求的证书开始获取链
  3. 使用私钥将证书链导入密钥存储区
  4. 为需要进行验证的一方(使用SSL时至少有一个或多个客户端)生成新的或使用现有密钥库,并导入证书链
  5. 信任上述密钥库中证书链中的证书,可能是最高证书(“根”证书)。
  6. 配置和测试各方,例如使用带有私钥的密钥库的服务器和使用后者密钥库的多个客户端。

答案 1 :(得分:0)

#Use Keytool command to generate a self-signed certificate and install the certificate in Client Machine JDK Security Key store path.

# generate a certificate using JKS format keystore
keytool -genkey -alias selfrest -keyalg RSA -keypass pass123 -storetype JKS -keystore selfsigned.jks -storepass pass123 -validity 360 -keysize 2048

# To check the content of the keystore, we can use keytool again:
keytool -list -v -keystore selfsigned.jks

#Export Self signed certificate into .cer file
keytool -exportcert -alias selfrest -keystore selfsigned.jks -file selfsigned.cer

# (Run As Administrator- to open CMD.exe)
# Install self-signed certificate into Java JDK CA Certificate key store path
# to avoid giving certificate path in the client program.
keytool -import -alias selfrest -keystore "C:\Program Files\Java\jdk1.8.0_181\jre\lib\security\cacerts" -file selfsigned.cer

# List certificates stored in JDK Key store which you have just now imported into JDK Security path.
keytool -list -keystore "%JAVA_HOME%\jre\lib\security\cacerts