有没有办法使用PowerShell从我的商店中删除/卸载自签名证书?
我试过
Remove-Item cert:\LocalMachine\My\$thumb
它不起作用,我得到一个例外,说“提供商不支持此操作”
我也试过
certmgr.msc /del /n "MyTestServer" /s MY
它既不起作用
如何从商店中卸载证书?
提前致谢 哎呀
答案 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.