Я намагаюся встановити захищене з'єднання (https) у nginx.
Але я трохи стурбований дозволами приватного ключа, які не згадуються в жодному підручнику.
Чи варто їх змінити? До того, що?
Я намагаюся встановити захищене з'єднання (https) у nginx.
Але я трохи стурбований дозволами приватного ключа, які не згадуються в жодному підручнику.
Чи варто їх змінити? До того, що?
Відповіді:
Приватні ключі повинні мати сильне обмеження читання. Налаштування дозволів на 600власність та належність їм rootмає працювати. Однак є й інші безпечні налаштування дозволів - Ubuntu зберігає ключі в каталозі з власником, rootгрупою ssl-certта дозволами 710. Це означає, що лише члени програми ssl-certмають доступ до будь-яких файлів у цьому каталозі. Приватні ключі мають групу ssl-cert, власника rootта дозволи 640.
У мене виникла проблема з налаштуванням nginx, і я натрапив на це питання. Інша відповідь тут вже безпосередньо відповіла на питання, але я подумав, що трохи більше інформації буде корисним.
Як правило, nginx запускається як rootкористувач за допомогою init script / systemd. Однак nginx також має можливість перейти до менш привілейованого користувача для звичайних операцій. Тож моє запитання було, який користувач використовується для завантаження сертифікату / ключа ssl? Початковий привілейований користувач або той, на кого переключено?
На щастя, nginx використовує початкові дозволи для читання сертифіката та ключа в пам'яті перед переключенням користувачів. Таким чином, зазвичай ви можете залишати ключі з дуже обмеженими дозволами, оскільки вони завантажуються nginx, коли він все ще працює як root.
Проблема, з якою я зіткнувся, що приземлився тут, полягав у тому, що я визначав ssl_certificateлише свої serverблоки в nginx.conf. У [error] 18606#18606: *311 no "ssl_certificate" is defined in server listening on SSL port while SSL handshakingмене виникали помилки, як коли я знав, як добре, що мої ключі знаходяться в потрібному місці. Це питання полягало в тому, що я не мав рівня ssl_certificateна httpрівні nginx.conf.
Сподіваюся, це комусь корисно.
nginxгрупі. Веб-сервер зможе ними користуватися, навіть якщо вони читаються лишеroot(як належить).