Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从何处开始为此创建Powershell脚本?_Powershell_X509certificate - Fatal编程技术网

从何处开始为此创建Powershell脚本?

从何处开始为此创建Powershell脚本?,powershell,x509certificate,Powershell,X509certificate,如果我需要向证书授予下面所述的附加权限,那么在Powershell中我应该从哪里开始呢?必须有一个Windows命令行可执行文件,我必须从命令行开始。只有那时我才能考虑用powershell脚本来写,对吗 单击开始,在“搜索程序和文件”框中键入mmc,然后按ENTER键 在“文件”菜单上,单击“添加/删除管理单元” 在“可用管理单元”下,双击证书 选择计算机帐户,然后单击下一步 单击本地计算机,然后单击完成。单击“确定” 在控制台根目录下的证书(本地计算机)下,在个人存储中,单击证书 右键单击先

如果我需要向证书授予下面所述的附加权限,那么在Powershell中我应该从哪里开始呢?必须有一个Windows命令行可执行文件,我必须从命令行开始。只有那时我才能考虑用powershell脚本来写,对吗

  • 单击开始,在“搜索程序和文件”框中键入mmc,然后按ENTER键
  • 在“文件”菜单上,单击“添加/删除管理单元”
  • 在“可用管理单元”下,双击证书
  • 选择计算机帐户,然后单击下一步
  • 单击本地计算机,然后单击完成。单击“确定”
  • 在控制台根目录下的证书(本地计算机)下,在个人存储中,单击证书
  • 右键单击先前创建的xxAzurehost1证书。选择所有任务>管理私钥。单击添加,然后单击高级。 单击位置并选择您的本地计算机。单击“立即查找”。挑选 在搜索结果中选择“网络服务”,然后单击“确定”。单击“确定”。在 “xxxazurehost1私钥的权限”窗口中,选择“网络” 服务并授予读取权限。单击“确定”

  • 要控制私钥的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将是您可以使用Set ACL或icacls.exe更改ACL的FileInfo对象


  • 非常感谢。它给了我正确的方向,我也找到了一个博客,正是这样做的。看起来你确实明白我想要达到的目的,你会允许哪个角色在不影响网站安全的情况下读取私钥?我已经把它交给了用户,它是有效的,只是想知道这是否意味着只有机器上的用户才能阅读它,或者任何人都可以从互联网上阅读它,以及后果如何。感谢总是遵循最不宽容的原则。我认为您在未修改ACL的情况下出现了错误。在启动应用程序时,您应该能够通过使用procmon准确地确定哪个帐户正试图访问私有帐户。由于您知道私钥文件路径是什么,请查看procmon日志中的拒绝访问,并检查属性以查看它是什么帐户。我猜应该是应用程序池标识。