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



配置

  "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



举报

© 著作权归作者所有


1