如果我需要为证书提供如下所述的额外许可,我在哪里开始使用Powershell?必须有一个Windows命令行可执行文件,我必须从命令行开始。只有这样我才能考虑用PowerShell脚本编写它,对吗?
- 单击“开始”,在“搜索程序和文件”框中键入mmc,然后按Enter。
- 在“文件”菜单上,单击“添加/删除管理单元”。
- 在“可用的管理单元”下,双击“证书”。
- 选择“计算机帐户”,然后单击“下一步”。
- 单击“本地计算机”,然后单击“完成”。单击确定。
- 在“控制台根目录”,“证书(本地计算机)”下的“个人存储”中,单击“证书”。
- 右键单击先前创建的xxAzurehost1证书。选择所有任务>管理私钥。单击添加,然后单击高级。 单击“位置”,然后选择本地计算机。单击立即查找。选择 搜索结果中的NETWORK SERVICE,然后单击“确定”。单击确定。在里面 xxxazurehost1私钥窗口的权限,选择NETWORK 服务并提供读取权限。单击“确定”。
醇>
答案 0 :(得分:4)
要控制私钥的ACL,您只需编辑文件ACL即可。诀窍是找到哪个文件。
私钥存储在:
%ProgramData%\Microsoft\Crypto
在XP上:
C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto
在这里,你会看到按算法组织的密钥,例如DSS,RSA。
用户存储将是具有用户SID的子文件夹。本地计算机商店将位于子文件夹中:
MachineKeys
这是一种获取存储证书私钥信息的文件的方法。
首先进入本地机器个人证书店:
PS> cd cert:\LocalMachine\My
现在你必须得到你的证书。有不止一种方法可以做到这一点,这里有一个使用指纹:
$cert = dir | ? {$_.Thumbprint -eq "232820EEBF7DBFA01EE68A28BA0450671F862AE1"}
现在您可以找到这样的私钥文件名:
$fileName = $cert.PrivateKey.CspKeyContainerInfo.UniqueKeyContainerName
$keyFile = dir -Path "C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto" -Recurse | ? {$_.Name -eq $fileName}
$ keyFile将是FileInfo对象,您可以使用Set-ACL或icacls.exe更改ACL