Установка SSL-сертификата Comodo Positive SSL и Nginx

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/ 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.