SSL-сертифікат Comodo Positive SSL та Nginx
Запис про те, як згенерувати та налаштувати найпростіший SSL-сертифікат (Comodo Positive SSL) на веб-сервері Nginx. Сертифікат у даному прикладі замовлявся не у Comodo безпосередньо, а у його реселера ssl.com.ua за більш привабливу ціну. Суть від цього не змінюється, так як сертифікат все одно генерує і надсилає сам Comodo.
- Згенерувати CSR (Certificate Signing Request)
- Використовувати CSR для створення сертифіката
- Підготувати сертифікат для використання з Nginx
- Увімкнути 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.