对exe文件进行数字签名

版权所有,转载请注明出处:http://guangboo.org/2013/05/05/digital-signature-for-exe-file

在之前的文章《py2exe+inno setup集成打包python程序》中,我们编写了python脚本,使得可以一键对python编写的windows程序进行打包,并编译成exe可执行文件,现在我们在此基础上添加对exe文件进行数字签名的脚本。

首先,在对exe文件进行数字签名时,当然要有一个pfx密钥文件,如果没有,可以使用windows sdk提供的工具创建一个,如下脚本:

makecert.exe -sv c:\mykey.pvk -n "CN=Comapy Name" c:\myCert.cer
cert2spc.exe c:\mycert.cer c:\mycert.spc
pvk2pfx -pvk c:\mykey.pvk -pi password -spc c:\mycert.spc -pfx c:\mycert.pfx -po password

那么有力pfx密钥文件,对exe进行签名的脚本也就变得非常简单,只需一段脚本即可:

signTool sign /f c:\mycert.pfx /p password /v c:\yourexefile.exe

在我的一个项目中,该项目是使用python+wxPython编写的一个windows桌面程序,需要对其进行打包,并编译成exe安装文件,我编写了一个脚本,可以一键完成这些工作。那么因此我也可以将数据签名的工作也放在这个脚本中完成。首先编写一个进行数据签名的方法,如下:

def signtool(filename):
    import subprocess
    signtool_exe = r'C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\signtool.exe'
    pfx_file = 'c:\\mycert.pfx'
    cmd = '%s sign /f %s /p password /v %s' % (signtool_exe, pfx_file, filename)
    print cmd
    proc = subprocess.Popen(cmd)
    proc.wait()

为了集成到原来的脚本,需要在build_installer类的run方法中添加对signtool方法的调用,分别对主程序的exe文件和安装包文件进行签名:

dist_exe = 'myexefile.exe'
signtool(dist_exe)
signtool(script.get_setup_filename())

只有将上面的代码添加到run方法后面就可以了。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值