带 CRL DP 的自签名证书?这可能吗?

带 CRL DP 的自签名证书?这可能吗?

我习惯于通过以下方式创建自签名证书以供本地使用:

openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out  certificate.pem
openssl pkcs12 -inkey key.pem -in certificate.pem -export -out certificate.p12

今天,在一次长时间的会议之后,我被要求创建一个标准的自签名证书,其中包含没有根 ca 的 CLR 分发点。我总是使用基于 CA 的 CRL DP 创建证书。创建没有 CA 的自签名证书后,如何生成 CRL?这可能吗?

答案1

签署证书时,请使用该extfile选项,您应在其中指定包含如下内容的文件:

crlDistributionPoints=URI:http://example.com/crl.pem

为此,不要直接使用 openssl 创建证书,而是创建一个 csr(使用-new带有 的选项openssl req)和密钥,然后按照此示例生成证书(如果需要,使用您自己的文件名和参数):

openssl x509 -req -in cert.csr -out cert.pem -signkey key.pem -extfile crlfile.ext

您可以通过以下方式验证最终结果:

openssl x509 -in cert.pem -noout -text

附带说明一下,这对于提高安全性没有意义。此类 CRL 需要使用与证书相同的密钥进行签名,以便在密钥被泄露时,可以使用相同的泄露密钥创建一个新的、干净的 CRL,并认为该 CRL 有效。

要使用 openssl 创建 CRL,您应该使用其 CA 功能,如下所述这里。区别在于 CA 密钥将是您的证书密钥,而吊销的证书将是证书本身。正如您所看到的,即使您最终得到了带有 CDP 的自签名证书和“有效”crl(实际上,通过撤销签署它的证书来使自身无效),这也不应该以这种方式工作。

相关内容