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

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 нужно указать (исключительно на латинице):
1) Доменное имя, к примеру mydomain.ru
2) Название организации (если нет, то придумать), например MyCompany
3) Отдел организации: IT
4) Город, например Moscow
5) Область/штат, например Moscowskaya Oblast
6) Страна, например Россия (обычно вместо страны используется некий код, который задаётся выпадающим списком со странами)
7) Email, например admin@mydomain.ru
Поставить галочку на параметре «Отправить CSR и приватный ключ (RSA) на указанный адрес»

В результате получится CSR, выглядящий примерно так:

  1. —–BEGIN CERTIFICATE REQUEST—–
  2. MIIC6TCCAQAwgaMxCzAJBgNVBAYTAlJVMR4wHAYDVQQIDBVMZW5pbmdy
  3. a2F5YSBPYmxhc3QxGTAXBgNVBAcMNhaW50LVBldGVyc2J1cmcxEjAQBg
  4. CVB1dGV2b3kyNDELGA1UECwwCSVQxFTATBgNVBAMMDHB1dGV2b3kyNC5
  5. MB8GCSqGSIb3DQEJARYSYWRtaW5AcHV0ZXZveTI0LnJ1MIIBIjANBgkq
  6. AQEFAAOCAQ8AMIIBCgKCAQEA1la78VCxc8g//rTUQjeKDTYqLlJn4nSX
  7. zvw9y0BjIPdbv5+MrZcOYWs/4xmeoIW2ivwmdb+JpBJdGN2MJufDsMlc
  8. TgKpDcGu7bxeQfFbcKf75kLkhMf7ords6S0pHdl2aykCO5oA2g2noqTK
  9. wv8orTh9CyBGwIx0t5TbzKVg9AQfVfgWUd0a/9+9GhXHgO84GHtgs3md
  10. tTzu7AtbdmjsLhfAT1jb9sGoIuQGQQS3ZXVIf06bVFWWmu62pUV/jAHn
  11. D/0+CQvkwapU/NUEiEnyqzOFOcJXL1nrgJeRq0X7eQIDAQABoAAwDQYJ
  12. hvcNAQEFBQADggEBACAqykpWOSmyUFkzHipduRmLzMgDcxZR/LHIwuq2
  13. UV79oXP2Do73iGO/MmHAk49xvnP3X0ILQ+dYVPCCgvP6we6CWUit9yda
  14. cgvSCLEM/YFcMoaDFMO5wyMK6hA02WkHEwKBtaTFf2o4RTigIorkJ+Rl
  15. GzROrwePUYCcPIN+DJzWwgIuL7caNAWjweIG7S4oYf1LnpEV2s7C9pZW
  16. RnIUe9aXnLeSQHm83KEMajJxm4fJq6VZS30cGsgusMwgQUgeF5AEmu54
  17. MnPKur2POD64DOPuNHMv+BGhn3CYNeOaH4CoGB0=
  18. —–END CERTIFICATE REQUEST—–

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

Использовать CSR для генерации сертификата

Для генерации сертификата на сайте, который выдаёт сертификаты,
нужно найти форму генерации сертификата, и в ней установить параметры:

1) Тип сервера: Other (так как Nginx как правило в списке отсутствует)
2) CSR: вставить скопированный ключ
3) Данные физического лица, на чьё имя записывается сертификат, такие как:
Имя, Фамилия, Организация, Должность, Электронная почта, Адрес, Дополнительный адрес,
Город, Область/Край, Почтовый индекс, Страна, Телефон.

После ввода этих данных, будет предложено выбрать метод валидации.
Самое простое — по адресу почту admin@mydomain.ru, на который должно прийти письмо со ссылкой на подтверждение.
После подтверждения на почту будет прислан сам сертификат в виде zip-архива, содержащий несколько файлов, упомянутых далее.

Подготовить сертификат для использования в 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

Включить SSL в nginx с использованием сертификата

Пример конфигурации, на которой сайт заработает через SSL:

# Этот блок сервера для редиректов на https
server
{
    # Слушаем 80-й порт и перекидываем на https
    listen *:80;
 
    # Перенаправлять будем сайты с www и без www.
    server_name mydomain.ru  www.mydomain.ru;
 
    # Собственно редирект
    return 301 https://$host/$1;
}
# Основной блок сервера
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.

Проверка сертификата

Для проверки можно зайти вот сюда: https://sslanalyzer.comodoca.com/, и, вбив имя своего домена, посмотреть, что видит там сторонний наблюдатель, причём во всех подробностях.

Опубликовано в Nginx

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

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

 

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