Безопасность WCF — Сертификаты

У меня есть вопрос о безопасности WCF. У меня не конкретная проблема, а скорее общий вопрос.

Если я создаю службу WCF и защищаю ее с помощью сертификатов, должен ли каждый клиент, использующий эту службу, иметь соответствующий сертификат клиента?

Например, если у меня есть клиентское приложение Winforms, которое взаимодействует со службой WCF (которая использует сертификаты), должен ли клиент иметь соответствующий сертификат клиента? - или клиент может общаться без установленного сертификата?

Спасибо.


person Chris    schedule 25.06.2013    source источник


Ответы (2)


Возможно, вы путаете сертификаты сервера с сертификатами клиентов. Непонятно, что вы имеете в виду, когда говорите, что служба «защищена сертификатами». И серверные, и клиентские сертификаты могут «защищать» службу, хотя и по-разному: сертификат сервера путем шифрования связи, сертификаты клиента путем ограничения обслуживания только авторизованными клиентами.

Настройка с использованием только сертификата сервера аналогична настройке любого веб-сайта, обслуживаемого через HTTPS, только на сервере «установлен» сертификат (то есть на нем есть закрытый ключ сертификата). Хотя у клиентов нет собственных сертификатов, сервер передает им свой собственный сертификат, и они могут проверить с его помощью подлинность сервера, предполагая, что они доверяют органу, подписавшему сертификат. Кроме того, после установления удостоверения сервера сертификат обеспечивает основу для шифрования сеанса между клиентом и сервером.

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

Чтобы использовать клиентские сертификаты, каждый клиент должен иметь действительный сертификат и закрытый ключ, которые не будут совпадать с сертификатом сервера. Опять же, сервер не обязательно хранит локальную копию этих сертификатов — они обмениваются во время подтверждения безопасности.

«Действительный» в этом контексте означает приемлемый в качестве средства идентификации для сервера с использованием некоторых установленных критериев (например, белый список клиентских сертификатов или требование, чтобы клиентские сертификаты были выданы определенным органом). Хотя клиенты часто могут просто доверять цепочке центров сертификации до доверенного корня, чтобы принять сертификат сервера как действительный, должны быть некоторые дополнительные ограничения, налагаемые на допустимые клиентские сертификаты. для аутентификации — в большинстве случаев было бы бесполезно разрешать любому произвольному клиенту с доверенным сертификатом подключаться к службе, настроенной для аутентификации клиентов с использованием клиентских сертификатов.

person anton.burger    schedule 25.06.2013
comment
Спасибо за четкий ответ. Я путал сертификаты HTTPS с сертификатами WCF. Ваше объяснение прояснило это. Еще раз спасибо. - person Chris; 25.06.2013
comment
Извините, но, насколько я знаю, нет ничего похожего на сертификат HTTPS или сертификат WCF, концептуально все это просто сертификаты, и все они работают одинаково. Не могли бы вы уточнить. - person Anu; 25.06.2013

Мистер Фрост, позвольте мне помочь вам, сначала изложив короткую последовательность того, как работает сертификат, это важно:

  1. Браузер (здесь браузер — клиент, это может быть любой другой клиент) запрашивает безопасную страницу (обычно https://).

  2. Веб-сервер отправляет свой открытый ключ со своим сертификатом.

  3. Браузер проверяет, был ли сертификат выдан доверенной стороной (обычно доверенным корневым ЦС), что сертификат все еще действителен и что сертификат связан с сайтом, к которому обращаются.
  4. Затем браузер использует открытый ключ для шифрования случайного симметричного ключа шифрования и отправляет его на сервер с требуемым зашифрованным URL-адресом, а также с другими зашифрованными данными http.
  5. Веб-сервер расшифровывает симметричный ключ шифрования, используя свой закрытый ключ, и использует симметричный ключ для расшифровки URL-адреса и данных http.
  6. Веб-сервер отправляет обратно запрошенный html-документ и данные http, зашифрованные с помощью симметричного ключа.
  7. Браузер расшифровывает данные http и документ html с помощью симметричного ключа и отображает информацию.

Теперь в чем разница между сертификатом клиента и сервера? server-certificates.aspx" rel="nofollow">Ссылка

Теперь, отвечая на ваш вопрос «должен ли клиент иметь этот соответствующий сертификат клиента», да, без этого концепция не работает.

person Anu    schedule 25.06.2013