【问题标题】:How to create a certificate chain using keytool?如何使用 keytool 创建证书链?
【发布时间】:2023-03-24 14:56:02
【问题描述】:

我想在java中创建证书链如下:

ca.mycompany.com
|--asia.mycompany.com
   |--india.mycompany.com

其中 ca.mycompany.com 是根证书(自签名)。

我知道这可以通过 OpenSSL 实现。但是有没有可能用 keytool 来实现呢?

如果没有,我可以使用 Mozilla NSS 库来实现吗?

【问题讨论】:

  • 没有。您只能创建自签名证书,不能创建链。您可以从其他地方导入链。

标签: ssl keytool nss


【解决方案1】:

keytool documentation 中有一个示例说明了如何执行此操作:

keytool -genkeypair -keystore root.jks -alias root -ext bc:c
keytool -genkeypair -keystore ca.jks -alias ca -ext bc:c
keytool -genkeypair -keystore server.jks -alias server

keytool -keystore root.jks -alias root -exportcert -rfc > root.pem
keytool -storepass <storepass> -keystore ca.jks -certreq -alias ca | keytool -storepass <storepass> -keystore root.jks -gencert -alias root -ext BC=0 -rfc > ca.pem

cat root.pem ca.pem > cachain.pem
keytool -keystore ca.jks -importcert -alias ca -file cachain.pem

keytool -storepass <storepass> -keystore server.jks -certreq -alias server | keytool -storepass <storepass> -keystore ca.jks -gencert -alias ca -ext ku:c=dig,keyEncipherment -rfc > server.pem
cat root.pem ca.pem server.pem > serverchain.pem
keytool -keystore server.jks -importcert -alias server -file serverchain.pem

您还可以使用KeyStore Explorer 轻松生成证书链:

  1. 创建一个新的密钥对,这意味着创建一个自签名证书(根 CA)。
  2. 右键单击根 CA 证书并选择“签署新密钥对”,这将创建子 CA 证书和密钥对。
  3. 右击子CA证书,再次选择“Sign New Key Pair”。

结果链:

【讨论】:

  • 你指示的第 6 步给了我keytool error: java.lang.Exception: Failed to establish chain from reply
  • @Stewart 这些不是 my 说明,它们是从官方 keytool 文档中复制的(我的答案中的链接)。无论如何,我已经解决了这个问题。
  • 我明白你做了什么。 Root 和 CA 作为链一起导入。
【解决方案2】:

这是一个完美的教程,可以帮助您完成creating certificate chain using keytool 的过程。基本上,该过程是您需要使用 CA 的密钥签署证书,然后将证书安装到您创建的密钥库中。

【讨论】:

    猜你喜欢
    • 2016-06-27
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 2015-07-10
    • 1970-01-01
    相关资源
    最近更新 更多