You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用osslsigncode签名Windows安装包后显示发布者未知的问题排查

代码签名后Windows显示“发布者:未知”的问题

我尝试给Windows安装包做代码签名,通过GoDaddy获取证书,用osslsigncode完成签名,工具提示签名成功,但运行安装包时Windows显示发布者:未知。

我的操作步骤:

  1. 用OpenSSL生成证书请求:
    openssl req -new -nodes -keyout mycert.key -out mycert.csr -newkey rsa:2048
    
  2. 将CSR提交给GoDaddy签名,得到mycert.pem文件。
  3. 把mycert.pem和证书链文件certchain.pem合并为combinedcert.pem。
  4. 生成PKCS12格式文件:
    openssl pkcs12 -export -in combinedcert.pem -inkey mycert.key > mycert.p12
    
  5. 使用osslsigncode签名安装包:
    osslsigncode sign -pkcs12 mycert.p12 -askpass -n "My Software" -i https://mycompanywebsite.com -h sha2 -t http://timestamp.digicert.com -in windows-installer-unsigned.exe -out windows-installer-signed.exe
    

    Succeeded

  6. 验证签名:
    osslsigncode verify -in windows-installer-signed.exe
    

    ... Message digest algorithm : SHA256
    .
    Signature verification: ok
    etc.
    Succeeded

明明签名验证通过,为什么Windows还是显示发布者未知?


可能的原因及解决方法

1. 证书链不完整或顺序错误

Windows需要完整的证书链(实体证书、中间证书、根证书)才能识别发布者,且合并顺序必须是实体证书在前,中间证书在后,根证书最后(部分根证书Windows已预装,可省略,但中间证书必须包含)。

GoDaddy的代码签名证书通常需要1-2层中间证书,比如Go Daddy Secure Certificate Authority - G2、Go Daddy Root Certificate Authority - G2。如果certchain.pem缺少中间证书,Windows无法追溯到受信任根,就会显示发布者未知。

重新合并证书的正确命令示例:

cat mycert.pem intermediate1.pem intermediate2.pem root.pem > combinedcert.pem

2. PKCS12文件未包含完整证书链

生成PKCS12时需确保导入完整证书链,可通过以下命令检查PKCS12内容:

openssl pkcs12 -info -in mycert.p12

若输出仅显示你的实体证书,需重新生成PKCS12,确保combinedcert.pem是完整链文件。

3. 时间戳服务器或哈希算法问题

更换为GoDaddy官方时间戳服务器http://tsa.starfieldtech.com,同时明确指定哈希算法为sha256(避免sha2的歧义),重新签名:

osslsigncode sign -pkcs12 mycert.p12 -askpass -n "My Software" -i https://mycompanywebsite.com -h sha256 -t http://tsa.starfieldtech.com -in windows-installer-unsigned.exe -out windows-installer-signed.exe

4. 证书类型错误

确认从GoDaddy获取的是代码签名证书(Code Signing Certificate),而非SSL服务器证书。SSL证书仅用于网站加密,无法被Windows识别为可执行文件的发布者凭证,若类型错误需重新申请代码签名证书。

5. Windows证书信任问题

若证书链中的中间/根证书未被Windows信任,需手动导入:

  • 打开certmgr.msc
  • 进入「中级证书颁发机构」→「证书」,右键导入中间证书文件
  • 再检查安装包签名详情

6. osslsigncode版本兼容性

旧版本osslsigncode可能存在Windows兼容问题,升级至最新版本后重新签名。

另外,可通过Windows右键安装包→属性→数字签名,查看签名详情,里面会明确提示证书链是否完整、是否受信任,帮助快速定位问题。


内容的提问来源于stack exchange,提问作者springcorn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 07:31:02