微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将两个证书链接到同一主题

如何解决将两个证书链接到同一主题

我正在尝试生成特定的证书链,以用作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的黑客手段

解决方法

有一些重要方面需要注意,因为某些种类的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),则会发现实际上是用于创建证书的工具包。

祝你好运!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。