30

我已经从证书服务器向自己颁发了代码签名证书。我还为自己颁发了来自同一证书服务器的根证书。根证书存在于受信任的根证书颁发机构文件夹中的当前用户和本地计算机证书存储中。我已经使用 signtool.exe 向导成功签署了一个 DLL:

"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\signtool.exe" signwizard <MyDLLName>.dll

但是,当我尝试验证我的 DLL 时,验证失败并出现以下错误:

"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\signtool.exe" verify <MyDLLName>.dll
SignTool Error: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.
SignTool Error: File not valid: <MyDLLName>.dll

为什么会这样?我认为在受信任的根证书颁发机构文件夹中拥有根证书可以验证 DLL。

4

1 回答 1

62

在您的验证命令中添加 /pa 选项以告诉它使用默认身份验证验证策略而不是 Windows 驱动程序验证策略,这意味着它将查看您的证书存储而不是 Microsoft 信任驱动程序的有限 CA 集。

在这里查看更多选项: http: //msdn.microsoft.com/en-us/library/8s9b9yaz (v=vs.90).aspx

于 2012-06-27T18:12:10.727 回答