【问题标题】:Restore self-sign certificate for PowerShell scripts恢复 PowerShell 脚本的自签名证书
【发布时间】:2018-06-08 21:57:24
【问题描述】:

我正在试验 PowerShell 和脚本签名。我已经创建了一个示例脚本。

Write-Host "hello, world"

我进一步创建了一个自签名证书并将其(以管理员身份)安装到受信任的证书存储“TrustedPeople”。然后我激活了执行策略

Set-ExecutionPolicy -scope process AllSigned

此后脚本无法再执行。这是预期的。所以我已经签署了脚本:

Set-AuthenticodeSignature -FilePath .\hello.ps1 $cert

变量$cert 仍然包含自签名证书。之后我在启动脚本时收到了这条消息:

您想运行来自这个不受信任的发布者的软件吗?

文件 C:\temp\hello.ps1 由 CN=Ich 发布,在您的系统上不受信任。只运行来自受信任的发布者的脚本。

[V] 从不运行 [D] 不运行 [R] 运行一次 [A] 始终运行 [?] 帮助(默认为“D”):

由于 PowerShell 的本地化不好,我选择了错误的答案 [E]:

[E] Noch nie ausgeführt [N] Nicht ausführen [M] Einmal ausführen [A] Immer ausführen

在那种状态下,我不能再执行脚本了。删除并重新安装证书没有帮助。我怎样才能恢复这个错误之前的状态?

编辑:在我进行试验时,我可以删除证书并创建一个新证书。但是,如果我分发了脚本和证书,而这个错误发生在另一台 PC 上,会发生什么?在这种情况下,清除证书不是一种选择。因此我实际上恢复了证书。

【问题讨论】:

  • dir Cert:\CurrentUser\Disallowed 是否列出您的证书?

标签: powershell


【解决方案1】:

我想您的证书已自动添加到不受信任的证书中。尝试从不受信任的证书存储中删除您的证书,然后将您的证书添加到系统上的受信任列表中以运行脚本而不会收到提示。

How to trust a certificate in Windows Powershell

更新 我可以在我的机器上重现这个问题。选择[V] Never run 后,我无法再执行脚本了。原因是,我的有效证书被添加到我的用户帐户的不受信任的证书中。我可以通过执行以下操作来解决我的问题。

  1. 打开 Microsoft 管理控制台(运行 -> mmc)
  2. 添加证书管理单元
    1. Ctrl + m
    2. 选择Certificates
    3. 点击Add >
    4. 选择My user account
    5. 点击确定
  3. 导航到Untrusted Certificates
  4. 检查,如果您在那里找到您的证书
  5. 如果您找到了,请将其从不受信任的证书中删除

【讨论】:

  • 你的说法可能是真的。我大概可以避免被提示。但这能回答问题吗?我错误地回答“从不跑”。我怎样才能让它再次可用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-02
相关资源
最近更新 更多