Почему использование сертификата, созданного с помощью инструмента MakeCert, в производстве плохо? - PullRequest
11 голосов
/ 09 февраля 2009

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

  • CustomRootCACert
    • CustomIdentityProviderCert
    • CustomServiceProviderCert

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

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

Ответы [ 4 ]

20 голосов
/ 09 февраля 2009

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

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

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

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

Трудность была бы, если бы вам нужно было убедить кого-либо доверять вашему СА. Зачем им? Вам нужно будет убедить их в том, что это безопасно, и у них будет административная нагрузка на добавление вашего сертификата CA своим клиентам.

7 голосов
/ 19 февраля 2009

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

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

Рассмотрим эти моменты:

  • (Почти) Все версии Windows Server бесплатно включают в себя службы сервера сертификатов
  • Автономный CA Server для Windows чрезвычайно прост в установке и настройке
  • Автономный CA Server Windows может быть установлен на виртуальной машине и включен / выключен всякий раз, когда вам нужно выдать дополнительный сертификат
  • Автономный CA Server на базе виртуальной машины Windows может работать с использованием очень небольшого объема памяти (например, 256 МБ)
  • Автономный CA Server для Windows включает приятный и чистый веб-интерфейс регистрации для упрощения запроса сертификатов.
  • Проверка CRL может использоваться или не использоваться, в зависимости от ваших потребностей.

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

5 голосов
/ 09 февраля 2009

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

3 голосов
/ 09 февраля 2009

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

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

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

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

...