用什么来检查特定的EXE文件签名?

时间:2013-07-27 00:30:33

标签: c++ winapi authentication code-signing digital-certificate

我发现this MSDN article解释了如何检索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. 续订证书时,此序列号是否保持不变?

1 个答案:

答案 0 :(得分:1)

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

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

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

  1. 完全验证证书链以确保证书的完整性和真实性
  2. 检查发行人名称
  3. 检查主题名称
  4. 检查密钥用法字段。
  5. 这将确保证书对该公司有效并获得授权,同时该算法可以避免检查一个证书的错误(如果证书因任何原因被撤销,这个错误可能会导致问题并换成新的)。