Codeign Electron App - 如何优雅地切换证书?

时间:2016-10-06 14:58:23

标签: code-signing electron codesign code-signing-certificate electron-builder

我有一个电子应用程序,最初与个人开发人员一起分发证书。

我现在想用我的组织的证书签署该应用程序的下一次更新,但是当我这样做时,现有安装(自动更新时)会抛出错误,导致代码要求不符合。

有没有办法用旧证书和新证书正确签署电子应用程序?我想阻止现有用户被打断。

任何帮助表示赞赏!

由于

1 个答案:

答案 0 :(得分:1)

我们遇到了类似的情况,MacOS的Electron应用程序使用了自动更新,因此我们需要切换到新证书,而无需所有人都手动下载并重新安装该应用程序。自动更新过程需要识别新证书。正确的做法是,如果无法识别新证书,则旧版本将拒绝更新。

我们的策略是:

  • 使用designated requirement用旧证书签名时,查看应用程序的codesign -d -v -r - <path-to-app>(或DR)
  • 在使用新证书签名后查看应用程序的designated requirement
  • 将包含两个证书的组合designated requirement放入electron-builder-requirements.txt文件中
  • 确保您未在​​合并的identifier字符串中包含designated requirement
  • 引用electron-builder-requirements.txt文件中的electron-builder.yaml(在mac:下添加一行,像这样requirements: electron-builder-requirements.txt
  • 发布该应用程序的新版本,该版本使用旧证书签名,但DR包含有关两个证书的信息
  • 等到几乎每个人的桌面上都运行了该版本,其中包括在DR中提到这两个证书
  • 更新内部版本,使其使用新证书,然后删除electron-builder-requirements.txt文件
  • 发布使用新证书签名的应用程序的新版本(不需要任何要求文件,并且它将在DR中仅列出其自己的证书)

如果应用程序的旧版本具有包含有关两个证书的信息的DR,则会允许将其自动更新为使用这两个证书的新版本。

我发现this document about signing code manually对理解“指定要求”很有帮助。