使用证书进行相互SSL的WCF身份验证时出错
本文关键字:WCF 身份验证 出错 SSL 证书 | 更新日期: 2023-09-27 18:27:54
我正在尝试使用另一家公司发布的服务。有关身份验证和通信的规范为:
- 肥皂
- 具有相互SSL身份验证的HTTPS(双向SSL)
- 使用他们发送给我们的公共证书(我正在用作ServiceCertificate)
- 使用他们为我们创建的专用证书(我正在用作ClientCertificate)
- 具有UsernameToken的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.SecurityPProtocolType.Ssl3;"
- 在这个和这个上找到的解决方案
- 向netsh注册端口中的公共证书
- 使用此命令:"netsh http add sslcert ipport=0.0.0.0:443 certhash=证书指纹appid={应用程序GUID}"
- 基于我们在另一个项目中遇到的另一个问题
我不知道如何解决这个问题,而且我对此一无所知!已经搜索了很多,我尝试的一切都没有做到!
我们的基础设施存在一些网络问题。一旦我们从我的机器上卸下安全层,服务就会正常工作。
我想证书(可能是密钥)没有通过网络,我收到了错误(因为它没有进行身份验证)。