【问题标题】:What to use to check for a specific EXE file signature?使用什么来检查特定的 EXE 文件签名?
【发布时间】:2013-07-27 09:55:07
【问题描述】:

我找到了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. 证书更新后这个序列号会保持不变吗?

【问题讨论】:

  • 据我了解,序列号唯一标识特定证书(至少,在给定颁发者创建的所有证书中唯一)。是的,当您获得不同的(更新或其他)证书时,它将获得一个新的序列号。
  • 我认为问题 2 最好由证书颁发者来回答。

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


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 2013-11-21
    • 1970-01-01
    • 2018-08-13
    • 2013-01-30
    • 2011-02-18
    相关资源
    最近更新 更多