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/