Моя компания разработала веб-сервис .NET и клиентскую DLL, которая использует этот веб-сервис. Веб-сервис размещается на нашем сервере через ssl, и сертификат предоставляется и подписывается GoDaddy. У нас есть клиенты в размещенной среде, которые получают следующее сообщение об ошибке от клиента dll при попытке доступа к нашему веб-сервису.
System.Net.WebException Базовое соединение было закрыто: не удалось установить доверительные отношения для безопасного канала SSL / TLS.
Наше исправление заключается в том, чтобы они открывали IE на сервере, что само по себе является проблемой для многих размещенных сервисов, и переходило на URL WSDL. IE затем предлагает их с диалоговым окном предупреждения безопасности. В нем говорится, что дата сертификата действительна, и действительное имя соответствует названию страницы, но было выпущено компанией, которой вы не доверяли. Когда они нажимают Да, чтобы продолжить, клиентская библиотека может затем успешно подключиться к веб-службе и работать в обычном режиме.
Кто-нибудь знает, почему GoDaddy не было бы в списке действительных издателей? На всех запущенных нами серверах GoDaddy имеет действительные полномочия. Я полагаю, по соображениям безопасности, они удалили полномочия для GoDaddy, но не полностью убеждены, что нет какой-то другой основной проблемы.
К сожалению, мне не повезло, пытаясь воссоздать это локально. Если я захожу в Свойства обозревателя и удаляю права доступа GoDaddy и нажимаю на наш сервис, ssl работает просто отлично. Я возвращаюсь в список издателей, и GoDaddy возвращается обратно. Итак, мой второй вопрос: Как, черт возьми, вы избавляетесь от GoDaddy, чтобы я мог получить предупреждение о недействительном сертификате?
Хорошо, последний вопрос. Есть ли способ в коде, который я могу сказать веб-службе игнорировать недействительные сертификаты. Я видел несколько сообщений о том, как делать это программно с WCF, но не со старыми веб-сервисами.