PE 数字签名
【摘要】 PE 数字签名
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.txtInternet 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
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)