找到一个带有数字签名的程序的的exe文件,右键属性(注意快捷方式上右键不行)
我们可以看到有数字签名一栏,如果没有签名的就没有该选项卡,那么程序在安装或运行的时候就有可能被阻拦,那么怎么设置数字签名呢?
搜索makecert.exe
的位置
我的是在下面的这个目录下
C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x86
添加到环境变量
如果没有可以下载 Windows SDK for Windows
注意
一定要根据系统下载,否则会安装失败。
Windows 10
Windows 7
https://www.microsoft.com/en-us/download/confirmation.aspx?id=8279
这种方式生成的数字签名,其实意义不大,虽然程序确实是添加了数字签名,但是数字签名是不受信任的状态,最好还是从微软签发。这里生成只是方便和InnoSetup进行测试。
购买的话可以看:https://www.wosign.com/price_code.htm
键入命令:
cd D:\Tools
mkdir cert
cd cert
Makecert -sv xhkj_signature.pvk -r -n "CN=河南星火燎原软件科技有限公司" xhkj_signature.cer
记住这里输入的密码,接下来会用到。
输出Succeeded
即为成功。
键入命令:
Cert2spc xhkj_signature.cer xhkj_signature.spc
输出Succeeded
即为成功。
键入命令:
pvk2pfx -pvk xhkj_signature.pvk -pi 密码 -spc xhkj_signature.spc -pfx xhkj_signature.pfx -f
其中,密码
为刚刚你设置的密码。
什么都不输出,即为成功。
键入命令:
signtool sign /f xhkj_signature.pfx /p 密码 "D:\程序打包\星火智慧校园-测试版\星火智慧校园 v3.1.8.exe"
主要要写exe的全路径。
其中,密码
为刚刚你设置的密码。
键入命令:
signtool timestamp /t http://timestamp.digicert.com "D:\程序打包\星火智慧校园-测试版\星火智慧校园 v3.1.8.exe"
除了上面 Digicert 那个网址,还有如下网址可以作为替换:
工具
=>配置签名工具
设置完如下
mysigntool=signtool.exe sign /v /f D:\Tools\cert\xhkj_signature.pfx /p 证书密码 /t http://timestamp.digicert.com $f
注意 其中证书密码
要改成自己的实际密码
Setup下添加两行配置
[Setup]
SignTool=mysigntool
SignedUninstaller=yes
注意
这样会对打包之后的exe文件以及打包中卸载对应的exe进行数字签名,程序本身的exe是不会签名的。
要想程序本身的exe也签名就要在Source
中对应可执行文件的最后添加signonce
,结果如下:
[Files]
Source: "{#MySourcePath}{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion signonce
Source: "{#MySourcePath}*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs