【发布时间】: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