Не удалось установить доверительные отношения для безопасного канала SSL / TLS - SOAP - PullRequest
307 голосов
/ 01 апреля 2009

У меня есть простой вызов веб-службы, сгенерированный приложением Windows .NET (C #) 2.0, через прокси-сервер веб-службы, сгенерированный Visual Studio, для веб-службы, также написанной на C # (2.0). Это работало в течение нескольких лет и продолжает действовать в дюжине мест, где он работает.

Новая установка на новом сайте сталкивается с проблемой. При попытке вызвать веб-службу происходит сбой с сообщением:

Не удалось установить доверительные отношения для безопасного SSL / TLS канал

В URL-адресе веб-службы используется SSL (https://)), но он давно работает (и продолжает это делать) из многих других мест.

Куда мне смотреть? Может ли это быть проблемой безопасности между Windows и .NET, которая уникальна для этой установки? Если да, то где мне установить доверительные отношения? Я потерян!

Ответы [ 15 ]

2 голосов
/ 15 мая 2018

Попробуйте это:

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;

Обратите внимание, что вы должны работать хотя бы с 4.5 .NET Framework

1 голос
/ 12 июня 2017

Для тех, у кого возникла эта проблема через клиентскую сторону VS, однажды успешно добавили сервисную ссылку, и попытка выполнить первый вызов получила это исключение: «Базовое соединение было закрыто: не удалось установить доверительные отношения для безопасного канала SSL / TLS» Если вы используете (как и в моем случае) URL-адрес конечной точки с IP-адресом и получили это исключение, то вам, вероятно, необходимо повторно добавить ссылку на службу, выполнив следующие действия:

  • Откройте URL-адрес конечной точки в Internet Explorer.
  • Нажмите на ошибку сертификата (красный значок в адресной строке)
  • Нажмите на Просмотр сертификатов.
  • Захватите выданное «имя» и замените IP-адрес или любое другое имя, которое мы использовали, и получим ошибку для этого «имени».

Попробуй еще раз :). Спасибо

1 голос
/ 22 января 2014

У меня была эта ошибка при работе с веб-сервером с URL-адресом вроде:

a.b.domain.com

но для него не было сертификата, поэтому я получил DNS с именем

a_b.domain.com

Просто добавьте подсказку к этому решению здесь, так как оно вышло на первое место в Google.

0 голосов
/ 10 января 2017

Если не работает плохой сертификат, когда ServerCertificateValidationCallback вернет true; Мой ServerCertificateValidationCallback код:

ServicePointManager.ServerCertificateValidationCallback += delegate
{
    LogWriter.LogInfo("Проверка сертификата отключена, на уровне ServerCertificateValidationCallback");
    return true;
};

Мой код, который мешает выполнить ServerCertificateValidationCallback:

     if (!(ServicePointManager.CertificatePolicy is CertificateValidation))
    {
        CertificateValidation certValidate = new CertificateValidation();
        certValidate.ValidatingError += new CertificateValidation.ValidateCertificateEventHandler(this.OnValidateCertificateError);
        ServicePointManager.CertificatePolicy = certValidate;
    }

Функция OnValidateCertificateError:

private void OnValidateCertificateError(object sender, CertificateValidationEventArgs e)
{
    string msg = string.Format(Strings.OnValidateCertificateError, e.Request.RequestUri, e.Certificate.GetName(), e.Problem, new Win32Exception(e.Problem).Message);
    LogWriter.LogError(msg);
    //Message.ShowError(msg);
}

Я отключил сертификат CertificateValidation и ServerCertificateValidationCallback работает очень хорошо

0 голосов
/ 17 февраля 2014

В моем случае я пытался протестировать SSL в моей среде Visual Studio с использованием IIS 7.

Вот что я сделал, чтобы заставить его работать:

  • На моем сайте в разделе «Привязки ...» справа в IIS мне пришлось добавить привязку «https» к порту 443 и выбрать «Сертификат разработки IIS Express».

  • Под моим сайтом в разделе «Расширенные настройки ...» справа мне пришлось изменить «Активированные протоколы» с «http» на «https».

  • Под значком «Настройки SSL» я выбрал «Принять» для клиентских сертификатов.

  • Затем мне пришлось перезапустить пул приложений.

  • Мне также пришлось импортировать сертификат локального хоста в мой личный магазин, используя mmc.exe.

Мой web.config файл уже настроен правильно, поэтому после того, как я разобрался со всем вышеперечисленным, я смог продолжить тестирование.

...