Windows自签名

0.概述必看

// ! 应用程序在启动时,直接安装自签名证书会违反某些国家的数据保护法;因此,后续在安装自签名前要给用户明确的安全风险提示,或使用CA机构的EV证书来签名程序;
// ! 例如弹框如下提示:
// title: '安装信任证书',
// message: `本应用需要安装一个自签名证书,以保证通信安全。\n\n该证书将被安装到“受信任根证书颁发机构”中,您可以在“证书管理器”查看并删除它。\n\n是否继续?`,
// buttons: ['继续安装', '取消'],

// ! 尽管安装了自签名证书,下载被自签名证书签名的软件时,浏览器仍然会提示“危险”,并需要用户手动“保留”;同时,在启动内网穿透时,杀毒软件会弹出严重的安全警示内容,需要用户手动信任。
// ! 浏览器在下载软件时,有着比操作系统更严格的安全管控,被下载的应用必须是被知名CA机构的证书签名的,否则浏览都会给出安全警示。
// ! 综上,使用自签名证书,仅仅只是避免软件被系统或杀毒软件直接删掉,其它并无益处;

1.生成自签名证书

如下图,运行生成自签名证书的脚本,并按提示输入证书名称和密码;证书名称必须为英文,且不能有特殊字符;

生成自签名证书脚本的下载地址:https://static.sidoc.cn/other/self-signed/自签名脚本和证书/Generate-CodeSigning-Cert.ps1


2. 确认自签名证书可用于代码签名

按快捷键 Win + R 运行 certmgr.msc,打开证书管理器;按下图指引检查



3. 配置electron-build,以使用自签名证书打包windows程序

在项目根目录下创建自定义文件夹certificate,并将.pfx证书放入其中;然后在 electron-builder 配置文件中配置证书的路径和密码,如下图所示:


4.确认打包后的程序是否被签名

a. 在数字签名一栏中,有嵌入式签名,并同时包含SHA1和SHA256两种摘要算法(符合微软推荐的双重签名规范)


b. 有副署时间戳,此时间戳证明代码的签名行为发生在证书有效期内;这样一来就算证书过期,该exe程序上的签名仍然有效;


5. 查看应用程序的签名信息

## 以 QQPCDownload_home_310056.exe 为例,查看其签名信息;将以下命令输出的签名信息提交给ChatGPT,可得到详细的签名信息及解读; 
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64\signtool.exe"  verify /pa /v QQPCDownload_home_310056.exe


6. 导出/安装cer证书

以上生成的是包含私钥的 .pfx 证书,.pfx证书用于签名应用程序,通常保存在证书管理器的“个人”证书存储中。用户要信任被 .pfx 签名的应用程序,就要安装 .cer 证书。.cer证书仅包含公钥,用于信用被签名的应用程序;.cer证书通常安装到“受信任的根证书颁发机构”;.pfx证书必须妥善保管,不可泄露。具体详见:Windows自签名 - 导出/安装cer证书



举报

© 著作权归作者所有


1