前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Windows桌面端开发设置签名证书及Innosetup打包自动签名

Windows桌面端开发设置签名证书及Innosetup打包自动签名

作者头像
码客说
发布2022-02-10 12:40:56
2.7K0
发布2022-02-10 12:40:56
举报
文章被收录于专栏:码客码客

概述

找到一个带有数字签名的程序的的exe文件,右键属性(注意快捷方式上右键不行)

image-20220208091408477
image-20220208091408477

我们可以看到有数字签名一栏,如果没有签名的就没有该选项卡,那么程序在安装或运行的时候就有可能被阻拦,那么怎么设置数字签名呢?

搜索makecert.exe的位置

我的是在下面的这个目录下

C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x86

添加到环境变量

如果没有可以下载 Windows SDK for Windows

注意

一定要根据系统下载,否则会安装失败。

Windows 10

https://download.microsoft.com/download/E/1/F/E1F1E61E-F3C6-4420-A916-FB7C47FBC89E/standalonesdk/sdksetup.exe

Windows 7

https://www.microsoft.com/en-us/download/confirmation.aspx?id=8279

步骤

这种方式生成的数字签名,其实意义不大,虽然程序确实是添加了数字签名,但是数字签名是不受信任的状态,最好还是从微软签发。这里生成只是方便和InnoSetup进行测试。

购买的话可以看:https://www.wosign.com/price_code.htm

image-20220208164714525
image-20220208164714525

创建 X.509 证书

键入命令:

代码语言:javascript
复制
cd D:\Tools
mkdir cert
cd cert
Makecert -sv xhkj_signature.pvk -r -n "CN=河南星火燎原软件科技有限公司" xhkj_signature.cer

记住这里输入的密码,接下来会用到。

输出Succeeded即为成功。

创建发行者证书

键入命令:

代码语言:javascript
复制
Cert2spc xhkj_signature.cer xhkj_signature.spc

输出Succeeded即为成功。

导出pfx证书文件

键入命令:

代码语言:javascript
复制
pvk2pfx -pvk xhkj_signature.pvk -pi 密码 -spc xhkj_signature.spc -pfx xhkj_signature.pfx -f

其中,密码为刚刚你设置的密码。

什么都不输出,即为成功。

软件签名

键入命令:

代码语言:javascript
复制
signtool sign /f xhkj_signature.pfx /p 密码 "D:\程序打包\星火智慧校园-测试版\星火智慧校园 v3.1.8.exe"

主要要写exe的全路径。

其中,密码为刚刚你设置的密码。

加盖时间戳

键入命令:

代码语言:javascript
复制
signtool timestamp /t http://timestamp.digicert.com "D:\程序打包\星火智慧校园-测试版\星火智慧校园 v3.1.8.exe"

除了上面 Digicert 那个网址,还有如下网址可以作为替换:

Innosetup自动签名

工具=>配置签名工具 设置完如下

代码语言:javascript
复制
mysigntool=signtool.exe sign /v  /f D:\Tools\cert\xhkj_signature.pfx /p 证书密码 /t http://timestamp.digicert.com $f

注意 其中证书密码要改成自己的实际密码

Setup下添加两行配置

代码语言:javascript
复制
[Setup]
SignTool=mysigntool
SignedUninstaller=yes

注意

这样会对打包之后的exe文件以及打包中卸载对应的exe进行数字签名,程序本身的exe是不会签名的。

要想程序本身的exe也签名就要在Source中对应可执行文件的最后添加signonce,结果如下:

代码语言:javascript
复制
[Files]
Source: "{#MySourcePath}{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion signonce
Source: "{#MySourcePath}*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-02-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 步骤
    • 创建 X.509 证书
      • 创建发行者证书
        • 导出pfx证书文件
          • 软件签名
            • 加盖时间戳
            • Innosetup自动签名
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档