Windows 资源管理器文件属性不显示某些系统文件的数字签名信息,为什么?

Windows 资源管理器文件属性不显示某些系统文件的数字签名信息,为什么?

例如,Windows 7 和 8.1 上的 PEauth.sys。

Windows 资源管理器文件属性对话框未显示此文件的数字签名选项卡,但 Sysinternal sigcheck.exe 表示它已进行数字签名。

有人能告诉我为什么会发生这种情况吗?

在此处输入图片描述

答案1

作为本文由 JosefZ 链接) 表示,只有当签名在文件本身中时,才会显示“数字签名”选项卡。签名也可能存储在目录文件中,该文件可在 中找到\Windows\System32\catroot

Sysinternals工具可以告诉您某个文件是否具有嵌入签名。如果您在文件名前sigcheck给出该选项,则输出将包含一行以及更多证书信息。目录中签名的文件将在该行上命名文件,而具有嵌入签名的文件将在该行上拥有自己的文件名。例如,这是(非常长)输出的第一部分:-iCatalog.catsigcheck -i \windows\regedit.exe

C:\Windows\regedit.exe:
    Verified:   Signed
    Link date:  9:12 PM 10/28/2014
    Signing date:   2:59 AM 11/7/2014
    Catalog:    C:\Windows\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\Package_868_for_KB3000850~31bf3856ad364e35~amd64~~6.3.1.8.cat

因此,regedit.exe该目录中存储有一个有效的签名。

答案2

对于由于签名位于目录文件中而未显示“数字签名”选项卡的文件,您还可以signtool.exe使用Windows SDK通过传递适当的命令行选项来检查签名。

如果你已经安装了 SDK,signtool则会位于例如

c:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64\signtool.exe

(根据需要替换您的 SDK 版本和机器架构。)

signtool使用执行普通 Authenticode 签名验证的选项运行/pa,以及/a验证目录中可能具有签名的文件的选项。例如:

> signtool verify /pa /a c:\windows\regedit.exe
0      sha256     RFC3161
Successfully verified: c:\windows\regedit.exe

相关内容