У меня есть служба WCF, использующая как BasicHttpBinding, так и NetTcpBinding на разных конечных точках в пределах одного ServiceHost.NetTcp использует самозаверяющий сертификат, который загружается из файла, все было хорошо, пока я не попытался использовать BasicHttpBinding, поэтому я делаю:
На сервере:
var ServiceHost host = new ServiceHost(blah blah);
host.Credentials.ServiceCertificate.Certificate = GetCertificate(); //load a certificate from file
host.Credentials.ClientCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None;
var httpBinding = new BasicHttpBinding();
httpBinding.Security.Mode = BasicHttpSecurityMode.Transport;
httpBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
На клиенте:
ChannelFactory.Credentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None;
var cer = GetCertificate();
ChannelFactory.Credentials.ClientCertificate.Certificate = cer;
var httpBinding = new BasicHttpBinding();
httpBinding.Security.Mode = BasicHttpSecurityMode.Transport;
httpBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
//accept any cert
System.Net.ServicePointManager.ServerCertificateValidationCallback =
((sender, certificate, chain, sslPolicyErrors) => true);
Однако при подключении я получил эту ошибку
Исключение - произошла ошибка при выполнении HTTP-запроса к https://localhost/MyService. Это может быть связано ск факту, что сертификат сервера не настроен должным образом с HTTP.SYS в случае HTTPS.Это также может быть вызвано несоответствием привязки безопасности между клиентом и сервером.
сертификат не установлен, и он работал нормально с привязкой по протоколу net tcp. Думаю, я пропустил что-то маленькое?
Одна вещь, которую я заметил, - net.tcp - дуплексный канал, в то время как базовый http - симплекс, я уверен, что есть разница в настройке?Например, мне нужно было загрузить сертификат на обоих концах для net.tcp, что тогда будет с базовым http?
Заранее спасибо