Управление сертификатами с помощью WCF

У нас есть центральная служба WCF, которую мы предоставляем через netTcpBinding для дуплексной связи с клиентами.

Мы хотим разрешить только определенным компьютерам в Интернете связываться с этой службой WCF. Путь, по которому мы идем, - использовать сертификаты X509 для защиты транспортного уровня и обеспечения аутентификации клиента, например:

  <security mode="Transport">
    <transport clientCredentialType="Certificate"></transport>
    <message clientCredentialType="None"/>
  </security>

В настоящий момент мы вызываем MakeCert для генерации сертификатов X509 и указываем certificateValidationMode="PeerTrust", чтобы обойти тот факт, что мы сгенерировали наши собственные самозаверяющие сертификаты.

У меня вопрос: как нам управлять сертификатами клиентов? Мы не хотим, чтобы каждый клиент покупал собственный сертификат - их могут быть сотни, и это не вариант. Я полагаю, мы хотим действовать как наш собственный «коренной авторитет», но я не знаю, как это сделать ...


person Matt Roberts    schedule 11.05.2011    source источник
comment
Если ваш вопрос заключается в том, как настроить и использовать собственный центр сертификации, тогда вопрос относится к ошибке сервера.   -  person Ladislav Mrnka    schedule 11.05.2011
comment
Что ж, если создание нашего собственного центра сертификации - это решение этой проблемы (не так ли?), То, возможно, это мой вопрос ...   -  person Matt Roberts    schedule 11.05.2011
comment
Да, я думаю, это выход.   -  person Ladislav Mrnka    schedule 11.05.2011


Ответы (1)


Если вы не хотите, чтобы каждый клиент покупал свой сертификат у надежного поставщика сертификатов, такого как Verisign, у вас есть два других варианта: либо сгенерировать самозаверяющие сертификаты, как вы это делали (следует использовать только для тестирования), либо создать свой собственный PKI. (инфраструктура закрытого ключа).

Я думаю, что в вашем случае создание собственной PKI - это правильный путь. Как и другие сказали в комментариях:

  1. Начните с настройки машины в качестве центра сертификации:

    • Install Active Directory Certificate Services (Server Roles)
    • Настройте его как корневой центр сертификации
    • Настройте криптографию, имя и срок действия для этого ЦС
  2. Затем заставьте клиентов запрашивать сертификаты у этого ЦС.

  3. Вы утверждаете сертификат с точки зрения CA.

  4. Клиент устанавливает сертификат.

  5. Настройте конфигурацию WCF, чтобы использовать CA и сертификаты

Надеюсь, это поможет.

person Sergio Vicente    schedule 11.05.2011