Windows平台Electron自动更新失败:代码签名问题排查
问题分析与解决方案
报错信息
Electron auto-update error: Error: New version 4.0.0 is not signed by the application owner: publisherNames: Developer ID Application: OUR COMPANY NAME, LLC (123F2ASF2), raw info: {
.....
"Status": 1,
"StatusMessage": "A certificate chain could not be built to a trusted root authority"
}
可能的原因
- 证书链不完整:你使用的
code-sign-certificate.p12可能仅包含开发者证书,缺少中间证书或根证书。electron-updater验证签名时,必须依赖完整的证书链才能确认发布者身份的合法性。 - 证书路径或读取权限问题:构建脚本中
CSC_LINK的相对路径可能存在读取问题,或者构建环境没有权限访问该证书文件,导致签名时无法加载完整证书链。 - electron-builder版本缺陷:v23.0.2版本的electron-builder在证书链处理逻辑上可能存在已知bug,部分场景下无法正确识别完整的证书链。
- 跨平台签名配置问题:同一.p12证书未必同时满足Windows和Mac的签名要求,跨平台混用可能导致某一平台的证书链验证失败。
- 客户端系统根证书缺失:用户设备的系统根证书存储中,缺少对应证书链的根证书,导致无法完成信任链的构建。
对应解决步骤
- 重新导出完整证书链:从开发者后台重新导出.p12证书,导出时务必勾选“包含密钥链中所有证书”选项,确保文件包含开发者证书、中间证书和根证书。
- 验证证书完整性:用openssl命令检查证书内容,确认包含完整链:
查看输出是否存在多个证书条目。openssl pkcs12 -in code-sign-certificate.p12 -info -nodes - 修正构建脚本路径:将
CSC_LINK改为绝对路径,避免相对路径带来的读取异常,比如/Users/xxx/code-sign-certificate.p12(Mac)或C:\xxx\code-sign-certificate.p12(Windows)。 - 单独构建测试:拆分Windows和Mac的构建命令,分别执行,确保每个平台的签名流程独立且正确。
- 更新客户端根证书:指导用户更新系统根证书列表,Mac可通过「系统设置-通用-证书信任设置」操作,Windows可通过「控制面板-证书」导入对应的根证书。
内容的提问来源于stack exchange,提问作者Alec
相关产品推荐
相关产品推荐

