Tця стаття проведе вас через кроки встановлення SSL-сертифіката на Nginx та налаштування автоматичного перенаправлення з HTTP:// на HTTPS://.
1. Завантажте сертифікати на сервер, де розміщено ваш веб-сайт
Після виконання кроків генерації CSR коду та активації SSL, ви отримаєте архів у форматі zip з сертифікатами Sectigo (раніше відомими як Comodo) електронною поштою. Також їх можна завантажити з панелі вашого акаунту NiceNic.
Примітка: Якщо ви виберете сервер NGINX при активації сертифіката, ви отримаєте zip файл, що містить файл Сертифіката з розширенням '.crt' та файл набору центрів сертифікації (CA bundle) з розширенням '.ca-bundle'.
Завантажте обидва файли на ваш сервер будь-яким зручним для вас способом. Наприклад, використовуючи FTP-клієнт.
Ви також можете завантажити файл Bundle для кожного сертифіката, слідуючи інструкціям тут.
2. Об’єднайте всі сертифікати в один файл
Вам потрібно об’єднати всі сертифікати (ваш_домен.crt та ваш_домен.ca-bundle) в один файл з розширенням '.crt'.
Сертифікат вашого домену повинен йти першим у файлі, а потім ланцюжок сертифікатів (CA Bundle).
Перейдіть до каталогу, куди ви завантажили файли сертифікатів. Виконайте наступну команду для об’єднання файлів:
$ cat ваш_домен.crt ваш_домен.ca-bundle >> ваш_домен_(dá)chain.crt
Зверніть увагу, якщо файли сертифікатів були завантажені з вашого акаунту NiceNic, найкраще використовувати таку команду:
$ cat ваш_домен.crt > ваш_домен_(dá)chain.crt ; echo >> ваш_домен_(dá)chain.crt ; cat ваш_домен.ca-bundle >> ваш_домен_(dá)chain.crt
3. Створення окремого блоку сервера Nginx або редагування існуючого файлу конфігурації
Щоб встановити SSL-сертифікат на Nginx, потрібно вказати серверу, які файли використовувати, або а) створивши новий файл конфігурації, або б) редагуючи існуючий.
a) Додавши новий файл конфігурації для веб-сайту, ви можете бути впевнені, що не виникне проблем з окремим файлом конфігурації. До того ж, це значно полегшить усунення несправностей у разі проблем із новою конфігурацією.
Радимо створити новий файл конфігурації у цій папці:
/etc/nginx/conf.d
Це можна зробити за допомогою такої команди:
sudo nano /etc/nginx/conf.d/Your_домен*-ssl.conf
Де Your_домен*-ssl.conf — назва новоствореного файлу.
Наступним кроком скопіюйте і вставте один із наведеніших нижче блоків сервера для порту 443 та відредагуйте директорії. Переконайтеся, що ім’я сервера та шлях до веб-кореня збігаються в обох блоках сервера для портів 80 та 443. Якщо у вас є інші важливі параметри, які потрібно зберегти, також перенесіть їх у новий блок сервера.
б) Відредагуйте файл конфігурації веб-сервера за замовчуванням, який називається nginx.conf. Він має бути в одній із цих папок:
/usr/local/nginx/conf
/etc/nginx
/usr/local/etc/nginx
Ви також можете скористатися цією командою для пошуку файлу:
sudo find / -type f -iname "nginx.conf"
Коли знайдете файл, відкрийте його командою:
sudo nano nginx.conf
Потім скопіюйте і вставте один із блоків сервера для порту 443, наведених нижче, та відредагуйте директорії відповідно до свого блоку сервера для порту 80 (із співпаданим іменем сервера, шляхом до веб-кореня та іншими важливими параметрами, якщо потрібно). Альтернативно, ви можете скопіювати блок сервера для порту 80, вставити його нижче, оновити порт і додати необхідні директиви для SSL.
Оберіть блок сервера:
Нижче ви знайдете блок сервера для вашої версії Nginx.
Примітка: Щоб перевірити версію Nginx, виконайте команду:
sudo nginx -v

