我找到了 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
感到好奇:
是否可以使用
序列号
来验证 EXE 文件是否使用特定证书签名?我的测试表明,如果我签署多个文件,它不会改变。续订证书时,此序列号会保持不变吗?
最佳答案
IssuerRDN(标识颁发者的字段集)和 SerialNumber 字段的组合根据 RFC 5280 唯一标识证书.
RFC 没有定义,如果重新颁发证书会发生什么,但我会假设序列号已更改。原因是新证书将不同于以前的证书,因此必须唯一标识它。
因此,对于您的任务,更好的方法是
- 完全验证证书链以确保证书的完整性和真实性
- 检查发行人名称
- 检查主题名称
- 检查 key 使用字段。
这将确保该证书对该公司有效且已获得授权,同时该算法使您免于只检查一个证书的错误(如果证书因任何原因被吊销,此错误可能会导致麻烦并更换为新的)。
关于c++ - 使用什么来检查特定的 EXE 文件签名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17893039/