Я начал разрабатывать безопасный веб-сервис и изучаю концепции SSL.
Требование: я хочу защитить свою веб-службу (разрешить доступ к веб-запросам, для которых к их запросу добавлен сертификат клиента).Клиент может отправить запрос из настольного / веб / консольного приложения в наш веб-сервис.
Что у меня есть (Ресурсы):
Действительный сертификат, выданный моему сайту * .wildcard.com, этот сертификат установлен на моем сервере с открытым IP-адресом и доменом сопоставлен с подстановочным знаком.ком.Этот сертификат используется для настройки привязки SSL (443) для моего сайта.Целью этого сертификата является Аутентификация сервера (1.3.6.1.5.5.7.3.1) Аутентификация клиента (1.3.6.1.5.5.7.3.2).
Что я пробовал до сих пор:
Среда на стороне сервера
В IIS я настроил свой веб-сервис @ https://wildcard.com/SSLTest/Connect.asmx и установил параметры SSL как:
[Настройки SSL IIS] (https://drive.google.com/file/d/1BGqXjj1Xh365lSm0NU_jXr0CheR6DpK5/view?usp=sharing)
Затем в редакторе конфигурации -> system.webServer / security / authentication / iisClientCertificateMappingAuthentication
Я попытался настроить onetoOneMappings как:
[OnetoOneMapping] (https://drive.google.com/file/d/1vga_cieP-8iJzl9aLflGTFP-yDaG0xn4/view?usp=sharing)
в указанных выше настройках сертификат - это значение между Начальной и Конечной строкой сертификата из файла .cer (открытый ключ), созданного с использованием сертификата SSL.
Среда на стороне клиента:
Я написал консольное приложение (C # .net), которое отправляет SOAP-запрос с использованием HTTPWebRequest .net framework и добавляет сертификат клиента в объект запроса как
webRequest.ClientCertificates.Add(cert);
Этот сертификат выбран изклиентская машина using:
X509Store computerCaStore = new X509Store(StoreName.My, StoreLocation.LocalMachine);
и затем отправляется запрос на https://wildcard.com/SSLTest/Connect.asmx. Но я получаю сообщение об ошибке 403.7 Forbidden Error.Когда я отправляю сертификат (с закрытым ключом), это работает.
Обязательно ли отправлять закрытый ключ с клиентского компьютера в запросе?Если да, то безопасность подвергается риску, поскольку мы не можем делиться секретным ключом с другими.Итак, как я собираюсь раздавать открытый ключ клиентам, чтобы они могли получить доступ к веб-сервису.Или, может быть, я неправильно понял сценарий?Что такое использование iisClientCertificateMappingAuthentication в IIS?
~ Спасибо