【学习笔记】如何给软件加数字签名
一、问题的提出
《GB/T 36572-2018 电力监控系统网络安全防护导则》明确提出“重要电力监控系统关键控制软件应采用基于可信计算的强制版本管理措施,操作系统和监控软件的全部可执行代码,在开发或升级后应由生产厂商采用数字证书对其签名并送检,通过检测的控制软件程序应由检测机构用其数字证书对其签名,生产控制大区应禁止未包含生产厂商和检测机构签名版本的可执行代码启动运行。”
二、Windows系统如何给软件进行签名
1、软件准备
(1)makecert.exe
(2)Signcode.exe
2、创建X.509 证书
makecert /sv "D:\\privatekey.pvk" /n "CN=授予人名称,E=邮箱,O=组织名" -r D:\\certfile.cer
注: privatekey.pvk密钥文件,certfile.cer证书文件
回车后会提示输入秘钥,输入密码及确认密码:yourpassword,点击ok
验证秘钥,输入上一步设置的秘钥yourpassword,证书创建成功
3、导入证书
按下Ctrl+M,会弹出添加或删除管理单元,找到“证书”
然后点击添加,直接点完成。
再点击“所有任务--导入”,然后第一个直接确定,第二个选择你的证书的路径。
选择之前生成的证书 bell.cer
一直下一步,
4. 给指定文件签名
运行signcode
从文件选择--- 选择 cer证书
选择私钥,输入私钥密码
添加描述
时间戳服务器:
Digicert: http://timestamp.digicert.com
Symantec: http://sha256timestamp.ws.symantec.com/sha256/
Comodo: http://timestamp.comodoca.com
Starfield: http://tsa.starfieldtech.com
GlobalSign: http://timestamp.globalsign.com/scripts/timestamp.dll
Certum: http://time.certum.pl
完成签名,查看“数字签名”的信息。
附上工具下载链接:
链接: https://pan.baidu.com/s/1qJ4c1AZ7nocLOKvp9iTdFw?pwd=7zwq 提取码: 7zwq
三、linux系统如何给软件进行签名
以Ubuntu为例:
1. 安装签名工具GPG
要了解什么是GPG,就要先了解PGP。
1991年,程序员Phil Zimmermann为了避开政府监视,开发了加密软件PGP。这个软件非常好用,迅速流传开来,成了许多程序员的必备工具。但是,它是商业软件,不能自由使用。所以,自由软件基金会决定,开发一个PGP的替代品,取名为GnuPG。这就是GPG的由来。
sudo apt-get install gnupg
2. GPG密钥生成
使用--full-generate-key参数生成自己的密钥
gpg --gen-key
依次选择key类型->key长度->有效期->key识别信息->随机操作
3.查看公钥和私钥
4. 导出公钥到文件中:
gpg -a -o public-file.key --export D8A94AEC
5. 导出私钥到文件中
gpg -a -o private-file.key --export-secret-keys D8A94AEC
6.给指定文件签名,使用--sign参数;验证签名,使用--verify参数。