我正在尝试编写一个使用Web服务的C#客户端。通信已加密。我已经将网站的证书下载并安装到WinXP保存它们的神奇地方。
当我运行我的客户端时,我失败了“根据验证程序,远程证书无效。”
当我运行certmgr.msc时,GUI会通知我证书的策略无效。证书具有有效日期,证书路径正常。证书确实有一个证书策略,其策略标识与点交错的整数(如1.2.30 ...)
使用X509Certificate2.Verify
Method documentation中的代码,我可以看到验证消息确实返回false。
在尝试研究此错误时,我在Brian Komar's Windows Server 2008 PKI and Certificate Security中找到了一个引用:
策略验证。如果调用证书链引擎的应用程序需要证书中的特定应用程序策略或证书OID,并且CA链中的证书中不包含所需的策略或OID ,证书链引擎认为证书无效。
我没有看到我对特定应用程序策略有任何期望。我正在将此WSE3代码移植到WCF,因此它可能是内置的。
有关如何进一步降低此功能的建议吗?证书真的有问题吗?
如果证书正常,我是否需要配置或扩展CryptoConfig类以关闭检查策略?
任何和所有帮助表示赞赏。
答案 0 :(得分:0)
您始终可以通过将ServicePointManager..::.ServerCertificateValidationCallback
设置为返回true
的委托来停用验证。这将使您有时间追踪证书的任何问题。
答案 1 :(得分:0)
我用来跟踪这类错误的一种技术是在浏览器中访问Web服务。
例如,如果您在https://server/foo.asmx处拥有Web服务,请将该地址放入您选择的浏览器中,您可能会对该错误进行更易读的解释。