Я исследовал, как защитить приватные ключи для сертификатов SSL, используя nginx в качестве веб-сервера, но не смог найти много удовлетворительных ответов.
В частности, для клиентов, которые хотят, чтобы я развернул веб-сайт в их собственном субдомене, они опасаются, что кто-то может получить доступ к закрытому ключу сертификата их субдомена и, следовательно, настроить законно выглядящий небезопасный веб-сайт. Они попросили меня использовать какое-то программное обеспечение для хранилища, чтобы защитить их закрытый ключ.
Эта статья из блога nginx, а также вот этот описывают некоторые решения, но, в конце концов, они оба основываются на одном и том же принципе: закрытый ключ защищен парольной фразой, которую мы будем извлекать из локального или удаленного местоположения, и для этой процедуры «извлечения» требуется пароль / токен .. который хранится локально.
Следовательно, я не могу понять, как закрытый ключ действительно становится более безопасным - это немного похоже на блокировку вашего входного ключа в ящике для ключей вместо того, чтобы оставлять его под ковриком ... а затем оставлять ключ ящика для ключей под ковриком.
Я что-то упускаю? Есть ли лучший способ защитить закрытый ключ с помощью nginx?
Исходя из вашего последнего комментария, я вижу несколько вариантов:
/etc/ssl
. Взлом размещенного интернет сайт гораздо более распространен, чем весь сервер, и, таким образом, есть защита от его чтения таким образом.А насчет предоставления вам сертификата SSL: они не обязаны. Вы можете просто настроить Letsencrypt. Дополнительным бонусом является то, что эти сертификаты недолговечны.
Все прикрыто комментариями и ответами, я бы просто
как и складывать, одного лишь кражи сертификатов недостаточно. Злоумышленник также должен указать действующий домен, для которого был проверен сертификат.
В случае фишинговых атак сайт может выглядеть так же, но
домен может быть другим, и сертификаты не будут работать с другим доменом.
Пока DNS не указывает правильный IP-адрес, а DNS не подделан или не испорчен, кража сертификатов SSL бесполезна.
В этой ситуации, когда клиент несколько сомневается, вы можете использовать сертификаты Let's encrypt, которые поставляются с меньшим периодом
срока действия (90 дней). И должны регулярно обновляться.
Для получения и обновления сертификатов Let's encrypt каждый раз требуется проверка домена. Так что кража сертификатов долго не принесет пользы.
Есть одно решение, но оно не отменяет необходимости доверять своему серверу. Если ваш Клиент желает разместить свою запись на вашем сервере, он должен как-то вам доверять. Есть одно решение, которое может защитить вашего клиента.
Они указывают субдомен на Брандмауэр веб-приложений, лайк Cloudflare. Они создают вам сертификат Origin (тот, который находится на вашем сервере) и отправляют вам сертификат и ключ через доверенный протокол связи, такой как GPG.
Они указывают этот субдомен на IP-адрес вашего сервера.
Oни не дают вы получаете доступ к их учетной записи Cloudflare.
Сохранение всего этого. Они контролируют сертификат Edge. Они контролируют сертификат происхождения. Они всегда могут его отозвать. Они контролируют свои владения. Единственное, что ваш Клиент не контролирует, это, конечно, ваш сервер. ;)
Конечно, все настройки безопасности, представленные @Halfgaar, все еще актуальны.
————————————————————-
Если вы хотите укрепить доверие, вы можете показывать аудиты со своего сервера. Присутствуют журналы аудита. Докажите, что безопасность ваших серверов соответствует стандартам, например НИСМ или STIGS.