【问题标题】:Chaining two certs with the same subject链接具有相同主题的两个证书
【发布时间】:2020-09-25 10:30:02
【问题描述】:

我正在尝试生成特定的证书链以用作 Corda 节点的证书。 证书结构如下

cert_0 -> Subject: Node DN  (Legal identity cert)
cert_1 -> Subject: Node DN (Node CA cert)
cert_2 -> Subject: Doorman CA
cert_3 -> Subject: Network Root CA

我已生成所有证书,然后尝试分两步链接它们:

openssl pkcs12 -export -chain -CAfile nodedoormanrootca.pem -in identity-cert.pem  -inkey identity-key.pem  -out identity.p12 -name identity-private-key  -passout pass:changeit

第 1 步工作正常,因此我得到了包含所有 4 个证书的证书包。

下一步是使用 keytool 将其导出到 Java Keystore。

keytool -v -importkeystore -providerpath  bcprov-jdk15on-1.66.jar -provider org.bouncycastle.jce.provider.BouncyCastleProvider -srckeystore identity.p12 -srcstoretype PKCS12 -destkeystore nodekeystore.jks -deststorepass changeit -srcstorepass changeit -alias "identity-private-key"

(我使用 Bouncy Castle 提供程序,因为 cert_0 使用 ed25519 密钥)

问题是 keytool 导入后我只有 1 个条目 identity-private-key 没有链的其余部分。

原因是 cert_0 和 cert_1 具有相同的主题,keytool 认为 cert_0 是自签名的,因此在仅在密钥库中添加第一个证书后停止。

那么,关于如何以 JKS 格式创建这样的证书链,其中两个证书将具有相同的主题(当然使用不同的公钥)有什么想法吗?

想到的是尝试创建一些基于 Corda 源代码的小型 kotlin 程序,但有没有更简单的解决方案?也许是一些针对 keytool 或 smth 的 hack

【问题讨论】:

    标签: ssl openssl x509certificate corda keytool


    【解决方案1】:

    有一些重要方面需要注意,因为当前滚动您自己的证书在某些类型的 Corda 网络中不受支持。

    如果您在自己的机器上使用引导网络执行此操作,我建议您不要这样做,因为您可以使用引导程序的 Corda 开发人员证书。

    如果您正在为生产或使用自己的 PKI 执行此操作,您应该可以使用 CENM 执行此操作(链接:https://docs.corda.net/docs/cenm/1.3/pki-tool.html

    没有演示创建这些证书的示例项目。但是,如果您下载 Corda 源代码并查看 X509Utilities.kt(https://github.com/corda/corda/blob/master/node-api/src/main/kotlin/net/corda/nodeapi/internal/crypto/X509Utilities.kt) 和 CertificatesUtils.kt (https://github.com/corda/corda/blob/master/node/src/main/kotlin/net/corda/node/utilities/CertificatesUtils.kt),您会发现实际上是用于创建证书的工具包。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 2012-03-23
      • 2017-08-04
      • 1970-01-01
      • 1970-01-01
      • 2011-04-05
      • 1970-01-01
      • 1970-01-01
      • 2021-05-15
      • 1970-01-01
      相关资源
      最近更新 更多