2016-06-09 4 views
0

Я последовал за this учебным пособием, чтобы создать самозаверяющий сертификат ЦС, а затем самоподписанный сертификат SSL, основанный на сертификате CA. Затем я установил SSL-сертификат в IIS для доступа к внутреннему сайту через локальный IP-адрес, например. 10.0.0.1. Я хочу использовать HttpClient, чтобы сделать запрос на сайте следующим образом:Доверяющий самоподписанный сертификат с использованием HttpClient

using (var httpClient = new HttpClient()) 
{ 
    var text = await httpClient.GetStringAsync("https://52.19.32.61:5010"); 
} 

Я добавил свой самозаверяющий сертификат ЦС на локальных машинах доверенных корневых сертификатов, однако, я все еще получаю следующее исключение (Есть ответы говорит мне, чтобы отключить проверки SSL не полезны).

System.Net.Http.HttpRequestException: произошла ошибка при отправке запроса. System.Net.WebException: базовое соединение было закрыто: не удалось установить доверительные отношения для защищенного канала SSL/TLS . System.Security.Authentication.AuthenticationException: Удаленный сертификат недействителен в соответствии с процедурой проверки.

+0

Ваш вопрос аналогичен этому: http://stackoverflow.com/questions/2675133/c-sharp-ignore-certificate-errors – Robo

+0

Я ** не ** прошу игнорировать ошибки сертификата. –

ответ

1

SelfSigned CA должен находиться в хранилище LocalMachine \ Root на сервере и на любом клиенте, подключающемся к серверу.

Сертификат SSL должен иметь точное имя DNS, которое клиенты будут использовать для подключения к нему. Он может иметь несколько имен DNS, указанных в сертификате в расширении имени альтернативного имени объекта (SAN). В вашем случае, если вы используете IP-адрес, либо

  • вы поместите IP-адрес в сети SAN или
  • вы помещаете IP-адрес в файл хостов с именем DNS вы указали при выдаче сертификата SSL и использовать это имя DNS в HttpClient

Для выдачи сертификатов вы можете использовать XCA. Он имеет красивый графический интерфейс и построен поверх OpenSSL. Он имеет предопределенные шаблоны для CA и SSL-сервера. Дополнительная информация в документации here.