Мне нужно настроить несколько веб-серверов для использования HTTPS, я бы не стал рассматривать какой-либо «высокий уровень безопасности», но я хочу охватить по крайней мере основные рекомендации по безопасности.
Мне интересно, где я должен хранить закрытый ключ, необходимый веб-серверу для поддержки HTTPS, и как я должен обрабатывать доступ к нему? Из того, что я прочитал, создание закрытого ключа без пароля и в зависимости от прав доступа к файлам является стандартом для веб-сервера, который не требует высокой безопасности. Однако наиболее вероятным компромиссом для любого веб-сервера является эксплойт на самом сервере, в результате чего любой, кто получил доступ к ящику, уже имеет доступ для чтения к моему ключу. Есть ли простой способ минимизировать эту угрозу?
Я также не уверен, где хранить ключ в отношении соглашений centos. Похоже, что / etc / pki - это то место, где я должен разместить свои ключи, но я не уверен, где в этом каталоге обычно хранятся частные / открытые ключи, я не понимаю его структуру каталога. Я читал о закрытых ключах, которые хранятся в / etc / pki / private, но этого напрямую не существует по умолчанию, что заставляет меня задаться вопросом, заключается ли соглашение о создании каталога или хранении ключа в другом месте. Что еще более важно, в том, что я прочитал, также говорилось, что / etc / pki / private должен быть доступен для чтения только root, но мой веб-сервер не будет работать как root, поэтому мне нужно либо сохранить закрытый ключ в другом месте, либо открыть доступ к / etc / pki / private для моего веб-сервера.
В современных версиях CentOS обычным каталогом для закрытых ключей будет /etc/pki/tls/private/
, который не должен иметь никаких разрешений для кого-либо, кроме root. Соответствующие открытые ключи должны храниться в /etc/pki/tls/certs
.
Включение SELinux, AppArmor или какого-либо другого MAC (обязательного контроля доступа), если вы предпочитаете это, должно помочь предотвратить доступ любого веб-эксплойта к вашему закрытому ключу.
Конечно, ничто не мешает вам хранить их где-нибудь еще, но тогда вам нужно будет установить MAC ACL вручную, если вы их используете.
Главный процесс для вашего веб-сервера обычно запускается от имени пользователя root, в том числе для чтения закрытых ключей SSL, поэтому достаточно поместить его в место, которое может читать только root. Если ваш сервер скомпрометирован, вы все равно будете повторно вводить ключи SSL-сертификатов, и у вас есть более серьезные проблемы, чем MITMing.
Местоположение вообще не имеет значения (пока существуют вышеупомянутые разрешения), поэтому размещайте его там, где вам будет удобно. Возможно нет /tmp
, но я предпочитаю папку с названием keys
или ssl
в каталоге конфигурации веб-сервера в /etc
.