Примітка: Замініть значення імен файлів, як ваш_домен_(dá)chain.crt, у блоці сервера на свої дані та відредагуйте до них шляхи, використовуючи/path/to/.
Блок сервера для версії Nginx 1.14 та нижче:
server {
listen 443;
ssl on;
ssl_certificate /path/to/certificate/ваш_домен_(dá)chain.crt;
ssl_certificate_key /path/to/ваш_private.key;
root /path/to/webroot;
server_name ваш_домен.com;
}
Примітка: Можна вказати кілька імен хостів у такій конфігурації, якщо потрібно, наприклад:
server {
listen 443;
ssl on;
ssl_certificate /path/to/certificate/ваш_домен_(dá)chain.crt;
ssl_certificate_key /path/to/ваш_private.key;
root /path/to/webroot;
server_name ваш_домен.com www.ваш_домен.your;
}
Блок сервера для версії Nginx 1.15 та вище:
server {
listen 443 ssl;
ssl_certificate /path/to/certificate/ваш_домен_(dá)chain.crt;
ssl_certificate_key /path/to/ваш_private.key;
root /path/to/webroot;
server_name ваш_домен.com;
}
ssl_certificate має вказувати на файл з об’єднаними сертифікатами, створеними раніше.
ssl_certificate_key має вказувати на приватний ключ, що був згенерований разом із CSR кодом.
Ось кілька порад, як знайти приватний ключ на Nginx.
Важливо: Для мультідоменного або Wildcard сертифіката необхідно додати окремий блок сервера для кожного домену/піддомену, що входить до сертифіката. Переконайтеся, що ви вказали потрібний домен/піддомен і шляхи до однакових файлів сертифікатів у відповідному блоці сервера, як описано вище.
Після додавання відповідного блоку сервера у файл, збережіть внесені зміни. Потім можна перевірити зроблені зміни наступними кроками.
Виконайте цю команду, щоб переконатися, що синтаксис файлу конфігурації правильний:
sudo nginx -t

Якщо виникли помилки, ще раз перевірте, чи ви правильно дотримувалися інструкцій. Якщо у вас є питання, звертайтеся до нашої служби підтримки.
Ось підказка: щоб знайти логи помилок для усунення проблем, виконайте:
sudo nginx -T | grep 'errабо_log'
Якщо жоден із згаданих файлів не існує, файли закоментовані або не вказані файли журналу помилок, потрібно перевірити системний журнал за замовчуванням:
tail /var/log/nginx/errабо.log -n 20
Якщо тест конфігурації успішний, перезапустіть Nginx командою для застосування змін:
sudo nginx -s reload
Тепер ваш SSL-сертифікат встановлено. Ви можете перевірити встановлення тут.
Важливі примітки:
Іноді після встановлення SSL-файлу, об’єднаного за допомогою командного рядка, ви можете отримати повідомлення про помилку 'Nginx/Apache errабо: 0906D066:PEM routines:PEM_read_bio:bad end line', у цьому випадку розв’язок можна знайти у посібнику довідки.
Ще одна поширена проблема на цьому етапі — повідомлення про помилку 'Nginx SSL: errабо:0B080074:x509 certificate routines: X509_check_private_key:key values mismatch', докладніше про неї та можливі вирішення можна знайти в цій статті.
4. Налаштування перенаправлення HTTPS
Радимо встановити перенаправлення з HTTP на HTTPS. Таким чином, відвідувачі вашого сайту зможуть заходити тільки в безпечну версію вашого сайту.
Для цього потрібно додати один рядок у файл конфігурації з блоком сервера для порту 80.
Поради:
Ви можете використовувати одну з наступних команд, щоб переглянути зараз активні файли конфігурації:
sudo nginx -T | grep -iw "configuration file"
sudo nginx -T | grep -iw "include"
Стандартні шляхи до конфігураційного файлу:
для ОС Linux на базі RHEL: /etc/nginx/conf.d/default.conf
для ОС Linux на базі Debian: /etc/nginx/sites-enabled/default
Ви можете відкрити файли, щоб перевірити, який з них містить потрібний блок сервера. Для цього виконайте:
sudo nano name_of_the_file
Коли знайдете файл, що містить блок сервера для порту 80 (стандартний порт HTTP), додайте наступний рядок:
return 301 https://$server_name$request_uri;
Примітка: Вище наведене правило перенаправлення має бути останнім рядком у блоці сервера.