如何使用 Powershell 设置证书的权限?

3
我有一些构建脚本,使用CertMgr.exe生成证书。然而,我目前必须手动使用MMC快照,导航到相关的证书,右键单击它,选择所有任务,选择管理私钥,然后手动设置权限(现在,我只添加 Everyone 并授予完全权限)。所以我运行以下脚本,然后转到MMC并查找MACHINE-NAME Root CA,然后手动修改权限。如何修改我的脚本,以便我不必执行此手动步骤?
param([String]$CertName=$env:COMPUTERNAME)

$CertAuthName= $CertName + " Root CA"

Get-ChildItem cert:\ -DNSNAME $($CertAuthName + "*") -Recurse | Remove-Item
Get-ChildItem cert:\ -DNSNAME $($CertName + "*") -Recurse | Remove-Item

Remove-Item $CertName"*"
Remove-Item $CertAuthName"*"

.\makecert.exe -n $("CN="+$CertAuthName) -r -sv $($CertAuthName+".pvk") $($CertAuthName+".cer") >$null 2>&1
.\makecert.exe -crl -n $("CN="+$CertAuthName) -r -sv $($CertAuthName+".pvk") $($CertAuthName+".crl") >$null 2>&1
.\CertMgr.Exe -add -c $($CertAuthName+".cer") -s -r localMachine root >$null 2>&1
.\CertMgr.Exe -add -crl $($CertAuthName+".crl") -s -r localMachine root >$null 2>&1
.\makecert.exe -sk $CERTNAME -n $("CN="+$CERTNAME) $($CERTNAME+".cer") -iv $($CertAuthName+".pvk")  -ic $($CertAuthName+".cer") -sr localmachine -ss my -sky exchange -pe >$null 2>&1

你目前尝试了什么?你遇到了哪些错误? - Bill_Stewart
这个问题有一个答案包含一些 PowerShell 代码,可能可以解决问题: https://dev59.com/c3RC5IYBdhLWcg3wD8tV - veefu
1个回答

2

2
使用 Set-PrivateKeyPermissions -thumbprint $thumbprint -account Everyone 命令可以完成此操作。其中 $thumbprint 包含指纹值。为了获取指纹值,请使用 $cert = Get-ChildItem -path cert:\LocalMachine\My\ | where { $_.subject -eq "CN=" + $CertName } 命令,其中 $CertName 的值应相应设置,而指纹值则为 $cert.thumbprint - WhiskerBiscuit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接