Tom*_*aso 5 .net ssl https soap web-services
Webservice管理员给了我WSDL,两个证书和一个私钥:
service.wsdl
ssl.cer
auth_cert.pem
auth_private_key.pem
Run Code Online (Sandbox Code Playgroud)
在Visual Studio 2010中,我从WSDL添加了Web引用(服务引用不起作用).然后我尝试使用它,因为它是一个http soap客户端:
MySoapClient client = new MySoapClient();
client.Operation();
Run Code Online (Sandbox Code Playgroud)
我获得了这个堆栈跟踪:
Unhandled Exception: System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.
at System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request)
at System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest request)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
Run Code Online (Sandbox Code Playgroud)
我与证书和私钥有什么关系?
我找不到任何在线教程,也没有涉及此事的书籍.任何提示?
更新
使用Firefox访问端点:
SSL对等方无法验证您的证书.(错误代码:ssl_error_bad_cert_alert)
Webservice管理员给了我WSDL,两个证书和一个私钥
如果您只使用该服务,则不需要私钥.我猜你想用https进行双向认证.如果是这种情况,这是它的工作原理:
在服务器上,管理员应使用私钥安装证书以启用SSL(在SSL握手期间使用密钥).客户端使用其公钥来检查证书是否有效并验证服务,因此在客户端,您需要检查它.如果两台计算机都在Windows域中,则这很容易(可以配置为使用域证书颁发机构).如果不是,则需要在客户端计算机上(在受信任的根CA存储中)安装用于签署原始服务器证书的所有证书.
第二部分是对服务器的客户端身份验证.您将客户端证书(它包含公钥)安装到个人存储并配置WCF代理以使用它:
<behaviors>
<endpointBehaviors>
<behavior name="certSecureBehavior">
<clientCredentials>
<clientCertificate findValue="client-CN" storeLocation="LocalMachine" x509FindType="FindBySubjectName" storeName="My"/>
<serviceCertificate>
<defaultCertificate findValue="server-CN" storeLocation="LocalMachine" x509FindType="FindBySubjectName" storeName="TrustedPeople"/>
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
Run Code Online (Sandbox Code Playgroud)
配置端点以使用此行为.几点说明:
这是一个非常复杂的主题,总是需要大量的时间来研究.查看这篇文章http://blogs.msdn.com/b/imayak/archive/2008/09/12/wcf-2-way-ssl-security-using-certificates.aspx 希望这个帮助.
管理员似乎已向您提供了用于在服务器上设置 SSL 的文件。您应该能够通过 WSDL.exe 运行 service.wsdl 来生成 C# 代理,这就是 VS 在添加 Web 引用时所做的事情。但我认为这不是你的问题。您看到网络级问题,因为异常是 System.Net.WebException。
其他文件看起来像是管理员用来将 SSL 添加到服务器的文件。通过共享私钥,如果任何启用 SSL 的服务使用此密钥,他可能会损害安全性。您应该在 WSDL 中查找任何服务端点,并尝试通过 SSL (https://) 在浏览器中访问这些端点。如果不能,则存在服务器配置问题。更正服务器上的 SSL 配置,您的 WSDL 应该可以工作,或者至少您会遇到一个新问题。
归档时间: |
|
查看次数: |
24516 次 |
最近记录: |