【问题标题】:Signing powershell scripts?签署powershell脚本?
【发布时间】: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] 始终运行”来添加公钥到上面讨论的警告中,它会将公钥添加到当前用户的“受信任的发布者”,而无需管理员权限。

【问题讨论】:

    标签: powershell certificate


    【解决方案1】:

    如果您从 DigiCert 或赛门铁克(即信誉良好的供应商)等地方获得 EV 证书,则无需在用户系统上安装证书的公钥。 Scott 这样做只是因为他创建了一个自签名证书。

    顺便说一句,将证书安装到构建机器的证书存储区肯定比将证书文件检查到版本控制中要好。 :-) 如果有的话,我们发现它是正确的 PITA,因为我们获得了更新的证书,必须更新我们仍在构建的所有发布分支中的文件。这鼓励我们在构建过程中切换到从证书存储中引用证书。

    【讨论】:

    • 仅供参考,我在上面编辑了我的问题,以更正我认为您的回答“您不必在用户的系统上安装证书公钥”中可能出现的错误
    • 您看到的是PowerShell 功能,它只是询问您是否要信任来自指定供应商的证书。证书不保证签名软件仅来自好人。 :-) 如果您使用 EV 证书签署 setup.exe 或 MSI 文件,然后通过 IE 从 Internet 下载,您会注意到您不会收到有关不受信任的发布者的警告。这是我们获得 EV 证书来签署 PSCX MSI 文件的主要原因。
    猜你喜欢
    • 2011-04-06
    • 1970-01-01
    • 2020-12-04
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 2018-03-25
    相关资源
    最近更新 更多