powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / WebAPI + SSL + ClientCertificate - проблема
1 сообщений из 1, страница 1 из 1
WebAPI + SSL + ClientCertificate - проблема
    #38992283
balykovdron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проясните, кто разбирается в сертификатах и как оно должно работать... Мне как разработчику поступила задача защитить web api сервис передачей клиентских сертификатов на защищенном соединении SSL.
Пишу решение в VS2013 WebAPI 2.2. Использую несколько статей - но смысл в них очень простой. Сделайте вот так и у вас все заработает. Например на сайте MS http://www.asp.net/web-api/overview/security/working-with-ssl-in-web-api

Делаю 1:1 (или точь-в-точь, кому как нравится) - получается, что запрос с сертификатом, который приходит на сервер не содержит приложенного сертификата. Чую тонкости именно в самих сертификатах, то кем они подписаны, и где лежат... Но блин тонкостей этих не знаю.

Расскажу как я сделал. сертификаты создавал с помощью makecert.exe. Создал сертификат (CA), с помощью которого буду подписывать другие сертификаты, положил его в Local Computer \ Trusted Root Certification Authorities.

Этим сертификатом подписал сертификаты сервера и клиента. Серверный (положил в Local Computer \ Personal) прибиндил к SSL на 443 порту IIS-а. На IIS включил SSL Settings \ Client sertificate = accept. В браузере API отзывается и подписывается серверным сертификатом.

Клиентский сертификат у меня лежит в CurentUser \ Personal и посылается серверу через такой код

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
var messageHandler = new WebRequestHandler();
// find a valid certificate
var cert = new X509Certificate2(@".......................\TestClientCert.cer", "ХХХХХХХХ");
messageHandler.ClientCertificates.Add(cert);
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; // не обращаем внимания на ругательства по отношению к серверному сертификату
HttpClient httpClient = new HttpClient(messageHandler);
var result = httpClient.GetAsync("https://localhost/SimpleCertMvcApp/api/values").Result;
Console.WriteLine(result.Content.ReadAsStringAsync().Result);



на сервере это обрабатывается DelegatingHandler-ром, который пытаясь получить сертификат сваливается в этот if, т.е. IsPresent = false. А свойство ClientCertificate не null конечно, но там все пустое...

Код: c#
1.
2.
3.
4.
if (!HttpContext.Current.Request.ClientCertificate.IsPresent)
            {
                return Task.Factory.StartNew(() => request.CreateResponse(HttpStatusCode.Unauthorized), cancellationToken);
            }



бьюсь уже 3 дня, сил нет... поможите плиз....
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / WebAPI + SSL + ClientCertificate - проблема
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]