openssl-交叉签名证书

openssl-交叉签名证书

third-party-ca我想使用自己的根CA () 对第三方根CA ( r1) 进行交叉签名。(背景:限制使用

为此,我使用

openssl x509-in third-party-ca.crt -CA /etc/pki/r1/ca.crt -CAkey /etc/pki/r1/private/ca.key -out third-party-ca-cross-signed.crt -set_serial 1000

这可行,但会保留 的Authority Key Identifierthird-party-ca需要将其更改为 的Subject Key Identifierr1(有关实际示例,请参阅 letsencryptISRG X1 交叉签名经过DST 根 CA X3

我可以Authority Key Identifier通过创建akiext并使用 来添加另一个-extfile akiext。但是,这会导致两个Authority Key Identifier

我怎样才能替换现有的Authority Key Identifier

答案1

openssl x509命令行中,您无法有选择地删除扩展;您可以使用-clrext删除全部输入扩展名并配置您-extfile想要的预先存在的扩展名(至少 BC 和 KU)新的证书。请注意,公共下属或跨 CA 证书(例如您链接的证书)可能包含 AIA 和/或 CRLDP 以及 AKI,全部其中仅对您要替换的发行人/母公司而言正确,因此应被替换(或删除)。

或者,您可以编写代码;使用API很简单。但这可能属于 SO 或或许security.SX 而不是这里。(并且您需要完成部分工作。)

在您的具体示例中,ISRG Root X1 可由 Identtrust DST X3 交叉签名,并且作为根-- 如果你从根证书开始,它就没有 AKI或者需要删除的 AIA/CRLDP。

更新:据透露后续相关问题OpenSSL 3.0.0 以上版本不允许非 root 输入情况;它要求旧证书是自签名的(root)。源代码中的注释表明这一直是有意为之,尽管之前并未有效执行。

相关内容