签署powershell脚本?

时间:2014-01-28 17:30:11

标签: powershell certificate

我们正在首次签署PowerShell脚本,并且只是想确保我们正确地完成所有操作(最佳实践)。所以我们刚从委托申请了EV authenticode代码签名证书。

因此,在我们在机器上安装证书(个人证书)并签署我们需要签署的任何脚本之后,我们将导出证书(没有私钥)并将证书推送到" Trusted Publishers&# 34;容器通过组策略。说实话,我不确定这一步是否必要,但我有点使用Scott Hanselman's blog post作为模板。 Scott正在使用自签名证书进行此操作,因此我不确定是否需要此步骤,因为证书将来自CA但我不希望用户第一次收到错误消息他们试图运行已签名的脚本。

我们仍然正在研究我们将安装证书的机器,但看起来它可能是我们的TFS服务器(已经严格控制)。

一切看起来都正确吗?是否需要导出证书(没有私钥)并将其安装在"受信任的根证书颁发机构"每个电脑的容器,因为它不是自签名证书

编辑:我想对Keith Hill接受的答案进行观察/纠正。我不认为他关于不必在用户PC上安装证书的声明是正确的(除非您希望他们在第一次尝试运行您签名的脚本时收到警告消息)。我们刚刚委托我们获得EV Authenticode证书并尝试运行证书,这是我们第一次收到以下警告消息"您是否要从这个不受信任的发布者运行软件?"现在他们可以选择' [A] Always Run'这实际上会将公钥添加到证书库,但如果您从未希望它们收到此警告消息,那么您应该将公钥添加到“受信任的发布者”#34;手动或通过组策略(解决问题)。

如果你仔细想想,这是有道理的。如果您没有必要将公钥添加到" Trusted Publishers"然后,有权访问代码签名证书的任何人(您的组织外部)都可以签署一个PowerShell脚本,该脚本可以由执行策略设置为“AllSigned”的世界运行。我在测试中发现的很糟糕,你可以通过回答' [A] Always Run'来添加公钥。上面讨论的警告,它会将公钥添加到当前用户的受信任的发布者'没有管理员权限。

1 个答案:

答案 0 :(得分:2)

如果您从DigiCert或Symantec(即信誉良好的供应商)这样的地方获得了EV证书,那么您就不必在用户的系统上安装证书的公钥。斯科特这样做只是因为他创建了一个自签名的证书。

BTW将证书安装到构建机器的证书库中肯定比将证书文件检入版本控制更好。 :-)如果有的话,我们发现它是一个正确的PITA,当我们得到一个更新的证书,必须更新我们仍然构建的所有发布分支中的文件。这鼓励我们在构建过程中切换到引用证书库中的证书。