PE 数字签名

本文介绍了PE文件的数字签名,涉及到PKCS #7标准和X.509证书。内容包括数字签名的DER编码、证书链的构建,以及如何使用asn1js和asn1viewer工具解析证书数据。此外,还提及了openssl命令行工具在验证和导出数字证书方面的应用,以及在Linux环境下解析证书为ASN.1文本的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://www.youdzone.com/signature.html  英文文章,介绍了证书与签名的关系。

http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html 是翻译后的文章。


PE 数字签名是被DER编码方式编码的二进制数据,数据的构成有 PKCS #7 V1.5 定义,具体请参考 PKCS #7Cryptographic Message Syntax Standard.

PKCS#7 数据中包含了签发签名的证书以及其上级证书的完整证书链。根证书签发下一级证书,然后一级一级的签发下去最后一级证书签发签名。

x.509 定义了证书的数据构成。

这里有有关数字证书的ASN.1描述
http://www.rfc-base.org/txt/rfc-5280.txt
Internet X.509 Public Key Infrastructure Certificate
             and Certificate Revocation List (CRL) Profile
PKCS #7 V1.5 和 X.509 的定义都采用了ASN.1 语法

http://msdn.microsoft.com/en-us/windows/hardware/gg463180 是微软对数字签名的ASN.1语法描述,但是没有 PKCS #7Cryptographic Message Syntax Standard. 讲些的详细。


http://www.lapo.it/asn1js/   可以将PE 文件最后的证书数据直接解析为 ASN.1语法

asn1viewer 是一个免费工具,也可以解析DER数据

使用 openssl pkcs7命令能够将完整数字签名消息中的全部数字证书都导出,然后在使用openssl x509 进行解析。

openssl pkcs7 -inform DER -in Certificate.cer -print_certs

这说明,openssl 是能够验证PKCS7并解析pkcs#7数字签名数据的。

注: 这里导出的证书文件与通过Windows 文件属性的签名选项导出的der格式的证书是一样的。


Linux 下将数字证书解析为ASN.1 文本的命令:

openssl x509 -inform der -in vmUpdate.cer -text 


利用openssl pkcs7 命令导出了一个数字签名数据的全部证书,发现包含了从根证书到最终签发签名的全部证书以及用于校验时间戳的证书。通过这个能够确定 WinVerifyTrust 函数,应该不会以联网方式校验证书的。此外,证书链的关联是通过证书中的Issuer Name  与Subject 建立的。Issuer Name 标记了上一级证书的名字,Subject 标记了证书的名字

微软文档中提到了验证数据签名是,使用了 Certificates Store 来验证完成的证书链。根据猜测,在Windows  下运行certmgr.msc 后看得应该就是Certificates Store
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值