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) ProfilePKCS #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
微軟文檔中提到了驗證數據簽名是,使用了 Certificates Store 來驗證完成的證書鏈。根據猜測,在Windows 下運行certmgr.msc 後看得應該就是Certificates Store