用于检查特定EXE文件签名的内容

What to use to check for a specific EXE file signature?

本文关键字:文件 检查 EXE 用于      更新时间:2023-10-16

我找到了这篇MSDN文章,它解释了如何检索Authenticode签名的可执行文件的信息。它以以下格式检索数据:

Signer Certificate:
Serial Number: 00 90 1a 1a 1b 1c 1c 26 3d 4f 56 61 70 8f 94 7f e0
Issuer Name: COMODO Code Signing CA 2
Subject Name: Signer's Name

我的目标是验证EXE文件是否使用属于该公司的特定签名证书进行了签名。为此,我显然可以检查Subject Name,但我对Serial Number:很好奇

  1. Serial Number是否可以用于验证EXE文件是否使用特定证书签名?我的测试表明,如果我签署多个文件,它不会改变。

  2. 续订证书时,这个序列号会保持不变吗?

IssuerRDN(标识颁发者的字段集)和SerialNumber字段的组合根据RFC 5280唯一标识证书。

RFC没有定义如果证书被重新颁发会发生什么,但我认为序列号已经更改。原因是新证书与以前的证书不同,因此必须唯一标识。

因此,对于您的任务,更好的方法是

  1. 完全验证证书链以确保证书的完整性和真实性
  2. 检查颁发者名称
  3. 检查主题名称
  4. 检查密钥用法字段

这将确保该证书对该公司是有效和授权的,同时该算法使您免于只检查一个证书的错误(如果证书因任何原因被吊销并替换为新证书,则该错误可能会导致麻烦)。