从我的商店中删除自签名证书

时间:2011-04-18 06:44:02

标签: ssl powershell

有没有办法使用PowerShell从我的商店中删除/卸载自签名证书?

我试过

Remove-Item cert:\LocalMachine\My\$thumb

它不起作用,我得到一个例外,说“提供商不支持此操作”

我也试过

 certmgr.msc /del /n "MyTestServer" /s MY

它既不起作用

如何从商店中卸载证书?

提前致谢 哎呀

7 个答案:

答案 0 :(得分:7)

Remove-Item不适用于证书,因为在certhell中只提供了cert-provider。找到了这些信息here

$store = new-object system.security.cryptography.x509certificates.x509Store 'My','CurrentUser'
$store.Open('ReadWrite')
$certs = @(dir cert:\currentuser\my | ? { $_.Subject -like '*MyTestServer*' })
foreach ($cert in $certs) {$store.Remove($cert)}
$store.close() 

我在评论中找到了解决方案here。所以它没有经过测试。

答案 1 :(得分:5)

发现这篇文章是因为remove-item无效。

这不是'真''powershell,但我使用这种方法:

certutil -delstore my "5314bdfa0255be36e53e749d033"

您可以通过cert:\ LocalMachine \ my或通过certutil获取指纹。在我的情况下,我有多个具有完全相同名称的证书,所以我更喜欢上面的方法,因为它在我删除证书时给了我一个特定的目标。

答案 2 :(得分:1)

这也适用于powershell

获取拇指指示 dir cert:\ localmachine \ my

删除指纹 del cert:\ localmachine \ my \ thumbprint

答案 3 :(得分:1)

使用PS 3.0,有一种更简洁和惯用的方法:

Remove-Item -Path cert:\LocalMachine\My\{Thumbprint} -DeleteKey

有关所有详细信息,请参阅TechNet

答案 4 :(得分:0)

如果使用PS 3.0,则要按subjectName删除

Get-ChildItem -Path Cert:\CurrentUser\My | where { $_.subject -eq "CN=MysubjectName" } | Remove-Item

答案 5 :(得分:0)

意识到这是一个老话题,但是由于我现在正在考虑做同样的事情,以为我会发布。我需要通过友好名称从所有证书存储中删除。

意识到这不是OP的答案,但可能会帮助某人。

如果任何人都需要这样做,那么对我来说dir cert: -Recurse | Where-Object { $_.FriendlyName -like "*SOMENAME*" } | Remove-Item

答案 6 :(得分:0)

您设置在错误的证书存储区

使用 $cert = Get-ChildItem -Path "Cert:\CurrentUser\My\THUMBPRINT" 而不是 cert:\LocalMachine\My\$thumb 你说证书是你的。因此,您的证书存储在 -Path "Cert:\CurrentUser\My\THUMBPRINT" CurrentUser = 您的用户帐户中,您无需将其更改为您的帐户名。

br.