如何信任 Windows Powershell 中的证书

Posted

技术标签:

【中文标题】如何信任 Windows Powershell 中的证书【英文标题】:How to trust a certificate in Windows Powershell 【发布时间】:2012-02-07 13:34:07 【问题描述】:

我正在使用Windows 7,并且想从Powershell 运行签名脚本,Powershell 的security-settings 设置为"all-signed",我的脚本使用我公司的valid certificate 签名。我还将.pfx-file 添加到我的本地证书存储(right-clicked the pfx-file and installed)

但是,当我启动签名脚本时,我收到一条消息:

"Do you want to run software from this untrusted publisher?
File Z:\Powershell Signed Scripts\signed.ps1 is published by CN=[MyCompanyName] and is not trusted on your system. Only run scripts from
 trusted publishers.
[V] Never run  [D] Do not run  [R] Run once  [A] Always run  [?] Help
(default is "D"):"

由于我想在我的系统上自动调用这些脚本,我想将我导入的证书添加到我系统上的受信任列表中,这样当我第一次运行签名脚本时就不会再收到消息了.如何使我的证书成为受信任的证书?

【问题讨论】:

您确定颁发您的开发证书的证书颁发机构的公共证书存在于您的证书存储库中吗? 【参考方案1】:

听起来您需要验证脚本是否已正确签名,并且您在正确的证书存储中安装了正确的证书。

使用Get-AuthenticodeSignature cmdlet 获取有关已签名脚本的信息。

还要查看 Scott's guide 以获取签名证书。

【讨论】:

证书应该专门放在 Trusted Publishers 容器中【参考方案2】:

如何在 Windows Powershell 中信任证书

确实,您可以在没有任何 mmc 的情况下执行此操作 :)

首先,检查您的个人证书的位置,例如“Power”:

Get-ChildItem -Recurse cert:\CurrentUser\ |where $_ -Match "Power" | Select PSParentPath,Subject,Issuer,HasPrivateKey |ft -AutoSize

(这个应该是空的:)

gci cert:\CurrentUser\TrustedPublisher

使用证书路径构建命令:

$cert = Get-ChildItem    Certificate::CurrentUser\My\ABLALAH

下一个工作在certificate store 上(我在这里工作两个证书存储:用户和计算机

$store = New-Object System.Security.Cryptography.X509Certificates.X509Store "TrustedPublisher","LocalMachine"
$store.Open("ReadWrite")
$store.Add($cert)
$store.Close()

检查,你应该找到你的证书:

ls cert:\CurrentUser\TrustedPublisher

【讨论】:

在您存储证书的示例中,您使用的是"TrustedPublisher","LocalMachine",它只能通过管理员权限访问。在接下来的几行中,您指的是用户可以访问的CurrentUser\TrustedPublisher。因此,我建议将 "LocalMachine" 更改为 "CurrentUser" 以便它成为一个完整的工作示例。

以上是关于如何信任 Windows Powershell 中的证书的主要内容,如果未能解决你的问题,请参考以下文章

win2012如何允许PowerShell远程连接到本机 有图

powershell 远程重启/关闭服务器

powershell 将执行策略远程签名设置为信任powershell脚本

powershell Active Directory读取受信任的域

如何将 Git 配置为信任来自 Windows 证书存储的证书?

如何使用 Windows 窗体在列表视图中显示 PowerShell 输出