在特定的 Windows Vista PC 上,当 Explorer 验证发布者时,所有使用特定证书签名的程序都无法从 Explorer 启动。只有一两秒钟的时间,沙漏才会出现,然后什么也没有发生(没有错误消息)。
- 检查有问题的 PC 上的程序属性时,证书显示正确且有效。
- 签名程序在其他几台电脑(vista、w7、w8)上启动正常,正确验证了发布者。
- 在有问题的电脑上,程序可以正常启动如果未签名。
- 如果已签名,该程序将在有问题的电脑上正常启动当 Windows 未验证发布者时(例如从本地磁盘启动时)。但是当签名并从映射驱动器启动时,它无法启动。
- 其他签名的程序可以在特定 PC 上正常启动,只有使用此特定证书签名的程序才会出现问题。
进程监视器显示 explorer.exe 正在检查注册表中是否存在不允许的证书。但检查后,我发现不受信任(撤销)列表中没有证书链的任何部分。所以这似乎不是原因。
可能存在什么问题,或者如何诊断此类问题?
答案1
我遇到的问题是特定证书的签名算法是 sha256rsa。KB2763674,据记录,如果证书哈希值为 256 位或更大,则签名程序可能无法在 Windows Vista SP2 或 Windows Server 2008 SP2 上启动。安装 KB 补丁并重新启动后,问题得以解决。
答案2
可以通过以下方式阻止带有证书规则的软件限制策略。
打开
Local Security Settings
。在控制台树中,单击
Security Options
。Security Settings/Local Policies/Security Options
在详细信息窗格中,双击系统设置:
Use Certificate Rules on Windows Executables for Software Restriction Policies.
执行以下操作之一,然后单击“确定”:
要启用证书规则,请单击
Enabled
。要禁用证书规则,请单击
Disabled
。