SSL-сертифікат Comodo Positive SSL та Nginx

Запис про те, як згенерувати та налаштувати найпростіший SSL-сертифікат (Comodo Positive SSL) на веб-сервері Nginx. Сертифікат у даному прикладі замовлявся не у Comodo безпосередньо, а у його реселера ssl.com.ua за більш привабливу ціну. Суть від цього не змінюється, так як сертифікат все одно генерує і надсилає сам Comodo.

  1. Згенерувати CSR (Certificate Signing Request)
  2. Використовувати CSR для створення сертифіката
  3. Підготувати сертифікат для використання з Nginx
  4. Увімкнути SSL в Nginx за допомогою сертифіката

Згенерувати CSR

Для створення сертифіката будь-якому центру сертифікації потрібно CSR (запит на підписання сертифіката). Також, при генерації CSR створюється приватний ключ сертифіката, який буде використаний для розшифрування даних, що надходять з браузера, і зашифрованих відкритим ключем, що міститься в сертифікаті. Інструменти для генерації CSR є на багатьох сайтах, у тому числі, наприклад, тут: https://ssl.com.ua/online-CSR-generator/

В результаті вийде CSR, що виглядає приблизно так:

А на пошту вам прийде закритий ключ.

Використовувати CSR для створення сертифіката

Для генерації сертифіката на сайті, який видає сертифікати, потрібно знайти форму генерації сертифіката, і в ній встановити параметри:

Підготувати сертифікат для використання в Nginx

Для роботи SSL серверу nginx потрібні два файли - закритий ключ (який прийшов поштою, і він вже готовий), і підготовлений сертифікат.

Суть підготовки полягає в тому, що потрібно ваш особистий сертифікат (виданий для mydomain.ru) об'єднати в один файл з сертифікатами центру, що видав даний сертифікат (Comodo).

Архів з сертифікатом, який надсилається вам напошту, містить такі файли: 1. AddTrustExternalCARoot.crt — сертифікат кореневого центру сертифікації 2. COMODORSAAddTrustCA.crt - сертифікат самого Comodo 3. COMODORSADomainValidationSecureServerCA.crt — сертифікат сервера Comodo, що валідує домени 4. mydomain_ua.crt - сертифікат вашого сайту

Нам необхідно об'єднати файли 2,3,4 в один файл, що в консолі linux робиться простою командою:

cat ./mydomain_ua.crt ./COMODORSADomainValidationSecureServerCA.crt ./COMODORSAAddTrustCA.crt > ./mydomain_ua.cert

Також вам на пошту повинен був прийти архів із CSR-файлом, а також файлом закритого ключа. Про це йшлося на самому початку цієї нотатки. У надісланому архіві має бути 2 файли - csr.txt і rsa.txt, можуть вони називатися і трохи інакше, проте факт у тому, що приватний ключ - це НЕ CSR, а значить, в даному випадку, він знаходиться у файлі rsa. txt. Перейменуємо його для більшої впізнаваності:

mv ./rsa.txt ./mydomain_ua.key

Включити SSL в nginx за допомогою сертифіката

Приклад конфігурації, на якій сайт почне працювати через SSL:

/\. < deny all; access_log off; log_not_found off; ># Включаємо gzip-стиск по всьому серверу gzip on; gzip_comp_level 4; # Відключаємо логі для favicon та robots.txt location = /favicon.ico < log_not_found off; access_log off; >location = /robots.txt < allow all; log_not_found off; access_log off; >#Основний location location / < try_files $uri $uri/ /index.php?$args; ># Передаємо обробку PHP-скриптів PHP-FPM location

Подібний конфіг-файл можна покласти в папку /etc/nginx/sites-available та зробити на цей файл симлінк у папці /etc/ngins/sites-enabled, після чого перезапустити Nginx.