2014-04-04 68 views
1

我已经在Visual Studio 2013年 写了一个ASMX Web服务的WS使用HTTPS和X.509认证连接到供应商。Web服务返回的SSL/TLS错误

我试图连接使用“basicHttpBinding的”和“basicHttpsBinding”(Web.config文件),但总是得到下面的错误。

错误:System.ServiceModel.Security.SecurityNegotiationException:无法建立与权威 'www.providers-site.se' 为SSL/TLS安全通道。 ---> System.Net.WebException:请求被中止:无法创建SSL/TLS安全通道。在System.Net.HttpWebRequest.GetResponse()在....

我创建了一个行为的X.509和端点结合,见下文。 我在做什么错? 我会使用wsHttpBinding而不是受益吗?

<behaviors> 
    <endpointBehaviors> 
    <behavior name="CertBehaviour"> 
     <clientCredentials> 
     <clientCertificate findValue="MyCertCN" storeLocation="LocalMachine" 
          storeName="My" x509FindType="FindBySubjectName" /> 
      <serviceCertificate> 
      <authentication certificateValidationMode="PeerTrust" /> 
      </serviceCertificate> 
     </clientCredentials> 
    </behavior> 
    </endpointBehaviors> 
</behaviors> 

... 

<basicHttpsBinding> 
    <binding name="mySoapBinding"> 
    <security mode="Transport"> 
     <transport clientCredentialType="Certificate" /> 
     <message clientCredentialType="Certificate" /> 
    </security> 
    </binding> 
    </basicHttpsBinding> 

... 

<client> 
    <endpoint address="https://www.providers-site.se/na/na_epersondata/services/personpostXML" 
       behaviorConfiguration="CertBehaviour" binding="basicHttpsBinding" 
       bindingConfiguration="mySoapBinding" contract="webservice.NaPersonPostXMLWS" 
       name="personpostXML" /> 
</client> 

我确实运行过一个跟踪。感谢Mike Cheel! See trace here.

这是否意味着跟踪的证书不是由远程主机(提供商)接受? (行67-71) (由于“AUTHENTICATE_REQUEST NOTIFICATION_CONTINUE”和“AnonymousAuthenticationModule”证书认证后启动。)

CertificateMappingAuthenticationModule NOTIFY_MODULE_START RequestNotifications AUTHENTICATE_REQUEST 
AUTH_START Authentication MapCliCert 
AUTH_END Authentication 
CertificateMappingAuthenticationModule NOTIFY_MODULE_END RequestNotifications AUTHENTICATE_REQUEST NOTIFICATION_CONTINUE 
AnonymousAuthenticationModule NOTIFY_MODULE_START RequestNotifications AUTHENTICATE_REQUEST 
+1

你有跟踪吗? –

+0

嗨,迈克!对不起,我对IIS7不太舒服。我如何执行跟踪?我查看了下面的链接,但是我的屏幕与“禁用ASP:”部分中的屏幕截图完全不同。 http://www.iis.net/learn/troubleshoot/using-failed-request-tracing/troubleshooting-failed-requests-using-tracing-in-iis – Kermit

+0

我没有运行跟踪,但无法看到它出错。我应该寻找什么? – Kermit

回答

1

确保您有供应商上门服务的证书链中的ASMX机器的受信任根存储。您可以通过键入乌尔林浏览器发现:

https://www.providers-site.se/na/na_epersondata/services/personpostXML

,看看它的证书链。浏览器也显示警告。

另一个选择暂时解决证书错误就是尝试这样的:

ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => 
    { 
    // put a breakpoint here 
    var tempSslErrors = sslPolicyErrors; 
    return true; 
    } 

如果你看sslPolicyErrorsit可能会给一些指示。

+0

我可以去https://www.providers-site.se/na/na_epersondata/services/personpostXML从ASMX机无IE显示任何证书错误。我有根和中间证书隐藏到机器信任库。我也尝试了“ServicePointManager.ServerCertificateValidationCallback”,但仍然得到相同的错误。我如何检查“sslPolicyErrors”? – Kermit