nginx отдаёт клиенту всё, что лежит в файле ssl_certificate, — туда и кладут цепочку.
HTTPS в nginx включают три строки в блоке server:
listen 443 ssl — порт 443 и TLS на нём, ssl_certificate — файл сертификата, ssl_certificate_key — его закрытый ключ.
Сертификат в файле записан текстом PEM — блоком от -----BEGIN CERTIFICATE----- до -----END CERTIFICATE-----. Файл полной цепочки — такие блоки подряд: первым сертификат сайта, за ним промежуточный. Корень в файл не кладут: он уже есть у клиента. Ключ из ssl_certificate_key nginx сверяет с первым сертификатом файла.
Склеивает файл cat, а записать его в /etc/nginx/tls, куда пишет только root, помогает sudo tee — >/dev/null прячет копию, которую tee печатает на экран:
Дальше — как с любой правкой nginx: путь к новому файлу в ssl_certificate, sudo nginx -t и sudo systemctl reload nginx. reload возвращается раньше, чем новые процессы nginx начнут отвечать, поэтому проверку запускай отдельной командой.
Отдай цепочку целиком
Сделай так, чтобы nginx отдавал для app.lab.test сертификат сайта вместе с промежуточным — /etc/nginx/tls/lab-issuing-ca.crt. Конфигурация сайта — /etc/nginx/sites-available/app, сертификаты — в /etc/nginx/tls.
Цели · 0 из 2
- Собрать файл цепочки и указать его nginx ещё не выполнена
- Открыть app.lab.test по HTTPS без ошибки ещё не выполнена
Коллега склеил файл цепочки в обратном порядке — cat lab-issuing-ca.crt app.crt — и указал его в ssl_certificate. Что ответит sudo nginx -t?
-
До curl дело не дойдёт:
nginx -tне примет файл — ключ сайта не подходит к первому сертификату, Lab Issuing CA. -
nginx сверяет ключ из
ssl_certificate_keyс первым сертификатом файла. Первым стоит Lab Issuing CA, а ключ — от сайта.
nginx проверяет ключ по первому сертификату файла, поэтому сертификат сайта стоит первым.