小编Ang*_*min的帖子

重新颁发自签名根 CA 而不使其签名的证书无效

我为我们公司的一些内部服务创建了一个自签名的根证书颁发机构,我自己配置​​了它(主要通过 HTTPS 提供服务)。然后我为这些服务创建了证书,并使用此 CA 签名。

现在我想向根 CA 添加一个 x509 扩展(CRL 分发点),而不会使从此 CA 颁发的现有服务器证书无效。这可能吗?

我的直觉是“是”,因为据我所知,访问相应的私钥对于证书身份的“完全授权”是必要充分的。也就是说,除非在生成证书时(可能)将某种随机数与公钥一起合并到证书中。

我对 SSL 证书管理还是很陌生,但我(认为我)了解标准信任链的基础知识。我也很熟悉其他 PKI 加密的基本使用:我管理 SSH 密钥并使用 GPG 进行签名和加密。我学的是计算机科学,虽然我只是一个自学的密码学涉猎者。

我从未为原始 IIRC 制作过 CSR(我认为它是 的直接输出openssl req -new -x509)。当然,我仍然拥有原始 CA 的私钥,并且使用它我能够将原始证书“反转”为证书签名请求: openssl x509 -x509toreq -in MyCA.pem -out MyCA.csr -signkey private/MyCA.key

我希望这会有效地“提取”上面提到的随机数,并允许我重新创建证书,但这次使用一个crlDistributionPoints字段,因此所有使用原始 CA 签名的证书仍将针对此新 CA 进行验证,但例外客户端将从字段中指定的 HTTP URL 检索我的(当前为空的)CRL 文件。

所以我做了一个扩展配置文件ext.conf

[ cert_ext ] 
subjectKeyIdentifier=hash
crlDistributionPoints=URI:http://security.mycompany.co.za/root.crl
Run Code Online (Sandbox Code Playgroud)

我从 CSR 生成了新版本的根 CA:

openssl x509 -extfile ./ext.conf -extensions cert_ext -req -signkey private/MyCA.key -in …
Run Code Online (Sandbox Code Playgroud)

openssl ssl-certificate certificate-authority

12
推荐指数
1
解决办法
3673
查看次数