3

我正在尝试设置一些 powershell 构建脚本。我有一个自签名证书,我可以用它来签署脚本并让它运行AllSigned。问题是,这不会跨越我们的 scm (git)。

每当我尝试克隆和运行脚本,或者更改它并恢复时,我都会收到文件未签名的错误。

File <> cannot be loaded. The file <> is not digitally signed. The script will not execute on the system. ...

如果我重新签署脚本,签名块会发生变化,我可以再次运行它。

有什么办法可以保存签名吗?

4

2 回答 2

3

今天早上再深入一点:

除了附加到实际文件的签名块之外,还有作为文件扩展属性存储的签名信息。

正如所料,git 不跟踪 ea。对于权限等属性,标准建议是使用 git 挂钩。在不重新签署文件的情况下,我无法找到任何方法来设置数字签名的属性。

这留下了3个选项:

  • 将构建服务器和任何其他需要运行脚本的计算机切换到RemoteSigned.
  • 每次删除属性时,使用一些 shell voodoo、git 钩子和SignTool重新签署文件。脆弱而老套。
  • 重新构建/部署过程,以便不需要 powershell 脚本。我处于早期阶段,所以这是我最好的选择。
于 2013-09-20T13:09:36.790 回答
2

与您的源代码管理相关的内容是修改脚本。例如,如果您使用的是 Subversion,关键字 like$Id$URL$via的扩展svn:keywords将导致您的脚本随着每个版本的变化而变化。另一种可能性是修改了 EOL 标记或文件编码(UTF-8 与 ASCII)。

于 2013-09-20T00:05:55.427 回答