Почему я не смогу установить доверительные отношения для канала SSL / TLS? - PullRequest
2 голосов
/ 31 декабря 2010

У меня есть фрагмент кода .NET, который выдает ошибку при вызове HTTPWebRequest.GetRequestStream. Вот сообщение об ошибке:

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

Я прочитал несколько вещей, которые предполагают, что мне может понадобиться сертификат на машине, на которой выполняется код, но я считаю, что у меня есть все необходимые сертификаты ...

Вот как я проверил наличие необходимых сертификатов:

  1. попал в веб-сервис с помощью Firefox.
  2. Посмотрите на используемые сертификаты ударить этот веб-сервис, посмотрев в информации о безопасности через браузер
  3. экспорт сертификатов
  4. импортировать сертификаты через Свойства обозревателя в панели управления

Это должно быть достаточно? Я все еще получаю сообщение об ошибке.

Код:

        var request = (HttpWebRequest)HttpWebRequest.Create(requestUrl); //my url
        request.Method = StringUtilities.ConvertToString(httpMethod); // Set the http method GET, POST, etc.

        if (postData != null)
        {
            request.ContentLength = postData.Length;
            request.ContentType = contentType;
            using (var dataStream = request.GetRequestStream())
            {
                dataStream.Write(postData, 0, postData.Length);
            }
        }

UPDATE:

Добавление скриншотов моих сертификатов. Дайте мне знать, если что-то выглядит не так:

Во-первых, у нас есть сертификат, который использует Firefox:

enter image description here

Далее, у нас есть то, что находится в моих доверенных корневых сертификатах согласно MMC:

enter image description here

Наконец, у нас есть то, что находится в моих промежуточных сертификатах в соответствии с MMC:

enter image description here

Это выглядит правильно?

1 Ответ

1 голос
/ 31 декабря 2010

Если сторонний веб-сервис защищен с помощью самозаверяющего сертификата, вам нужно будет установить его сертификат подписи CA в хранилище ключей доверенных сертификатов

РЕДАКТИРОВАТЬ на основе примера кода.

I 'мы попробовали пример, вызывающий эти URL-адреса Facebook без проблем, без проблем выполняющий http-доступ к одному из URL-адресов graph.facebook, используя приведенный ниже пример кода.Не могли бы вы обновить свой пример тем, что вы пытаетесь опубликовать и по какому URL?

На данный момент, как я вижу из моего, это похоже на работу, поэтому можно предположить проблему с сертификатом только наПК, вы выполняете его из неподвижного.

    {
        string requestUrl = "https://graph.facebook.com/btaylor";

        var request = (HttpWebRequest)HttpWebRequest.Create(requestUrl); //my url
        request.Method = "GET";

        WebResponse response = request.GetResponse();

        Stream responseStream = response.GetResponseStream();
        // TODO: Do whatever you need with the response
        Byte[] myData = ReadFully(responseStream);
        string s = System.Text.ASCIIEncoding.ASCII.GetString(myData);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...