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

Лучшее место для сертификата SSL и закрытых ключей в Ubuntu

В Ubuntu, похоже, лучшее место для закрытого ключа, используемого для подписи сертификата (для использования nginx), находится в /etc/ssl/private/

это ответ добавляет, что сертификат должен войти в /etc/ssl/certs/ но это кажется небезопасным местом. Делать .crt файлы должны быть в безопасности или они считаются общедоступными?

Файл .crt отправляется на все, что подключается; это публично. (chown root:root и chmod 644)

Добавить в закрытый ключ местоположение; убедитесь, что вы закрепили его должным образом, а также поместили его там. (chown root:ssl-cert и chmod 640)

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

Чтобы расширить ответ, я не использую местоположение по умолчанию /etc/ssl.
Мне проще хранить все свои в отдельной области из-за резервных копий + по другим причинам.

Для Apache SSL я держу свой в /etc/apache2/ssl/private или аналогичная «корневая зона» в /etc/.

Пример настройки

Этот пост предназначен для Ubuntu (Debian) + Apache, но должен работать на большинстве систем -
Просто примените разрешения и обновите местоположение / путь в данной конфигурации (apache / nginx / etc).
Если файлы ключей SSL защищены правильно (каталог и файлы), все будет в порядке. Обратите внимание на примечания!

Создать каталоги:

sudo mkdir /etc/apache2/ssl
sudo mkdir /etc/apache2/ssl/private
sudo chmod 755 /etc/apache2/ssl
sudo chmod 710 /etc/apache2/ssl/private

Примечание:
chmod 710 поддерживает ssl-cert группа под Ubuntu.
(См. Комментарии)
Установка разрешения на 700 на /etc/apache2/ssl/private тоже будет нормально работать.

Разместите файлы SSL:

Ставить общественный www ssl сертификат (ы) вместе с промежуточным сертификатом (ами) в /etc/apache2/ssl
Ставить частный ключ (ы) ssl в /etc/apache2/ssl/private

Владелец набора:

sudo chown -R root:root /etc/apache2/ssl/
sudo chown -R root:ssl-cert /etc/apache2/ssl/private/

Примечание:
Если у вас нет SSL-сертификат группы, просто используйте "root: root" в строке выше или пропустите вторую строку.

Установите разрешения:

Публичный сертификат (ы)

sudo chmod 644 /etc/apache2/ssl/*.crt

Закрытый ключ (и)

sudo chmod 640 /etc/apache2/ssl/private/*.key

Примечание:
Разрешение группы установлено на READ (640) из-за группы ssl-cert Ubuntu. «600» тоже подойдет.

Включите модуль Apache SSL

sudo a2enmod ssl

Отредактируйте любые файлы сайта Apache и включите

(см. последний абзац) *

sudo nano /etc/apache/sites-available/mysiteexample-ssl.conf
sudo a2ensite mysiteexample-ssl
#             ^^^^^^^^^^^^^^^^^ <-Substitute your ".conf" filename(s)

Перезапустите службу Apache2

sudo service apache2 restart

или

sudo systemctl restart apache2.service

Готово. Протестируйте свой новый SSL-сайт.

* Опять же, это выходит за рамки вопроса, но вы можете скопировать файл конфигурации сайта Apache SSL по умолчанию (sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/mysiteexample-ssl.conf) в качестве хорошей отправной точки / примера директив / каталогов по умолчанию, обычно используемых в простом (Ubuntu / Debian) файле Apache / SSL 'conf'. Обычно он указывает на самоподписанный сертификат SSL + ключ (snakeoil), пакеты CA, а также общие директивы используется для данного SSL-сайта.

После копирования просто отредактируйте новый файл .conf и добавьте / удалите / обновите его по мере необходимости с новой информацией / путями, указанными выше, затем выполните sudo a2ensite mysiteexample-ssl чтобы включить его.

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

Затем позже, если срок действия ваших сертификатов истек, и вы удаляете их, и не знаете, что нужно повторно запускать c_rehash, возможно, в вашем /etc/ssl/certs каталог, и странные вещи начинают происходить, когда ваш локальный компьютер пытается подключиться к себе через SSL и не может найти корни для проверки. Например, с curl у меня внезапно стали появляться:

curl: (60) SSL certificate problem: unable to get issuer certificate

Вскоре после очистки некоторых старых файлов .crt и связанных файлов .pem, которые у меня были в /etc/ssl/certs.

Хранение хотя бы ваших цепочек в другом месте позволяет избежать этой проблемы. В итоге я сделал /etc/ssl/local_certs для хранения моих сертификатов и цепочек, чтобы они не потерялись в беспорядке сертификатов CA, которые вы найдете в /etc/ssl/certs

На самом деле нет небезопасного места, если разрешение для отдельных файлов / каталога установлено на что-то вроде chown root :0 private.key и chmod 600 private.key так что только root может его прочитать. CSR и файлы сертификатов менее чувствительны, как вы говорите.

С этими разрешениями пути, которые вы указали, и / usr / local / ssl должны быть в порядке.

Локации верны:

  • /etc/ssl/certs/ для .crt файл
  • /etc/ssl/private для .key файл

Владелец должно быть root:root для обоих (используйте sudo chmod root:root <file> при необходимости изменить).

Разрешения:

  • 644 для .crt файл
  • 600 для .key файл

Это будет работать для nginx.