如何维护客户端证书的撤销列表

如何维护客户端证书的撤销列表

我有一个在 Windows Server 2012 IIS 中运行的网站。用户使用客户端证书进行身份验证。

我曾经使用证书颁发机构 MMC 管理单元颁发客户端证书。

由于用户数量增长迅速,我现在使用 BouncyCastle 库和一些 C# 代码批量创建客户端证书。我相信我也可以使用 Makecert 或 Openssl 来完成此操作。

在这些证书中,我将吊销列表条目设置为与证书颁发机构管理单元使用的相同值。

IIS 可以很好地接受这些证书。

我的问题与证书撤销有关。使用 MMC 管理单元可以轻松撤销服务器上颁发的客户端证书,但假设我需要撤销这些新证书中的任何一个。尽管 IIS 接受这些证书,但它没有任何记录,因此显然我无法使用证书颁发机构管理单元撤销它们。此外,似乎没有办法导入这些证书,使它们显示在证书颁发机构管理单元中。

那么最好的解决方法是什么?我需要在其他地方为这些证书设置吊销列表 (CRL) 吗?

答案1

你做错了。如果你使用 Windows CA 颁发证书,那么只有 Windows CA 才应该使用该特定 CA 证书和密钥对签署证书。你使用 openssl 和第三方库用 Windows CA 证书签署客户端证书,这损害了你的 PKI。因为你违反了RFC5280§4.1.2.2要求:CA 必须保留颁发证书的记录并执行一些限制。例如序列号唯一性。

这也可能导致政策不一致,当然,无法为 openssl 签名的证书提供撤销手段。

您使用什么工具来生成和签署请求并不重要,但只有一个应用程序应使用特定的 CA 证书来签署其他证书、将它们存储在数据库中并签署 CRL。可能有解决方法,但不支持任何方法。

如果您的用户驻留在 Active Directory 中,那么您应该利用证书自动注册自动执行证书颁发任务的功能。

相关内容