BasicHttpBinding с использованием транспортной безопасности с самозаверяющим сертификатом

У меня есть служба 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?

Заранее спасибо

4 голоса | спросил Yuan 21 AMpThu, 21 Apr 2011 09:05:29 +040005Thursday 2011, 09:05:29

1 ответ


0

Сертификат для HTTPS не настроен в конфигурации WCF. Вы должны настроить сертификат для http.sys. Для этого используйте netsh.exe из командной строки с повышенными привилегиями. Если вы размещаете свой сервис в IIS /WAS, вам не нужно использовать netsh, и вы можете настроить HTTPS непосредственно в IIS .

ответил Ladislav Mrnka 21 AMpThu, 21 Apr 2011 11:00:09 +040000Thursday 2011, 11:00:09

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132