windows应用签名相关问题

目录

windows签名资料

windows程序签名原理

签名机制与原理

软件厂商签名流程

软件签名完整流程

windows机器验证软件签名流程

浏览器验证

windows验证

windows签名工具


windows签名资料

签名相关资料:

数字签名和数字证书究竟是什么?

白话数字签名系列

windwos代码数字签名基本原理

注意事项:

  1. 从证书机构拿到证书一定要记得备份,因为证书完全依赖私钥,如果电脑的私钥没有了,或者重装系统了,就必须要重新申请一个证书。
  2. 备份证书注意导出pfx证书,带有私钥的。
  3. 只有cer证书是不可以给程序做签名的。
  4. 在已经有此证书的机器上,导入时如果没有选中“允许导出含私钥的证书”,这一选项。在导出时需要使用工具才能将私钥一起导出。https://www.digicert.com/util/

windows程序签名原理

签名机制与原理

  1. RSA算法:通过公钥与私钥来判断私钥的合法。
    公钥与私钥具有对称性,既可以通过私钥加密,公钥解密,以此来论证私钥持有者的合法身份。也可以通过公钥加密,私钥解密,来对私钥持有者发信息而不被泄露。

  2. 由于在交换公钥时免不了遭遇中间人劫持,故需要第三方权威机构的认证,例如赛门铁克。

软件厂商签名流程

  1. 证书的颁发:厂商将私钥和证书请求文件(csr)发给wosign/symantec,wosign/symantec确认后将公钥发给软件厂商。
  2. 厂商用签名工具 signcode.exe/signtool.exe/诚天信威 给软件签名:1. 生成hash 2. 私钥加密hash产生摘要 3. 将其与认证公钥和代码一同打包发布。
  3. 用户下载程序并验证,验证后使用。(具体参考最后)

软件签名完整流程

windows应用签名相关问题


windows机器验证软件签名流程

  1. 浏览器验证

    1. 浏览器从签名代码中读出公钥 和 Hash表摘要

    2. 与windows 受信任的根证书比较,检查公钥证书的合法性。

    3. 验证通过,即可确认下载此程序的真是来源

  2. windows验证

     
    1. 系统UAC功能开启(用户账户控制功能,默认开启,windows vista之后引入的一个机制)
    2. 程序启动时,去CA校验程序签名
      1. 使用同样算法对软件产生Hash表
      2. 使用公钥产生一个Hash表认证摘要
      3. 比较程序的Hash表认证摘要 与 自己生成的Hash表认证摘要是否一致。
    3. 程序执行

windows签名工具

签名工具下载,二者选一:

  1. 诚天信威,下载链接:http://down-ww3.newasp.net/pcdown/soft/soft1/itrussigntool.exe (推荐)
    或者使用
  2. windows SDK 8.1/10 以上自带签名工具,signtool.exe ,只安装windowsSDK 即可。(占用空间比较大)

vs_Community.exe(自行去微软官网下载)


诚天信威使用:

  1. 在“签名规则”页,新建签名规则,在SHA256中选择使用的证书。(前提是已将证书成功导入)添加时间戳,时间戳选择Symantec,其他默认规则即可。
  2. 在“代码签名”页,添加需要签名的文件。
  3. 点击“数字签名”,选择“应用签名”
     

signtool.exe的使用:

  1. 使用此脚本
  2. 比对脚本中signtool.exe目录,脚本中目录是windows SDK8.1的目录,如果安装了SDK10的话,改一下目录。
  3. 将需要签名程序拖动到此脚本中即可。
    sign.bat