使用SHA1、SHA2双证书进行微软数字签名
微软是第一个宣布了SHA-1弃用计划,在2016年之后Windows和IE将不再信任SHA-1证书。正好我们公司的数字签名也到期了,索性就重新申请了sha256和sha1的新数字证书,用来给产品签名。
这时就要把用了多年的自动签名脚本改为支持sha256和sha1双证书的格式。公司原使用signcode.exe和SignTool.exe两种方式进行签名,其中signcode配合另外找的signcode-pwd.exe工具和pvk+spc文件可以不需要密码即可实现签名(不在此文中详诉),SignTool是直接用pfx证书+密码来进行签名。于是分别寻找两种方式:
查阅signcode的文档发现,signcode的命令行-a是用来指定数字签名的签名算法。试验了下,只支持sha1和md5,不支持sha256。所以此方法废弃。
再查阅SignTool的文档,支持/fd来指定签名,试了md5、sha1、sha256均支持,所以直接在原来签名代码上添加个/sa /fd sha256后如下:
SignTool.exe sign /v /as /ac /f D:\test\sign\sign_sha256\xxx.pfx /p xxxx /t http://timestamp.wosign.com/timestamp /fd sha256 "D:\test_double_signed.exe"
一开始出现/as选项不识别的问题,经研究是使用的SignTool版本为6.0,因为自己机器上装了win10的sdk,于是使用了最新的C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe。ps:貌似只有win10带的才支持/as选项,但nnd这货依赖的ncrypt.dll,bcrypt.dll等dll只在vista及以上系统有,所以还在用xp的同学就不要用了。如果想拷贝到其它系统上使用,同时拷贝同目录下的:
appxpackaging.dll
appxsip.dll
mssign32.dll
opcservices.dll
signtool.exe
signtool.exe.manifest
wintrust.dll
wintrust.dll.ini
Microsoft.Windows.Build.Appx.AppxPackaging.dll.manifest
Microsoft.Windows.Build.Appx.AppxSip.dll.manifest
Microsoft.Windows.Build.Appx.OpcServices.dll.manifest
Microsoft.Windows.Build.Signing.mssign32.dll.manifest
Microsoft.Windows.Build.Signing.wintrust.dll.manifest
再试验出现以下错误:
SignTool Error:The /t option is incompatible with the /as option.
SignTool Error: Specify the RFC 3161 timestamp server's URL instead with /tr.
尝试把/t换成/tr,但是出现错误:
SignTool Error: The specified timestamp server either could not be reached orreturned an invalid response.
经过一番努力后,将http://timestamp.wosign.com/timestamp替换成http://timestamp.wosign.com/rfc3161解决问题。http://timestamp.wosign.com/rfc3161是较新的时间戳服务格式,兼容/t和/tr,而http://timestamp.wosign.com/timestamp只适用于/t。最后将两个签名指令放到批处理文件里:
set sign_folder=%~dp0%%sign_folder%\SignTool.exe sign /v /f %sign_folder%example.pfx /p examplepassword /t http://timestamp.verisign.com/scripts/timestamp.dll /fd sha1 "%1"%sign_folder%\SignTool.exe sign /v /as /f %sign_folder%example.pfx /p examplepassword /tr http://timestamp.digicert.com /fd sha256 "%1"
别的自动脚本里在想要签名文件时,只需要调用sign.bat "要签名的文件的全路径"即可签名后的文件在win10等系统上显示两个签名,在xp上只显示一个签名,如图所示:
使用SHA1、SHA2双证书进行微软数字签名相关推荐
- 使用SHA256证书进行微软数字签名代码签名
微软是第一个宣布了SHA-1弃用计划,在2016年之后Windows和IE将不再信任SHA-1证书.正好我们公司的数字签名也到期了,索性就重新申请了sha256和sha1的新数字证书,用来给产品签名. ...
- 安装软件和驱动程序需要微软数字签名无法安装?数字签名和数字证书区别
1.安装软件和驱动程序需要微软数字签名无法安装 方法一: 1.以Win10为例,Win7同样适用,首先我们在键盘上同时按下"Windows键"+"R键",调出运 ...
- 沃通EV代码签名证书被微软指定用于windows10内核签名
昨日,微软在Windows 硬件开发人员中心(获取代码签名证书)栏目,向全球Windows开发者推荐买沃通(WoSign)标准型(OV)代码签名证书和增强型(EV)代码签名证书用于数字签名各种代码(包 ...
- GlobalSign即将停止签发SHA1代码签名证书
关于GlobalSign即将停止签发SHA-1代码签名的公告 尊敬的客户/合作伙伴: GlobalSign的代码签名证书产品将面临两个主要变化,如下: 一,即将停止SHA-1代码签名的签发 Globa ...
- 构建用于签名/加密双证书测试体系的可执行命令
注意事项 生成证书请求的填写 范例 Subject: C = CN, ST = Beijing, L = Beijing, O = MSI, OU = msi, CN = ca, emailAddre ...
- 全国信息化工程师院校IT双证书职业课程认证
一.背景介绍 自从2001年NCIE项目设立以来,致力于教育培训领域的技术和理论研究,以"Career Building"为核心理念,在教育领域协同高校.知名科研院所.大型人力资源 ...
- PKI/CA (6)双证书
1. 单证书 一套公私钥, 私钥由用户自己保存,CA中心不保存,只对用户公钥发证书 Problem:政府机构无法监管(由于没有私钥,无法解密消息) 2. 双证书 两套公私钥 验签消息的那套私钥由用户自 ...
- sm2证书生成(双证书)
国密双证书 双证书:包括签名证书和加密证书 双证书需要用硬件加密机生成,用gmssl命令无法生成 cfca下载双证书 1.访问https://cstest.cfca.com.cn/ 2.选:Web服务 ...
- 国密双证书签发及国密数据信封解析
国密双证书的签发,及国密数字信封解析 产生签名密钥对 gmssl ecparam -genkey -name sm2p256v1 -text -out server_sign.key 产生p10签名请 ...
最新文章
- 大学java专业核心课程_计算机应用技术专业核心课程有哪些?
- Oracle删库跑路
- linux raid1 分区表,在 Linux 下使用 RAID(三):用两块磁盘创建 RAID 1(镜像)
- NDK Socket编程:面向连接的通信(tcp)
- c# Brush、Color、String相互转换
- 在windows下使用Xming+Putty显示Linux下软件图形界面
- unix 网络编程总结 二
- JAVA版村庄哨塔种子_我的世界:TOP18种子,刷怪笼、哨塔和村庄挤在一起,还不来试试?...
- java源代码怎么用_java源码怎么使用?java源代码用什么打开!
- RedHat配置阿里yum源
- UG NX 12.0入门
- python识别图片文字_python实现简单图片文字识别翻译OCR
- spring启动简析
- GPRS DTU是什么?其工作原理是什么? (转自aerkate)
- 空间域图像增强(matlab实现)
- WiFi分析仪在Android9.0上不能用解决方案
- python简单的青蛙旅行小游戏
- JAVA的3DES加密代码转成oc_iOS之DES加密
- php获取网卡网速,Golang 获取网卡时时带宽,可用于测速
- 江苏省小学生计算机装备标准,江苏省小学信息技术装备标准new.doc
热门文章
- Linux Kernel TCP/IP Stack — L1 Layer — NIC Controller — Buffer descriptor table
- DPDK — PMD,DPDK 的核心优化
- Go 语言编程 — 程序运行环境
- 机智云明星开发者 | 董程森
- Consul + Nginx实现自动扩容平台
- 仿抖音底部导航效果(一)
- oracle11g安装过程提示swap size 检查失败问题
- 自定义Unity 容器的扩展 --- Unity Application Block Event Broker
- storm集群和单点安装
- JAVA时间日期处理类,主要用来遍历两个日期之间的每一天。