背景
在本地编译管家软件,所有的二进制文件是没有数字签名的,那么写了签名校验的代码如何进行验证呢? 两种方法:
- 通过配置工程对联调分支出Release版本的包
- 自己生成一个测试证书对二进制进行签名,然后验证签名校验的代码是否符合预期
做法
# 1. 创建自签名证书, 这里生成一个GCY.cer的证书, 注意目录需要自己先创建好
# -r 表示这是一个自我签名的证书(根证书)
# -n 参数为证书名称,
# -sv 参数为保存私钥的文件
makecert.exe -r -n "CN=GCY" -sv "F:TesterGCY.pvk" "F:TesterGCY.cer"
# 将私钥和证书合并成.pfx证书文件
pvk2pfx.exe -pvk "F:TesterGCY.pvk" -spc "F:TesterGCY.cer" -pfx "F:TesterGCY.pfx"
# 通过证书文件对二进制文件进行签名
signtool.exe sign /v /fd SHA256 /f "F:TesterTester.pfx" .output_tempin_x64ReleasepluginsPerfWndMonPlugin_x86.dll
signtool.exe sign /as /v /fd SHA256 /f "F:TesterGCY.pfx" .output_tempin_x64ReleasepluginsPerfWndMonPlugin_x86.dll
参考:
https://docs.microsoft.com/zh-cn/windows-hardware/drivers/install/test-signing
http://www.coderjie.com/blog/9fa760e0bd2c11e6841d00163e0c0e36
http://www.coderjie.com/blog/7694cf1cbc2d11e6841d00163e0c0e36