Chapter 1. Подготовить сертификат для использования в Nginx
Для работы SSL серверу nginx нужно два файла — закрытый ключ (который пришел по почте, и он уже готов), и подготовленный сертификат.
Суть подготовки заключается в том, что нужно ваш личный сертификат (выданный для вашего mydomain.ru) объединить в один файл с сертификатами центра, выдавшего данный сертификат (Comodo).
Архив с сертификатом, который высылается вам на почту, содержит следующие файлы:
1. AddTrustExternalCARoot.crt — сертификат корневого центра сертификации
2. COMODORSAAddTrustCA.crt — сертификат самого Comodo
3. COMODORSADomainValidationSecureServerCA.crt — сертификат сервера Comodo, валидирующего домены
4. mydomain_ru.crt — сертификат вашего сайта
Нам необходимо объединить файлы 2,3,4 в один файл, что в консоли linux делается простой командой:
cat ./mydomain_ru.crt ./COMODORSADomainValidationSecureServerCA.crt ./COMODORSAAddTrustCA.crt > ./mydomain_ru.cert
Также, вам на почту должен был прийти архив с CSR-файлом, а также файлом закрытого ключа. Об этом говорилось в самом начале данной заметки. В присланном архиве должно быть 2 файла — csr.txt и rsa.txt, могут они называться и несколько иначе, однако, факт в том, что приватный ключ — это НЕ CSR, а значит, в данном случае, он находится в файлу rsa.txt. Переименуем его для большей узнаваемости:
mv ./rsa.txt ./mydomain_ru.key
Chapter 2. Включить SSL в nginx с использованием сертификата
Создайте папку для SSL сертификатов на сервере:
mkdir -p /etc/nginx/ssl/
В ваш конфигурационный файл после server_name нужно добавить:
ssl on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Будем считать, что файлы mydomain_ru.cert и mydomain_ru.key мы положили в папку /etc/nginx/ssl/ ssl_certificate /etc/nginx/ssl/mydomain_ru.cert; ssl_certificate_key /etc/nginx/ssl/mydomain_ru.key;
Пример конфигурации, на которой сайт заработает через SSL:
# Основной блок сервера server { #имя сервера server_name mydomain.ru www.mydomain.ru #Используем HTTPS(SSL) listen *:443; ssl on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Будем считать, что файлы mydomain_ru.cert и mydomain_ru.key мы положили в папку /etc/nginx/ssl/ ssl_certificate /etc/nginx/ssl/mydomain_ru.cert; ssl_certificate_key /etc/nginx/ssl/mydomain_ru.key; # Если разбираетесь в обычной настройке сервера nginx, то дальше можете не смотреть, пойдёт именно она. # логи access_log /mnt/data/logs/nginx/mydomain.ru-access.log; error_log /mnt/data/logs/nginx/mydomain.ru-error.log; # Индекс index index.php index.htm index.html; # Папка root /var/www/mydomain.ru; # Это настройка позволяющая открывать статический контент с помощью НЕ-GET запросов error_page 405 = $uri; # Закрываем доступ к файлам начинающимся с точки location ~ /\. { 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 ~ \.php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9999; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_ignore_client_abort off; fastcgi_param APPLICATION_ENV master; } }
Подобный конфиг-файл можно положить в папку /etc/nginx/sites-available и сделать на этот файл симлинк в папке /etc/ngins/sites-enabled, после чего перезапустить Nginx.
Chapter 3. Проверка сертификата
Для проверки можно зайти вот сюда: https://sslanalyzer.comodoca.com/, и, вбив имя своего домена, посмотреть, что видит там сторонний наблюдатель, причём во всех подробностях.
Еще можно проверить безопасность ваша сертификата: https://www.ssllabs.com/ssltest/