如何删除本地证书存储中的 CRL 文件

如何删除本地证书存储中的 CRL 文件

我需要导入CRL 文件到 Bastion 服务器不是我的环境域的一部分。CRL 文件每隔几天更新一次,因此需要将新副本导入本地证书存储经常出现在堡垒上。

我注意到当我做新鲜进口新的 CRL旧副本不是被覆盖或删除时,刚刚添加新副本添加到列表中。我想运行一个脚本,首先删除旧的 CRL 文件在里面受信任的根 CA 和中间 CA CRL店铺。

在此处输入图片描述

我还没有找到使用以下方法删除过期/过期的 CRL证书管理器证书实用程序或者电源外壳我需要一种方法来脚本这就是它的自动化。有人找到办法了吗?任何帮助我都会很感激!

答案1

使用 certutil 很简单:

certutil -delstore Root <CRLHash>
certutil -delstore CA <CRLHash>

不幸的是,PowerShell 和 .NET 没有提供内置方法来枚举存储中的 CRL,也不支持 CRL 对象。如果您需要完全受控的方法,那么您将必须调用 Win32 函数:https://docs.microsoft.com/en-us/windows/win32/seccrypto/cryptography-functions#certificate-and-certificate-store-functions,这是一项大量的编程工作。

答案2

Powershell:列表(我按发行者列出,但您可以调整),一个要删除。

获取 CA 存储中所有 CRL 哈希的列表:

$crlHashes = ls HKLM:\Software\Microsoft\SystemCertificates\CA\CRLs | %{$_.name.split(" \ ")[6]}

将哈希与发行者关联起来,这样你就知道它来自哪里:

$crlHashes | foreach-object {Write-Host; Write-Host "哈希:$“; certutil-store CA $| findstr 发行人}

然后使用之前发布的相同命令来决定删除哪些:

certutil -delstore CA <哈希>

然后,您可以使用 if/then 自动化,例如“如果发行人 = <某人>,则删除”

相关内容