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

StackOverflow https://stackoverflow.com/questions/527768

Вопрос

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

  • Пользовательский кореньcacert
    • ПОЛЬЗОВАТЕЛЬСКИЙIDENTITYPROVIDERCERT
    • Пользовательскийserviceprovidercert

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

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

Это было полезно?

Решение

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

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

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

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

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

Другие советы

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top