Я пытаюсь использовать услугу, опубликованную другой компанией. Спецификации о AUTH и коммуникации:Ошибка в авторизации WCF с общим SSL с использованием сертификатов
- SOAP
- HTTPS с взаимной SSL аутентификации (2-полосная SSL)
- Используйте публичный сертификат, который они посылают нас (я использую в качестве ServiceCertificate)
- Используйте частный сертификат, который они создали для нас (я использую в качестве ClientCertificate)
- WS-Security с UsernameToken
Вот код, я пришел с до сих пор:
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 для сервис. Это может быть связано с тем, что сертификат сервера не настроен должным образом с HTTP.SYS в случае HTTPS. Это также может быть вызвано несоответствием привязки безопасности между клиентом и сервером.
Вещи, которые я уже пробовал:
- Добавление этой строки кода: "System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Ssl3;"
- Зарегистрируйте публичный сертификат в порту с помощью Netsh
- Используя эту команду: «Netsh HTTP добавить sslcert ipport = 0.0.0.0: 443 certhash = Отпечаток сертификата AppID = {Применение GUID}»
- Основываясь на другой проблеме мы имели в другом проекте
Я не знаю, как решить эту проблему, и я об этом не знаю! Уже искали много, и все, что я пробовал, не делает этого!
Хотя я не могу сказать вам, что случилось, я могу сказать вам, что может пойти не так, как надо с битами SSL3 и netsh: они могли бы отключить SSL3 после недавней атаки пуделя. Вы должны проверить, какие протоколы и шифры они предлагают в рукопожатии SSL (я предполагаю, что ваш браузер доверяет SSL-сертификату, по крайней мере), а затем посмотрите, включены ли эти шифры.Netsh бит не имеет значения, поскольку этот бит является серверной, а клиент youre полностью игнорирует этот бит, если вы не используете сервер локально. Вы можете использовать https://www.ssllabs.com/ для проверки того, что происходит со стороны сервера и на стороне клиента. – Maverik
закончилось ограничение слов: когда я сказал, что недавняя атака пуделя, я имею в виду как в новостях, а не как в вашей третьей стороне. – Maverik
@Maverik, спасибо! У меня есть руководство, объясняющее требования к аутентификации и подключению. То, что я знаю, я написал на вопрос, но я постараюсь задать им немного больше. К сожалению, ssllabs получил непредвиденную ошибку при проверке имени домена, но сертификат сервера (публичный, который я сказал) был там, с тем, чтобы доверять ему (VeriSign). –