自建CA实战之 《0x03 代码签名》

自建CA实战之 《0x03 代码签名》

本文针对Windows平台,介绍如何使用自建CA来签发代码签名证书。

之前的文章中,我们介绍了如何自建CA,以及如何使用自建CA来签发Web服务器证书、客户端证书。

本文将介绍如何使用自建CA来签发代码签名证书。用于给程序签名。

代码签名的好处是:

  • 证明程序的作者是谁。
  • 证明程序没有被篡改过,没有被木马病毒感染过,凡是修改过一个字节,都会导致签名验证失败。

创建支持代码签名的证书

来源 选项卡中选择我们创建的CA。

在这里插入图片描述

主体选项卡中按需填写,就不再细说了。

在这里插入图片描述

扩展选项卡中,选择代码签名(Code Signing),下图中多选了Microsoft Individual Code SigningMicrosoft Commercial Code Signing,这两个选项是为了兼容性考虑,如果只是给自己的程序签名,可以只选Code Signing即可。

文末对这三个选项有比较详细的说明。

在这里插入图片描述

与上一章节导出客户端证书一样,这里我们导出格式选择pfx,然后设置密码。

在这里插入图片描述

使用代码签名证书签名程序

Windows代码签名工具下载

https://raw.githubusercontent.com/taills/tools/master/SignTool.zip

无法直接点击下载的,可以到仓库中下载。

https://github.com/taills/tools

我们把导出的证书文件拷贝到桌面,以及把我们要签名的程序拷贝到桌面。

注意:这里证书**不用双击打开导入!**因为我们要使用命令行工具来签名程序。

我们这里使用的是记事本(notepad.exe)程序,当然你也可以使用其他程序。

cd C:\Users\Administrator\Desktop
xcopy C:\Windows\System32\notepad.exe .

我们查看记事本程序的属性,发现它并没有签名。
在这里插入图片描述

我们使用signtool工具来给记事本程序签名。

Microsoft Windows [版本 10.0.19044.1288]
(c) Microsoft Corporation。保留所有权利。

C:\Users\admin>cd Desktop

C:\Users\admin\Desktop>xcopy C:\Windows\System32\notepad.exe .
C:\Windows\System32\notepad.exe
复制了 1 个文件

C:\Users\admin\Desktop>SignTool\signtool.exe sign /f CodeSigning-WeiPang.pfx /p 12345678 notepad.exe
Done Adding Additional Store
Successfully signed: notepad.exe

C:\Users\admin\Desktop>

在这里插入图片描述

我们再次查看记事本程序的属性,发现它已经被签名了。但是时间戳显示不可用,这是因为我们没有使用时间戳服务器,所以时间戳显示不可用。我们再次增加一个参数/t http://timestamp.digicert.com,使用时间戳服务器来签名。

C:\Users\admin\Desktop>SignTool\signtool.exe sign /f CodeSigning-WeiPang.pfx /p 12345678 /t http://timestamp.digicert.com notepad.exe
Done Adding Additional Store
Successfully signed: notepad.exe

再次查看属性,发现时间戳显示正常了。

在这里插入图片描述

总结

命令行签名的命令格式如下:

signtool sign /f 证书文件 /p 证书密码 /t 时间戳服务器 要签名的程序

三项代码签名证书的异同

  1. 证书类型:

    • Microsoft Individual Code Signing(个人代码签名)证书:适用于个人开发者或个人使用的代码签名证书。
    • Microsoft Commercial Code Signing(商业代码签名)证书:适用于商业实体或组织使用的代码签名证书。
    • 普通的Code Signing证书:这是一个更通用的术语,指的是由各种证书颁发机构(如Symantec、Comodo、DigiCert等)颁发的代码签名证书。
  2. 证书颁发机构:

    • Microsoft Individual Code Signing和Microsoft Commercial Code Signing证书由Microsoft自己的证书颁发机构颁发。
    • 普通的Code Signing证书由各种证书颁发机构颁发,不限于Microsoft。
  3. 应用范围:

    • Microsoft Individual Code Signing和Microsoft Commercial Code Signing证书主要用于Microsoft平台(如Windows操作系统、Office等)上的代码签名。
    • 普通的Code Signing证书可以用于多个平台,包括Windows、macOS、Linux等。
  4. 验证和信任:

    • Microsoft Individual Code Signing和Microsoft Commercial Code Signing证书在Microsoft平台上享有更高的信任级别,因为它们由Microsoft颁发。
    • 普通的Code Signing证书的信任级别取决于颁发机构的声誉和受信任的根证书列表。
  5. 价格和购买渠道:

    • Microsoft Individual Code Signing和Microsoft Commercial Code Signing证书通常具有较高的价格,并且只能通过Microsoft的官方渠道购买。
    • 普通的Code Signing证书的价格和购买渠道因证书颁发机构而异,通常有更多的选择。

总的来说,Microsoft Individual Code Signing和Microsoft Commercial Code Signing证书是专为Microsoft平台开发者和商业实体设计的,享有更高的信任级别,但价格较高且适用范围有限。普通的Code Signing证书则更通用,可以适用于多个平台,但信任级别可能因颁发机构的声誉而异。选择适合自己需求的证书时,可以考虑具体的使用场景、平台要求和预算等因素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韦胖漫谈IT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值