Windows makecert生成代码签名证书

由于自2021年微软宣布弃用SHA-1算法的代码签名,而采用新的SHA-2算法代码签名。SHA-1 签名内容要停用 | Microsoft Docs

同时代码签名证书颁发厂商也不再颁发SHA-1的证书。但由于部分Windows7系统(未开启自动升级),并不支持SHA-2代码签名机制(可安装系统补丁来解决此问题),使得使用SHA2证书签名的文件并不能通过Windows的校验机制,从而程序无法正常运行。

另外针对内核代码,需要双证书签名,使用SHA-2证书和微软同时签名。开发者使用SHA-2证书签名内核后,还需要将签名后的驱动提交到Windows 硬件开发者中心,获取Windows的数字签名后驱动才能正常运行。

为了降低程序测试阶段,频繁发布导致的数字签名,可以使用makecert生成自签的代码签名证书。

为了方便使用,本人将生成自签代码证书、签名代码、安装/卸载根证书分别集成为批处理脚本。

1.批处理脚本

make_codesign_cert.bat

@rem 生成代码签名证书
@rem August 2021-5-25
@set CUR_PATH=%~dp0

@set CERT_NAME=AugustCodeSign.cer
@set KEY_NAME=AugustCodeSign.pvk
@set PFX_NAME=AugustCodeSign.pfx
@set PASSWORD=123456789
@set CERTCN_NAME=August CodeSign Root CA

@cd "%CUR_PATH%"
@%CUR_PATH%\tools\makecert.exe /n "CN=%CERTCN_NAME%" /r /eku "1.3.6.1.5.5.7.3.3,1.3.6.1.4.1.311.10.3.13" /sv "%KEY_NAME%" "%CERT_NAME%"
@%CUR_PATH%\tools\pvk2pfx.exe /pvk "%KEY_NAME%" /pi "%PASSWORD%" /spc "%CERT_NAME%" /pfx "%PFX_NAME%"
@copy /Y "%CERT_NAME%" "%CUR_PATH%\install\"

@pause

make_sign.bat

@rem 给sign目录下的文件签名
@rem August 2021-5-25
@set CUR_PATH=%~dp0

@set PFX_NAME=AugustCodeSign.pfx
@set PASSWORD=123456789

@cd "%CUR_PATH%"
@if not exist %CUR_PATH%\%PFX_NAME% @(
	@echo "NOT found %PFX_NAME%! Use make_codesign_cert.bat to generate."
	@pause
	@exit /B 2
)

@for %%i in (%CUR_PATH%\sign\*) do @(
	@%CUR_PATH%\tools\signtool.exe sign /v /f %PFX_NAME% /p "%PASSWORD%" %%i
	@rem %CUR_PATH%\tools\signtool.exe sign /v /f %PFX_NAME% /p "%PASSWORD%" /t http://timestamp.digicert.com %%i
	@rem 校验数字签名(需要安装自签证书到系统install_codesign_cert.bat)
	@rem %CUR_PATH%\tools\signtool.exe verify /kp /v %%i
)

@pause

install_codesign_cert.bat

@rem 安装代码签名根证书到系统
@rem August 2021-5-25
@set CUR_PATH=%~dp0

@set CERT_NAME=AugustCodeSign.cer

@cd "%CUR_PATH%"
@bcdedit  /set  testsigning  on
@%CUR_PATH%\..\tools\certmgr.exe /add "%CUR_PATH%\%CERT_NAME%" /s /r localMachine root
@rem %CUR_PATH%\..\tools\certmgr.exe /add "%CUR_PATH%\%CERT_NAME%" /s /r localMachine trustedpublisher
@set /p var="reboot?(yes/no)"
@if /i "%var%" == "yes" @(
	@shutdown /r /t 0
	@exit /B 0
)

@pause

2.生成证书

运行make_codesign_cert.bat,弹出以下界面,输入自签证书私钥文件(AugustCodeSign.pvk)的保护口令,

再次输入保护口令,使用私钥签名生成的证书(AugustCodeSign.cer)。

最后会用pvk2pfx.exe将证书和私钥打包成pfx格式。

3.签名代码

将需要签名的文件(exe、dll、sys)放到sign目录中,运行make_sign.bat脚本。

4.安装根证书

使用install_codesign_cert.bat脚本将生成的AugustCodeSign.cer安装到系统中,系统可正常校验通过签名的代码。

脚本和工具包下载地址:CodeSignCertUtil.zip-其它文档类资源-CSDN下载

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要安装makecert.exe,你可以选择两种方法。第一种方法是直接安装Visual Studio,因为Visual Studio包含了makecert.exe。第二种方法是使用Self-signed certificate制作工具集合,这个工具集合包含了从Windows 8.1 SDK中提取出来的makecert.exe。你不需要下载安装整个Windows SDK,只需要使用这个工具集合就可以了。 如果你选择使用makecert.exe进行安装,你可以按照以下步骤进行操作: 1. 以管理员身份打开CMD或PowerShell。*** commercial -a sha1 -b 01/01/2020 -e 01/01/2100 -cy authority -ss root -sr currentuser 这个命令将会生成一个自签名的数字证书,并将其安装到系统中。 希望这些信息对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [创建自签名数字证书PFX格式](https://blog.csdn.net/qq_33212020/article/details/109030433)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [makecert, pvk2pfx, cert2spc, signtool 最新版](https://download.csdn.net/download/ben36/8997179)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [X509证书创建工具:Makecert.exe](https://blog.csdn.net/ylq1045/article/details/109462040)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值