Почему использование сертификата, созданного с помощью инструмента MakeCert, в производстве плохо?

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

  • CustomRootCACert
    • CustomIdentityProviderCert
    • CustomServiceProviderCert

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

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

4 ответа

Решение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам