2014-10-27 112 views
3

我正在尝试使用另一家公司公布的服务。有关身份验证和通信规格为:使用证书进行双向SSL的WCF验证错误

  • SOAP
  • HTTPS与相互SSL身份验证(双向SSL)
    • 使用公共证书,他们给我们(我使用的ServiceCertificate)
    • 使用,他们给我们创造了一个专用证书(我使用的ClientCertificate)
  • 的WS-Security与用户名令牌

下面的代码,我跟到现在为止:

WSHttpBinding binding = new WSHttpBinding(SecurityMode.Transport); 
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate; 
binding.SendTimeout = binding.CloseTimeout = binding.ReceiveTimeout = binding.OpenTimeout = new TimeSpan(0, 15, 0); // 15 minutes 

Uri uri = new Uri(input.ServiceAddress); 
EndpointAddress endpointAddress = new EndpointAddress(uri); 

// Client creation 
using (Client client = new Client(binding, endpointAddress)) 
{ 
    client.ClientCredentials.ClientCertificate.Certificate = input.PrivateCertificate; 
    client.ClientCredentials.ServiceCertificate.DefaultCertificate = input.PublicCertificate; 

    client.Open(); 

    // Service call 
    ResponseType response = client.ServiceCall(params); 
} 

我得到这个错误时,该服务被称为:

同时使HTTP请求时出错服务。这可能是由于在HTTPS情况下服务器证书未使用HTTP.SYS正确配置。这也可能是由于客户端和服务器之间的安全绑定不匹配造成的。

,我已经尝试过的东西:

  • 添加此行的代码: “System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Ssl3;”
  • 发现在注册使用Netsh
    • 使用此命令端口公证书:“netsh的HTTP添加的sslcert ipport = 0.0.0.0:443 CERTHASH = 证书指纹的appid = {应用GUID}”基于另外一个问题,我们在另一个项目中有

我不知道如何解决这个问题,我对此一无所知!已经搜索了很多,我尝试的一切都没有做到!

+1

尽管我不能告诉你什么是错误的,但我可以告诉你SSL3&netsh位可能出现什么问题:它们可能在最近的狮身人面像攻击后关闭了SSL3。您应该检查SSL握手中提供的协议和密码(我假设您的浏览器至少信任SSL证书),然后查看是否启用了这些密码。Netsh位与服务器端无关,因此客户端会完全忽略该位,除非您在本地运行服务器。您可以使用https://www.ssllabs.com/来测试服务器端发送的内容以及客户端的内容。 – Maverik 2014-10-27 15:28:09

+0

跑出字数限制:当我说最近的狮子狗袭击时,我的意思是在新闻中,而不是在特定的第三方。 – Maverik 2014-10-27 15:28:51

+0

@Maverik,谢谢!我有一本手册解释了认证和连接的要求。我知道我已经写过这个问题,但我会试着再问一些。可悲的是,ssllabs在检查域名时遇到了意外的错误,但服务器证书(我所说的公共证书)在那里,其中一个使其信任(VeriSign)。 – 2014-10-27 20:32:51

回答

0

我们的基础设施存在一些网络问题。一旦我们的安全层离开了我的机器,服务即告解决。

我猜证书(可能是密钥)没有通过网络,我得到的错误(因为它不是验证)。