Windows打包签名


签名概述

代码签名需要使用SSL证书(代码签名证书),申请SSL证书时需要审核、验证开发者的身份信息,例如身份证、驾驶证之类的。微软将颁发SSL证书的过程授权给了多家CA机构,这些机构会代替微软审核开发者的身份信息,并为其颁发SSL证书。经过SSL证书签名的程序会被操作系统和杀毒软件信任,因为拥有SSL证书的开发者,其身份都是经过验证的。也正是因为CA机构需要花费人力、物力去审核开发者的身份信息,因此SSL证书不会有免费的。

注:以上提到的SSL证书是代码签名证书,其主要作用是验证开发的身份,与域名SSL证书是不一样的;域名SSL证书更多的是加密网络数据,因此并不需要耗费太大精力去验证开发的身份信息。最后,如果CA机构滥发SSL证书,或没有严格审核开发者的身份信息,则可能会失去颁发SSL证书的权力。说白了,操作系统之所以会信任开发者发布的程序,是因为有CA为开发者做担保。


能够对exe程序代码进行签名的证书目前有两种:

普通证书:适用Win7,但在Win8和Win10上会有安全提示;

EV证书(推荐):适用于所有Windows平台,一般都是使用这个;

价格参见:https://www.trustauth.cn/code-signing


各种签名方式的区别:

无签名的EXE程序:可能会被杀毒软件或系统直接删除;

自签名的EXE程序:不会被直接删除,但安装时会有“未知开发者”的警告;

OV签名的EXE程序:安装会有警告,需要用户点击“信任”;“信任”的用户多了,警告就会消除,然后会达到与EV同样的效果;但每次签名的EXE程序都要在安装初期通过“信任”来积累信誉,从而消除警告;

EV签名的EXE程序:无任何警告、系统完全信任,可直接安装;但价格是OV的3倍左右。


项目初期推荐使用OV证书签名,因为其成本更低;OV签名的exe程序,需要几十到上百次的被下载,且持续几天到几周时间就能消除警告;

若用户是通过edge浏览器下载安装exe,则信誉积累的会更快,能更快消除警告。

若通过 Microsoft Store、GitHub Releases、SourceForge 等有声誉的平台发布exe,也能更容易、更快的消除警告。

注:2023年6月起微软要求软件都使用EV签名,自此OV签名的EXE被视为未签名;



配置

  "win": {
   "icon": "build/icons/icon.ico",
   "target": [
    {
     "target": "nsis",
     "arch": [
      "x64",
      "ia32"
     ]
    }
   ],
   "verifyUpdateCodeSignature": false,
   "signingHashAlgorithms": [
    "sha256",
    "sha1"
   ],
   "signDlls": true,
   "rfc3161TimeStampServer": "http://timestamp.digicert.com",
   "certificateFile": "xxx.pfx",
   "certificatePassword": "xxxxxx"
  },     

主要参数说明:

'arch:代表需要打包的位数,win64代表打包64位的,ia32代表打包32位的,最好分开打包,因为一起打包的话最后出来的包是正常开发包的两倍。

'signingHashAlgorithms':代表加密的方式,一般分为'sha256'与'sha1'两种方式,都进行加密即可。

'rfc3161TimeStampServer':代表时间戳,一般使用'http://timestamp.digicert.com'来进行时间戳的覆盖即可

'certificateFile':证书的地址,必须位pfx格式(如何导出会在第二步的时候进行讲解)

'certificatePassword':证书的私钥密码,这个在配置证书的时候进行设置(第二步进行讲解)




详见:https://segmentfault.com/a/1190000011908324

https://blog.csdn.net/WoTrusCA/article/details/109736538



举报

© 著作权归作者所有


0