Bezdepbonusu7Программирование: статьи и ответы

Вопрос

WCF доверяет клиентским сертификатам только из одного корневого ЦС

Автор вопроса: user1073145Ответов: 1

При защите служб WCF с помощью сертификатов сервера и клиента существует простой способ убедиться в подлинности сертификата поставщика услуг (сертификата сервера) путем сравнения открытого ключа или отпечатка пальца сертификата отправителя с ожидаемым значением.

На http://msdn.microsoft.com/en-us/library/ff648360.aspx это объясняется в шаге 8. Вы можете настроить файл app.config в разделе конечной точки с элементом идентификации, куда вы можете передать ожидаемое закодированное значение отпечатка пальца сертификата сервера. Сравнение полученного сертификата службы и ожидаемого значения гарантирует, что я говорю с ожидаемым сервером.

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

(Я думаю, что это может быть эквивалентным способом закрепления сертификатов для клиентских сертификатов, выпущенных на RootCA)

httpsssl-certificatewcfclient-certificatesdigital-certificate

Ответы

Ответ 1 · Scott Thornton

Единственный способ добиться этого - создать собственный валидатор сертификатов x509. Затем для каждого входящего запроса вы можете просто проверить, был ли сертификат клиента выдан вашим корневым центром сертификации. На самом деле это довольно легко сделать. Вы можете найти шаги для реализации этого здесь:

Как создать службу, использующую пользовательский валидатор сертификатов

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы