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

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

  • CustomRootCACert
    • CustomIdentityProviderCert
    • Кустомсервицепровидерсерт

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

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


person JohannesH    schedule 09.02.2009    source источник


Ответы (4)


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

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

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

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

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

person slim    schedule 09.02.2009

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

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

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

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

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

person Dscoduc    schedule 19.02.2009

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

person AviD    schedule 09.02.2009
comment
Спасибо за совет! Есть ли у вас какие-либо ссылки на дополнительную информацию об этой практике? - person JohannesH; 09.02.2009
comment
попробуйте это: technet.microsoft.com/en-us/library/dd277378 .aspx#EGAA. По крайней мере для начала... - person AviD; 09.02.2009
comment
Вау, это огромно... Спасибо! :) - person JohannesH; 09.02.2009
comment
Отзыв не имеет большого значения, поскольку самозаверяющий сертификат не содержит конечной точки списка отзыва сертификатов. Кроме того, есть вероятность, что они использовали очень длинный срок действия, поскольку для самозаверяющих сертификатов нет автоматической регистрации. - person Dscoduc; 19.02.2009
comment
Он говорит об использовании внутреннего собственного ЦС - это не то же самое, что самозаверяющий сертификат (где сертификат подписывает сам себя, никакого ЦС вообще). В этом случае ЕСТЬ CRL, и длинные даты истечения срока действия также подвержены своим собственным проблемам - что, собственно, и было моей точкой зрения... - person AviD; 19.02.2009

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

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

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

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

person Alan Mullett    schedule 09.02.2009