В 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
тоже будет нормально работать.
Ставить общественный 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» тоже подойдет.
sudo a2enmod ssl
(см. последний абзац) *
sudo nano /etc/apache/sites-available/mysiteexample-ssl.conf
sudo a2ensite mysiteexample-ssl
# ^^^^^^^^^^^^^^^^^ <-Substitute your ".conf" filename(s)
sudo service apache2 restart
или
sudo systemctl restart apache2.service
* Опять же, это выходит за рамки вопроса, но вы можете скопировать файл конфигурации сайта 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
.