Назад | Перейти на главную страницу

Защита секретного ключа SSL-сертификата с помощью nginx

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

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

Эта статья из блога nginx, а также вот этот описывают некоторые решения, но, в конце концов, они оба основываются на одном и том же принципе: закрытый ключ защищен парольной фразой, которую мы будем извлекать из локального или удаленного местоположения, и для этой процедуры «извлечения» требуется пароль / токен .. который хранится локально.

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

Я что-то упускаю? Есть ли лучший способ защитить закрытый ключ с помощью nginx?

Исходя из вашего последнего комментария, я вижу несколько вариантов:

  • Вы показываете, что у вас хорошая безопасность SSH, которая может включать доступ из белого списка IP-адресов, вход без пароля и т. Д.
  • Вы показываете, что файл закрытого ключа доступен для чтения только пользователю root и хранится вне корня документа, например, как обычно где-то в /etc/ssl. Взлом размещенного интернет сайт гораздо более распространен, чем весь сервер, и, таким образом, есть защита от его чтения таким образом.
  • О вышесказанном: осторожно при запуске контейнеров докеров; они обычно запускаются от имени пользователя root и, на мой взгляд, представляют собой проблему безопасности. Докер-контейнеры жестяная банка запускать без root (экспериментальный), но образы должны быть специально созданы для этого. Большинство изображений, которые вы получаете в другом месте, зависят от того, что вы root. Все, что в нем запущено от имени root, может сломать тюрьму. (Edit: это действительно требует некоторых нюансов после переоценки. Я должен сказать, мог сломать тюрьму. Это действительно зависит от безопасности некоторых дополнительных механизмов, о которых вам в противном случае не нужно было бы беспокоиться.)
  • Если они действительно обеспокоены, им следует настроить обратный прокси-сервер для вашего сервера, и они смогут выполнить завершение SSL на своей стороне.

А насчет предоставления вам сертификата SSL: они не обязаны. Вы можете просто настроить Letsencrypt. Дополнительным бонусом является то, что эти сертификаты недолговечны.

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

  • В случае фишинговых атак сайт может выглядеть так же, но
    домен может быть другим, и сертификаты не будут работать с другим доменом.

  • Пока DNS не указывает правильный IP-адрес, а DNS не подделан или не испорчен, кража сертификатов SSL бесполезна.

  • В этой ситуации, когда клиент несколько сомневается, вы можете использовать сертификаты Let's encrypt, которые поставляются с меньшим периодом
    срока действия (90 дней). И должны регулярно обновляться.

  • Для получения и обновления сертификатов Let's encrypt каждый раз требуется проверка домена. Так что кража сертификатов долго не принесет пользы.

Есть одно решение, но оно не отменяет необходимости доверять своему серверу. Если ваш Клиент желает разместить свою запись на вашем сервере, он должен как-то вам доверять. Есть одно решение, которое может защитить вашего клиента.

  • Они указывают субдомен на Брандмауэр веб-приложений, лайк Cloudflare. Они создают вам сертификат Origin (тот, который находится на вашем сервере) и отправляют вам сертификат и ключ через доверенный протокол связи, такой как GPG.

  • Они указывают этот субдомен на IP-адрес вашего сервера.

  • Oни не дают вы получаете доступ к их учетной записи Cloudflare.

Сохранение всего этого. Они контролируют сертификат Edge. Они контролируют сертификат происхождения. Они всегда могут его отозвать. Они контролируют свои владения. Единственное, что ваш Клиент не контролирует, это, конечно, ваш сервер. ;)

Конечно, все настройки безопасности, представленные @Halfgaar, все еще актуальны.

————————————————————-

Если вы хотите укрепить доверие, вы можете показывать аудиты со своего сервера. Присутствуют журналы аудита. Докажите, что безопасность ваших серверов соответствует стандартам, например НИСМ или STIGS.