【发布时间】:2014-01-28 17:30:10
【问题描述】:
我们正在第一次签署 powershell 脚本,只是想确保我们做的一切都是正确的(最佳实践)。所以我们只是向委托申请了一个 EV 验证码代码签名证书。
因此,在我们在机器上安装证书(个人证书)并签署我们需要签署的任何脚本之后,我们将导出证书(不带私钥)并通过组将证书推送到“受信任的发布者”容器中政策。老实说,我不确定这一步是必需的,但我有点使用Scott Hanselman's blog post 作为模板。 Scott 使用自签名证书执行此操作,因此我不确定是否需要此步骤,因为证书将来自 CA,但我不希望用户在第一次尝试运行时收到错误消息一个签名的脚本。
我们仍在研究将在哪台机器上安装证书,但看起来它可能是我们的 TFS 服务器(已经受到严格控制)。
那么一切看起来都正确吗?是否需要导出证书(没有私钥)并将其安装在每台电脑的“受信任的根证书权限”容器中,因为它不是自签名证书
编辑:我想对 Keith Hill 接受的答案进行观察/更正。我认为他关于不必在用户电脑上安装证书的声明是不正确的(除非您希望他们在第一次尝试运行您签名的脚本时收到警告消息)。我们刚刚从 entrust 获得了我们的 EV Authenticode 证书,并在第一次尝试运行该证书时收到以下警告消息“你想从这个不受信任的发布者运行软件吗?”现在他们可以选择“[A] Always Run”,这实际上会将公钥添加到证书存储区,但如果您不希望他们收到此警告消息,那么您应该手动或通过将公钥添加到“受信任的发布者”组策略(解决问题)。
如果你仔细想想,这是有道理的。如果您不必将您的公钥添加到“受信任的发布者”,那么有权访问代码签名证书的任何人(您的组织之外)都可以签署一个 powershell 脚本,该脚本可以由执行策略设置为的世界运行'全签'。我在测试中发现的不好的是,您可以通过回答“[A] 始终运行”来添加公钥到上面讨论的警告中,它会将公钥添加到当前用户的“受信任的发布者”,而无需管理员权限。
【问题讨论】: