Set AuthenticodeSignature返回对路径的访问被拒绝错误



我有一个简单的powershell脚本,当服务器出现问题时,我可以用它向我发送电子邮件。脚本被限制在该服务器上运行,除非它们被签名。因此,我创建了一个自签名证书,将其移动到受信任的根文件夹中,当我在上面运行Get-ChildItem时,我会看到返回的指纹,并且这些属性对我来说是正确的(尽管我承认我对证书了解不多(。最后一步是签署脚本,我正试图用它来完成:

$cert=(Get-ChildItem -Path Cert:LocalMachineRoot -CodeSigningCert)[0]
Set-AuthenticodeSignature -FilePath "C:ScriptsServiceFailureAlert.PS1" $cert

但我得到了访问路径被拒绝。我确信这是一件非常简单的事情,但在这一点上,我的头撞到了墙上。这个剧本是我创作的。它不是只读的,目录不是只读的。所有用户都有完全的权限,我是服务器上的管理员,我以管理员的身份运行powershell。如有任何帮助,我们将不胜感激。

服务器上的一个应用程序阻止了该操作,而我对此一无所知。我与服务器团队进行了交谈,添加了权限,并顺利重新运行了该命令。现在一切正常。谢谢你的回复Theo,非常感谢。

我遇到了同样的问题,在安全事件日志下我发现了以下内容:

Audit Failure:
Cryptographic Operation:
Operation:  Open Key.
Return Code:    0x80090016

对我来说,问题是签署脚本的用户与我用来导入证书的用户不同,并且没有访问私钥的权限。为了修复,我做了以下操作:

  1. 管理本地计算机的证书
  2. 找到具有私钥的验证码证书
  3. 右键单击>所有任务>管理私钥
  4. 授予用户对私钥的完全控制权

之后,我可以在我想要的用户凭据下使用Set-AuthenticodeSignature,而不会出现问题

最新更新