6

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

目前,我正在关注本教程

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

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

请注意,我使用的是 Windows。

4

2 回答 2

12

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

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

步骤(一般):

  1. 生成密钥对和证书请求,存储到新的或现有的密钥库 ( .jks)
  2. 发送要签名的证书请求,获取以您请求的证书开头的链
  3. 使用私钥将证书链导入密钥库
  4. 为需要进行验证的一方(使用 SSL 时至少一个或多个客户端)生成新的或使用现有的密钥库,并导入证书链
  5. 信任上述密钥库中证书链中的证书,可能是最顶层的证书(“根”证书)。
  6. 配置和测试各方,例如使用带有私钥的密钥库的服务器和使用后一个密钥库的多个客户端。
于 2012-07-28T10:35:25.783 回答
5
#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
于 2018-11-08T10:01:18.790 回答