我有一个运行在Windows Server 2012,IIS的网站。 用户使用客户端证书进行身份validation。
我曾经使用证书颁发机构MMCpipe理单元颁发客户端证书。
由于用户数量增长迅速,我正在使用BouncyCastle库和一些C#代码批量创build客户端证书。 我相信我也可以使用Makecert或Openssl来做到这一点。
在这些证书中,我将撤销列表条目设置为“证书颁发机构”pipe理单元使用的相同值。
IIS接受这些证书就好了。
我的问题涉及证书撤销。 在服务器上发布的客户端证书很容易被使用MMCpipe理单元吊销,但假设我需要撤销这些新的证书。 尽pipeIIS接受这些证书,但它没有任何logging,所以显然我不能使用证书颁发机构pipe理单元撤消它们。 此外,看起来没有办法导入这些证书,使其显示在“证书颁发机构”pipe理单元中。
那么最好的办法是什么呢? 我是否需要在其他地方为这些证书设置撤销列表(CRL)?
你做错了。 如果使用Windows CA颁发证书,则只有Windows CA应该使用该特定CA证书和密钥对签署证书。 通过使用openssl和第三方库来为Windows CA证书签署客户端证书,从而危害您的PKI。 由于您违反了RFC5280§4.1.2.2的要求:CA必须保留已颁发证书的logging并强制执行一些限制。 例如序列号的唯一性。
也可能导致政策失效,当然也不能为openssl签署的证书提供撤销手段。
使用什么工具生成和签署请求并不重要,但只有一个应用程序应使用特定的CA证书签署其他证书,将其存储在数据库中并签署CRL。 可能有解决方法,但没有任何支持。
如果您的用户驻留在Active Directory中,则应该使用证书自动注册function来自动执行证书颁发任务。