在源代码管理之后未签名的签名PowerShell脚本

时间:2013-09-19 20:58:47

标签: git powershell version-control code-signing

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

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

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

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

有没有办法保留签名?

2 个答案:

答案 0 :(得分:3)

今天早上再挖一点:

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

正如可以预料的那样,git不会跟踪ea。对于权限等属性,标准建议是使用git钩子。在没有重新签名文件的情况下,我无法找到任何设置数字签名属性的方法。

这留下了3个选项:

  • 将构建服务器和需要运行脚本的任何其他计算机切换到RemoteSigned
  • 每次删除属性时,使用一些shell voodoo,git hook和SignTool重新签名文件。脆弱和hacky。
  • 重做构建/部署过程,以便不需要PowerShell脚本。我处于早期阶段,所以这是我最好的选择。

答案 1 :(得分:2)

与源代码控制相关的东西是修改脚本。例如,如果您使用的是Subversion,则通过$Id扩展$URL$svn:keywords等关键字会导致您的脚本随每个版本而更改。另一种可能性是EOL标记或文件编码(UTF-8与ASCII)被修改。