使用外部CA签署Powershell脚本

时间:2013-07-02 18:14:18

标签: powershell code-signing

我已经通过this帖子阅读了使用证书签署PowerShell脚本的信息。这更多的是使用VeriSign(或类似)的外部证书来编码和保护我在PowerShell脚本中开发的代码。

我只是想知道这是否真的有效。我希望这个过程如下:

  1. 从VeriSign购买代码签名证书
  2. 在我的计算机上安装证书
  3. 签署PowerShell脚本
  4. 在所需设备上执行脚本
  5. 由于此脚本将与外部CA签名,因此Windows无法验证证书,因为Windows信任VeriSign根CA?我的猜测是,因为Windows已经拥有VeriSign的根CA并且信任它,如果我发生在不允许Internet访问的系统上,证书仍然会被验证并允许我运行它?

3 个答案:

答案 0 :(得分:2)

我查看了Win7机器上的cert商店,它有一个由“Verisign Class 3 Code Signing 2010 CA”颁发的Oracle代码签名证书。该CA是中间CA.根CA是“Verisign Class 3 Public Primary Certification AUthority-G5”。根CA位于Windows受信任的根CA存储中。所以我从中收集的是:

  1. 是的,你可以做到 - Oracle做到了

  2. Verisign确实发布了代码签名证书,但它们是使用中间CA签署的。 这意味着Windows必须以某种方式获得此证书。威瑞信 中间证书确实具有“权限信息访问”字段 是Windows可以检索中间证书的一种方式。但是 机器必须能够访问互联网。

    • 另一种方法(如果无法访问互联网)是在用户的计算机上安装中间证书。可以成为安装程序的一部分。我认为这必须是Oracle在我的机器上所做的事情

    • 对于Authenticode EXE,另一种选择(如果机器无法访问) 互联网)是为了确保中间证书嵌入在 EXE中的authenticode签名。但是我不知道是否 Powershell会支持这一点。

  3. 作为另一个确认,您可以致电/发送电子邮件给Verisign以验证他们的支持。

答案 1 :(得分:1)

那应该有用。我从来没有尝试过,但你的逻辑是有道理的。

答案 2 :(得分:0)

在所需设备上执行脚本仍需要将执行策略设置为该设备上的至少AllSigned。除非您将证书添加到设备或域,否则您仍然会怀疑是否要信任此发布者。请参阅here