Плохо ли использовать самозаверяющие SSL-сертификаты?

29

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

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

Wookai
источник

Ответы:

14

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

Проверьте статью здесь, http://www.sslshopper.com/article-when-are-self-signed-certificates-acceptable.html, чтобы узнать немного больше о ней.

Бен Хоффман
источник
14

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

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

В тех случаях, когда самоподписанный сертификат не работает или вы предпочитаете «настоящий», я рекомендую Let's Encrypt , проект, начатый исследовательской группой по безопасности в Интернете и поддерживаемый крупными интернет-компаниями, который предлагает SSL-сертификаты на бесплатно. Они могут сделать это, потому что процесс проверки, который они используют, полностью автоматизирован, и на самом деле веб-сервер, который поддерживает их протокол ACME (например, Caddy , который я сейчас использую), может получить сертификаты полностью самостоятельно. Let's Encrypt не проверяет, что выкак личность - это то, кем вы говорите; он только подтверждает, что ваш веб-сервер способен обслуживать контент в домене, на который он претендует. Let's Encrypt поддерживается всеми основными браузерами, но общеизвестно, что проверка минимальна, поэтому, если вы используете что-то вроде сайта электронной коммерции или чего-то, где люди будут предоставлять конфиденциальную информацию, вам, вероятно, стоит потратить деньги, чтобы получить сертификат с более высоким уровнем проверки.

Раньше я рекомендовал бесплатные сертификаты StartSSL от StartCom для людей, которые не хотят платить за проверку, но больше не хотят. StartCom был тайно приобретен WoSign в 2016 году и впоследствии выдал незаконные сертификаты для нескольких доменов. В результате основные браузеры прекратили поддержку сертификатов StartCom. (Насколько я знаю, IE все равно их никогда не поддерживал.) В любом случае, Let's Encrypt гораздо удобнее.

Дэвид З
источник
+1 за первый абзац. Я использую самоподписанный сертификат для Webmin на своем сервере, потому что его используют только я и дизайнер, но я бы не рекомендовал делать это для общего публичного использования.
Рассерженная шлюха
3

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

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

Вместо этого я использую самозаверяющий сертификат SSL, который я генерирую на каждом из моих клиентских компьютеров (рабочая станция в офисе, ноутбук и домашняя рабочая станция). Такая настройка позволяет мне использовать довольно длинные, безопасные и совершенно уникальные парольные фразы для каждого из моих серверов без ущерба для производительности. И поскольку у меня есть прямой доступ к серверам, на которых я могу установить открытый ключ для каждого сертификата, мне нет смысла использовать сертификат, подписанный СА.

Я мог бы создать свой собственный корневой CA, с помощью которого я мог бы подписать все сертификаты внутреннего использования для нашей компании, и таким образом мне нужно было бы установить только один открытый ключ на каждом сервере. Однако наша организация не выросла до размера, который действительно требует этого, и для целей безопасного HTTP это все равно, что иметь самозаверяющий сертификат.

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

Lèse Majesté
источник
Я не понимаю, почему вы используете SSL-сертификаты в вашем случае? Вы упоминаете, что не хотите вводить свой пароль несколько раз: вы можете просто использовать закрытый ключ SSH с ssh-agent, чтобы автоматически аутентифицировать вас на каждом сервере без необходимости вводить пароль более одного раза.
Вукай
@Wookai: Это был бы один из способов сделать это для SSH, но использование клиентских сертификатов SSL является гораздо более универсальным методом аутентификации клиента. Я также использую свои клиентские сертификаты для аутентификации HTTPS и электронной почты, и если я решу настроить внутренний ЦС позже, он станет еще более гибким / мощным. На этом этапе мне не нужно устанавливать индивидуальные закрытые ключи для каждого клиента / пользователя. Это просто более надежное решение IMO.
Lèse Majesté
2

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

Cebjyre
источник