Как установить цепочку сертификатов клиентов в WinHttp

98
12

Я работаю над клиент-серверным приложением, где сервер является веб-сервером, который выполняет проверку клиента на основе сертификата SSL. Сервер доверяет корневому сертификату ЦС. Клиент - это приложение Windows, разработанное в C++, которое имеет сертификат, подписанный промежуточным CA, который, в свою очередь, подписан Root CA. Я могу установить клиентский сертификат во время соединения https, вызывая WinHttpSetOption api с параметром WINHTTP_OPTION_CLIENT_CERT_CONTEXT. Однако это установит только клиентский сертификат, но не всю цепочку. Сервер не имеет промежуточного ЦС в своем хранилище, следовательно, он не может аутентифицировать клиента.

Есть ли способ установить полную цепочку сертификатов клиентов в WinHttp, если полная цепочка уже присутствует в хранилище сертификатов клиента?

спросил(а) 2021-01-19T19:45:49+03:00 2 месяца, 3 недели назад
1
Решение
86

Сервер должен иметь сертификат ЦС заранее, он не будет доверять корневому ЦС, который клиент передает ему. (Я не уверен, будет ли это (серверная сторона) доверять промежуточному ЦС, подписанному доверенным ЦС, но моя склонность говорит нет).

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

ответил(а) 2021-01-19T19:45:49+03:00 2 месяца, 3 недели назад
-4

Только я мог найти это, чтобы добавить Sub CA в системный магазин. Во время запуска или установки сервиса откройте хранилище сертификатов ЦС и добавьте контекст сертификата.

ответил(а) 2021-01-19T19:45:49+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема