从哪里开始为此创建Powershell脚本?

时间:2011-12-04 15:50:51

标签: powershell x509certificate

如果我需要为证书提供如下所述的额外许可,我在哪里开始使用Powershell?必须有一个Windows命令行可执行文件,我必须从命令行开始。只有这样我才能考虑用PowerShell脚本编写它,对吗?

  
      
  1. 单击“开始”,在“搜索程序和文件”框中键入mmc,然后按Enter。
  2.   
  3. 在“文件”菜单上,单击“添加/删除管理单元”。
  4.   
  5. 在“可用的管理单元”下,双击“证书”。
  6.   
  7. 选择“计算机帐户”,然后单击“下一步”。
  8.   
  9. 单击“本地计算机”,然后单击“完成”。单击确定。
  10.   
  11. 在“控制台根目录”,“证书(本地计算机)”下的“个人存储”中,单击“证书”。
  12.   
  13. 右键单击先前创建的xxAzurehost1证书。选择所有任务>管理私钥。单击添加,然后单击高级。   单击“位置”,然后选择本地计算机。单击立即查找。选择   搜索结果中的NETWORK SERVICE,然后单击“确定”。单击确定。在里面   xxxazurehost1私钥窗口的权限,选择NETWORK   服务并提供读取权限。单击“确定”。
  14.   

1 个答案:

答案 0 :(得分:4)

要控制私钥的ACL,您只需编辑文件ACL即可。诀窍是找到哪个文件。

私钥存储在:

%ProgramData%\Microsoft\Crypto

在XP上:

C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto

在这里,你会看到按算法组织的密钥,例如DSS,RSA。

用户存储将是具有用户SID的子文件夹。本地计算机商店将位于子文件夹中:

MachineKeys

这是一种获取存储证书私钥信息的文件的方法。

  1. 首先进入本地机器个人证书店:

    PS> cd cert:\LocalMachine\My
    
  2. 现在你必须得到你的证书。有不止一种方法可以做到这一点,这里有一个使用指纹:

    $cert = dir | ? {$_.Thumbprint -eq "232820EEBF7DBFA01EE68A28BA0450671F862AE1"}
    
  3. 现在您可以找到这样的私钥文件名:

    $fileName = $cert.PrivateKey.CspKeyContainerInfo.UniqueKeyContainerName
    $keyFile = dir -Path "C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto" -Recurse | ? {$_.Name -eq $fileName}
    
  4. $ keyFile将是FileInfo对象,您可以使用Set-ACL或icacls.exe更改ACL