2009-02-09 8 views
10

В настоящее время я работаю над проектом, в котором я создал сертификат CA и пару дочерних сертификатов для этого сертификата CA. Сертификаты будут использоваться для защиты межсерверной связи в настройке SAMLV2, поэтому я собираюсь получить сертификат для поставщика удостоверений и сертификат для поставщика услуг. Пользователь/браузер не собирается проверять сертификаты, поэтому только серверы должны доверять моему настраиваемому ЦС. Мой серт дерево выглядит примерно так:Почему использование сертификата, сделанного с помощью инструмента MakeCert, плохо работает?

  • CustomRootCACert
    • CustomIdentityProviderCert
    • CustomServiceProviderCert

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

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

ответ

18

Спросите себя, что подтверждает сертификат.

Если вы получаете сертификат, выданный авторитетным ЦС, то это доказывает, что владелец сертификата подтвердил свою личность с этим ЦС, до их стандартов доказательства.

Если вы получаете сертификат, выданный специальным CA, то это доказывает, что кто-то знает, как делать сертификаты.

Если вы контролируете оба конца разговора, я думаю, что это нормально, если у вас есть собственный CA. Вероятно, вы действительно можете сделать это очень безопасным (сохраняя секретный ключ CA в безопасном месте в автономном режиме и делая подписку на упражнение sneakernet).

3

Нет реальной проблемы с использованием самоподписанного сертификата в частном порядке, который используется при управлении всеми системами, которым необходимо доверять корневому сертификату доморощенного.

Вы вручную устанавливаете свой корневой сертификат на каждую из систем, которым нужно доверять.

Вы можете сделать это в производстве, а также для использования в браузере - например, в организации, где root ca может быть развернут с помощью метода распространения программного обеспечения - нет причин идти за счет оплаты Центра сертификации, который Microsoft доверяет.

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

5

ЕСЛИ сертификаты передаются только внутри, между вашими собственными серверами (и не используются клиентом, так или иначе) - тогда вполне приемлемо использовать собственный внутренний ЦС.
ОДНАКО, одно предложение - не нужно, чтобы ваш корневой ЦС выдал сертификаты вашего провайдера.Вместо этого используйте свой корневой ЦС для создания промежуточного ЦС, а затем используйте его для выдачи сертификатов поставщика. Это поможет вам в более длительном сроке, когда вам нужно начать управлять истечением срока действия сертификата, расширять систему/инфраструктуру, списки отзыва и т. Д.

+0

Спасибо за совет! У вас есть ссылки на дополнительную информацию об этой практике? – JohannesH

+0

попробуйте следующее: http://technet.microsoft.com/en-us/library/dd277378.aspx#EGAA. По крайней мере, для начала ... – AviD

+0

Ничего себе, это огромно ... Спасибо! :) – JohannesH

7

Поскольку вы используете сертификат только для защиты сетевого трафика, а не для аутентификации пользователей/компьютеров, тогда похоже, что у вас есть законное использование для использования MakeCert.exe.

Я чувствую, что стоит упомянуть одно. После того, как вы потратите некоторое время на работу с интерфейсом MakeCert.exe, вы можете вместо этого использовать автономный корневой сервер сертификатов.

Рассмотрим следующие моменты:

  • (Почти) Все версии Windows Server включают службы сертификатов сервера для свободного
  • Windows, Stand-Alone CA Server очень прост в установке и настройке
  • Windows, УДЕРЖАНИЯ Alone CA Server может быть установлен на виртуальной машине и включен/выключен всякий раз, когда вам нужно выдать дополнительный сертификат.
  • Автономный CA-сервер на базе VM может работать с очень маленькой памятью (например, 256 МБ)
  • Windows Stand-Alone CA Server включает в себя приятный и чистый веб-интерфейс регистрации для упрощения запроса сертификатов.
  • Проверка CRL может использоваться или не использоваться в зависимости от ваших потребностей.

В прошлом я сначала начал с selfssl.exe и в конечном итоге перешел в MakeCert.exe для создания корневого сертификата, а затем выдал мои клиентские сертификаты. Но после борьбы с синтаксисом и всегда помню, где я помещаю этот Root Certificate, я перешел на использование автономного корневого CA на виртуальной машине.

+0

Спасибо за отзыв. +1;) – JohannesH