在运行经过数字签名的可执行文件时,我得到了一个非常奇怪的结果。
可执行文件是使用正确的 2 级代码签名证书(不是自行生成的)使用 signtool.exe 签名的。
在 Windows 7 机器上进行测试,如果我启动已签名的可执行文件,我会收到 Windows 警告对话框,提示 Publisher Unknown(即未签名)。
但是,如果我随后取消并右键单击可执行文件并转到属性 -> 数字签名,签名列表会显示已签名的证书,然后我可以单击并选择“详细信息”以查看详细信息signature,显示为“The digital signature is OK”。
那时,如果我启动可执行文件,现在突然间 Windows 正确地识别出可执行文件已签名并报告正确的“已验证发布者”。
似乎 Windows 可能没有在线检查证书,直到我从可执行文件的属性对话框中查看实际的证书详细信息(请注意,这不仅仅是启动可执行文件后的延迟,这无关紧要我等待的时间或启动它的次数,它会将其视为未签名,直到我进入文件的属性/数字签名)。
这是我用于测试的通用 Windows 7 安装 -- 它没有以任何方式修改或调整。
这种行为似乎违背了 Windows 上代码签名的主要目的——除非用户知道进入右键单击属性并四处寻找证书,否则可执行文件怎么会被视为未签名。
有什么我想念的吗?将可执行文件标记为 Windows 应在执行时主动检查证书的某种方法?
最佳答案
很可能由于任何原因(连接问题等)无法自动检查 OCSP 吊销。您需要在更多系统上执行测试以缩小问题范围。
关于windows - 为什么在查看证书详细信息之前,数字签名的可执行文件会被视为未签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4379985/