我正在编写一个使用公共web服务的系统。我正在使用VS2008和经典的.NET Framework2.0WebServices技术来使用web服务。我的问题不是使用web服务,也不是调用它的操作。
问题是,当我从被签名的操作中得到响应时,生成的代理开始验证签名。那时我得到了WSE3003错误。我(认为我)已经将服务证书加载到LocalComputer/TrustedPeople证书存储中,当我查看它的证书路径时,我可以看到一切正常:
VeriSign第3类公共小学CA
产品名称:://CPS/ Incorp.by /CPS.责任有限公司(C)97.
servcert.there.com
但我一直有以下例外:
Microsoft.Web.Services3.ResponseProcessingException:
WSE910:在处理响应消息过程中发生错误,您可以在内部异常中找到错误。还可以在response属性中找到响应消息。或者,如果这是测试证书,则可能希望将allowTestRoot配置部分设置为true。
下面的代码可能没有编译,我已经删除了一些敏感的内容,但是下面是我如何完成我的部分的想法:
// Construct the wse proxy
MyServiceWse wsClient = new MyServiceWse();
// Assign the credentials
UsernameToken userToken = new UsernameToken("user", "pass", PasswordOption.SendPlainText);
wsClient.SetClientCredential(userToken);
wsClient.RequestSoapContext.IdentityToken = userToken;
// Find the client and service certificates
X509Certificate2 clientCert = MyCertificateManager.FindCertificate(StoreLocation.LocalMachine, StoreName.TrustedPeople, "mycert.here.com");
X509Certificate2 serviceCert = MyCertificateManager.FindCertificate(StoreLocation.LocalMachine, StoreName.TrustedPeople, "servicecert.there.com");
// Add the policy to the proxy
Policy policy = new Policy();
MySecurityClientAssertion assertion = new MySecurityClientAssertion();
assertion.SetServiceCertificate(serviceCert);
assertion.SetClientCertificate(clientCert);
policy.Assertions.Add(assertion);
wsClient.SetPolicy(policy);
// Assign the service URL and call an operation
wsClient.Url = "https://services.there.com/TheirService.asmx";
TheirOperationResponse r = wsClient.CallTheirOperation();我当然希望我的代码是错误的,因为我能够理解这比证书存储和信任链之类的东西要好得多。任何帮助都会很好。谢谢你的努力。
发布于 2009-10-02 11:42:44
如果问题是与链,那么所有其他证书也需要在证书商店。
因此,让我们从顶部开始;启动MMC并添加证书管理插件,并将其指向本地计算机帐户。
现在,在受信任的根权限中,检查"VeriSign第3类公共主CA“,并匹配您试图使用的证书中的根CA。(它应该在那里,那是标准的)。
接下来请查看以下网址: that ://CPS Incorp.by Ref。责任有限公司(C)97.在中间证书颁发机构的存储中。在我的机器上有两个,其中一个过期了。
如果两者都在,那么您需要仔细查看证书链。在浏览器中加载web服务,并查看从浏览器获得的证书错误。如果您继续在网站上,您将能够单击SSL图标,并工作方式上的链。单击挂锁并选择查看证书。然后选择“证书路径”选项卡。希望你能看到链接,突出显示问题证书(我现在找不到问题网站,所以我不记得它是什么样子)。选择最低的一个,并通过高亮显示并单击视图证书来查看错误是什么。你可能会发现这只是一个过期的证书之类的。
https://stackoverflow.com/questions/1508998
复制相似问题