【问题标题】:Signed powershell script not signed after source control源代码控制后未签名的已签名 powershell 脚本
【发布时间】:2013-09-20 21:09:36
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: git powershell version-control code-signing


    【解决方案1】:

    今天早上再深入研究一下:

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

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

    剩下 3 个选项:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 好吧,即使恢复到文件的已提交、签名版本(EOL 标记相同)也会出现问题。根本原因是某些签名信息存储为扩展属性,git 不会跟踪。
      猜你喜欢
      • 1970-01-01
      • 2018-04-11
      • 2013-05-06
      • 1970-01-01
      • 2018-11-21
      • 1970-01-01
      • 2022-11-20
      • 2018-03-25
      • 2010-11-24
      相关资源
      最近更新 更多