【问题标题】:How to sign code automatically without installing anything on any OS?如何在不在任何操作系统上安装任何东西的情况下自动签署代码?
【发布时间】:2019-04-15 12:45:22
【问题描述】:

我们设置了一个流程来使用 Microsoft 的 SIGNTOOL 手动签署我们的代码。我们使用 NSIS 生成安装包,是时候开始自动化代码签名过程以及 NSIS 脚本的一部分了。

我们不使用 Windows SDK 进行开发,因此不希望我们的开发人员需要这样做。我们也有一些人使用 Mac 和 Linux;任何人都可以制作安装程序,安装程序制造商有望自动签署代码。我们正在使用 PFX 文件对代码进行签名。

所以基本上我想弄清楚,“我怎样才能在不安装任何东西的情况下签署代码,除了一个小文件,这样它就可以在所有三个主要操作系统上运行”。使用 NSIS 进行自动化已得到处理,但在没有任何操作系统的 Windows SDK 的情况下执行此操作则不是。

【问题讨论】:

  • 现代代码签名过程通常不涉及物理加密狗吗?
  • Mozilla 有一些使用 Mono 在 Linux/Mac 上签署 exe 的说明。我没试过这个:developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/…
  • 您并不想让所有开发人员都可以访问您的代码签名证书。即使您足够信任它们,也总是存在恶意软件窃取您的证书的风险。解决方案:设置一个构建服务器(例如 Jenkins),在您的版本构建后运行代码签名任务。

标签: winapi certificate nsis code-signing signtool


【解决方案1】:

无论如何,代码签名在所有这些操作系统中都是不同的过程,因此根据定义没有共同点。您必须使用 SDK 提供的工具。唯一常见的可能是证书,这在 iOS/Android/Windows 中也有所不同,因为 MS/Google/Apple 希望您使用他们自己的根证书。

也就是说,您不一定需要 SDK 来签署 Windows 中的文件,有一个 Signing API

【讨论】:

    【解决方案2】:

    安装 Windows SDK 后,Signtool 可以复制到任何地方。只需从“C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\”或等效文件中复制 signtool.exe,并将其作为实用程序包含在您的安装制造商文件中。

    然后,NSIS 脚本可以在 Windows 上运行时使用此 exe 自动签署安装程序。在 Mac 上操作时,需要切换以使用 Mac 固有的协同设计工具。

    卸载程序的签名可能有点复杂,因为它通常在安装时才生成;仅供参考:https://nsis.sourceforge.io/Signing_an_Uninstaller

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-06
      • 1970-01-01
      • 1970-01-01
      • 2013-05-14
      • 2021-06-23
      • 2019-02-28
      • 2012-09-06
      相关资源
      最近更新 更多