Главная » Настройка VPS » Установка ssl сертификата на сайт с nginx

Установка ssl сертификата на сайт с nginx

Установка ssl сертификата на сайт с nginxСовсем недавно сеть облетела новость Google о том, что установка ssl сертификата на сайт при прочих равных условиях приносит больше трафика, так как сайты, работающие по протоколу https не передают информацию третьим лицам, следовательно, должны иметь в поиске некоторый приоритет.

Изучив немного этот вопрос, оказалось, что ssl сертификаты в основном раздаются на платной основе, но для некоммерческих сайтов физических лиц, можно было воспользоваться и бесплатным вариантом от startssl на целых три года. К сожалению, с октября 2016 года эту благую и халявную возможность благополучно закрыли, и без монополистического сговора вероятно тут не обошлось. Теперь бесплатные сертификаты этого сервиса основными браузерами выдаются как недействительные и небезопасные. Причем сертификат этого сервиса, выданный чуть раньше, у меня благополучно установлен на одном из сайтов, а на второй, выданный в ноябре 2016 года, браузеры дружно ругаются.

Поэтому теперь осталась возможность устанавливать сертификаты с трехмесячным пробным периодом, а впоследствии — переходить на платный вариант.

Исходя из сказанного я расскажу про сервис выдачи ssl сертификатов gogetssl.com, имеющий много вариантов оплаты и частично русифицированный интерфейс.

Инструкция разрабатывалась под VPS-сервер с установленной панелью Vesta, nginx, php-fpm и Centos 6.Х

Содержание:

Получение и установка ssl сертификата на сайт

Конфигурируем nginx под ssl и изменяем его шаблон в Vesta

Переход на https в поисковой выдаче

Настройка 301 редиректа с http на https в nginx

Получение и установка ssl сертификата на сайт

На этой странице жмем кнопку Try Now, нас перекинет на англоязычную версию сервиса. Получение и установка ssl сертификата на сайт

В конфигурационном меню первого шага получения ssl сертификата выбираем индивидуальный и жмем кнопку Complete Order.Получение и установка ssl сертификата на сайт

Далее система попросит зарегистрироваться или авторизоваться, после чего в левом меню нам необходимо пройти в Менеджер ssl сертификатов.Получение и установка ssl сертификата на сайт

Здесь в списке сертификатов жмем кнопку генерировать напротив нужного и оказываемся на странице CSR запроса.Получение и установка ssl сертификата на сайт

Получение и установка ssl сертификата на сайт

Теперь  необходимо получить этот CSR запрос в нашей панели. Входим в панель управления Vesta и редактируем домен, на котором необходимо установить ssl сертификат. Ставим галочку напротив Поддержка SSL / Cгенерировать CSR запрос. Тут же появится три новых поля SSL сертификат, Ключ SSL сертификата и Центр сертификации SSL / Intermediate (опционально). Получение и установка ssl сертификата на сайт

Здесь же жмем ссылку Сгенерировать CSR запрос (откроется в новой вкладке) и заполняем поля в соответствии с их наименованием, кликаем Ок. Получение и установка ssl сертификата на сайт

Появятся следующие заполненные поля: SSL CSR запрос, SSL сертификат и Ключ SSL сертификата. Обязательно скопируйте и сохраните данные из поля Ключ SSL сертификата на локальный диск. Затем копируем данные из поля SSL CSR запрос и возвращаемся на страницу CSR запроса сервиса gogetssl и вставляем их в соответствующее поле, жмем кнопку Validate CSR.Получение и установка ssl сертификата на сайт

Получение и установка ssl сертификата на сайт

Теперь нужно подтвердить права на домен, методов проверки несколько, разобраться в них легко. Получение и установка ssl сертификата на сайт

После чего мы перейдем на страницу ввода данных администратора домена и подтверждаем ознакомление с публичным соглашением на использование ssl сертификата. Получение и установка ssl сертификата на сайт

Так как в качестве метода проверки домена я указал почту, то на указанный адрес пришло письмо с кодом подтверждения и ссылкой, где данный код нужно ввести – этим заканчивается проверка домена. Через несколько минут в меню менеджера сертификатов среди активных сертификатов вы увидите свой. На странице сертификата кликните ссылку на его загрузку. Получение и установка ssl сертификата на сайт

В полученном архиве будет четыре файла.Получение и установка ssl сертификата на сайт

Копируем содержимое поля Ключ SSL сертификата из вкладки генерации CSR запроса панели Vesta в поле Ключ SSL сертификата на вкладке настройки домена. Здесь же в поле SSL сертификат вставляем данные скопированные из файла vash-domen_ru.crt полученного архива. В поле Центр сертификации SSL / Intermediate (опционально) в указанном порядке поочередно вставляем содержимое следующих файлов из полученного архива:

  1. COMODORSADomainValidationSecureServerCA.crt
  2. COMODORSAAddTrustCA.crt
  3. AddTrustExternalCARoot.crt

Получение и установка ssl сертификата на сайт

Сохраняем настройки, если панель не ругнется, то надпись зеленым сообщит что настройки сохранены. Сертификат ssl для вашего домена на этом установлен. Теперь нужно подправить конфигурацию nginx.

Конфигурируем nginx под ssl и изменяем его шаблон в Vesta

Перейдем в папку конфигурационных фалов nginx наших доменов, создадим там файл dhparams.pem и сгенерируем ключ.

cd /home/admin/conf/web

openssl dhparam -out dhparams.pem 2048; chmod 600 dhparams.pem

Теперь отредактируем наш конфигурационный файл snginx.conf, созданный панелью Vesta для работы ssl.

mcedit /home/admin/conf/web/snginx.conf

Здесь, как и в nginx.conf, контейнер для каждого домена начинается с server {, первая часть контейнера выглядит следующим образом:

server {

    listen vash.IP:443;
    server_name vash-domen.ru www.vash-domen.ru;
    root /home/admin/web/ vash-domen.ru/public_html;
    index index.php index.html index.htm;
    access_log /var/log/nginx/domains/vash-domen.ru.log combined;
    access_log /var/log/nginx/domains/vash-domen.ru.bytes bytes;
    error_log /var/log/nginx/domains/vash-domen.ru.error.log error;

    ssl on;
    ssl_certificate /home/admin/conf/web/ssl.vash-domen.ru.pem;
    ssl_certificate_key /home/admin/conf/web/ssl.vash-domen.ru.key;

Эту конструкцию нужно привести к следующему виду:

server {

    listen vash.IP:443 ssl http2;
    server_name vash-domen.ru www.vash-domen.ru;
    root /home/admin/web/ vash-domen.ru/public_html;
    index index.php index.html index.htm;
    access_log /var/log/nginx/domains/vash-domen.ru.log combined;
    access_log /var/log/nginx/domains/vash-domen.ru.bytes bytes;
    error_log /var/log/nginx/domains/vash-domen.ru.error.log error;

    ssl_stapling on;
    ssl on;
    ssl_dhparam /home/admin/conf/web/dhparams.pem;
    ssl_certificate /home/admin/conf/web/ssl.vash-domen.ru.pem;
    ssl_certificate_key /home/admin/conf/web/ssl.vash-domen.ru.key;
    ssl_session_cache    shared:SSL:10m;
    ssl_session_timeout 10m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers kEECDH+AES128:kEECDH:kEDH:-3DES:kRSA+AES128:kEDH+3DES:DES-CBC3-SHA:!RC4:!aNULL:!eNULL:!MD5:!EXPORT:!LOW:!SEED:!CAMELLIA:!IDEA:!PSK:!SRP:!SSLv2;
    add_header Strict-Transport-Security "max-age=31536000;";

Выходим из редактирования файла с сохранением и перезапускаем nginx.

service nginx restart

Для быстрой проверки корректности установки ssl сертификата воспользуйтесь этим сервисом.

Для детального тестирования выдачи статуса корректности установки сертификата ssl нашего домена воспользуйтесь этим сервисом. После вышеуказанных действий статус должен быть А+Конфигурируем nginx под ssl и изменяем его шаблон в Vesta

Но расслабляться еще рано, если через панель вы измените настройки домена, то все внесенные изменения будут утрачены, поэтому необходимо отредактировать шаблон в панели Vesta.

mcedit /usr/local/vesta/data/templates/web/nginx/default.stpl

server {

    listen %ip%:%proxy_ssl_port% ssl http2;
    server_name %domain_idn% %alias_idn%;
   
    ssl_stapling on;
    ssl on;
    ssl_dhparam /home/admin/conf/web/dhparams.pem;
    ssl_certificate %ssl_pem%;
    ssl_certificate_key  %ssl_key%;
    error_log  /var/log/httpd/domains/%domain%.error.log error;
    ssl_session_cache    shared:SSL:10m;
    ssl_session_timeout 10m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers kEECDH+AES128:kEECDH:kEDH:-3DES:kRSA+AES128:kEDH+3DES:DES-CBC3-SHA:!RC4:!aNULL:!eNULL:!MD5:!EXPORT:!LOW:!SEED:!CAMELLIA:!IDEA:!PSK:!SRP:!SSLv2;
    add_header Strict-Transport-Security "max-age=31536000;";

    location / {
        proxy_pass      https://%ip%:%web_ssl_port%;
        location ~* ^.+\.(%proxy_extentions%)$ {
            root           %sdocroot%;
            access_log     /var/log/httpd/domains/%domain%.log combined;
            access_log     /var/log/httpd/domains/%domain%.bytes bytes;
            expires        max;
            try_files      $uri @fallback;
        }
    }
    location /error/ {
        alias   %home%/%user%/web/%domain%/document_errors/;
    }
    location @fallback {
        proxy_pass      https://%ip%:%web_ssl_port%;
    }
    location ~ /\.ht    {return 404;}
    location ~ /\.svn/  {return 404;}
    location ~ /\.git/  {return 404;}
    location ~ /\.hg/   {return 404;}
    location ~ /\.bzr/  {return 404;}

    include %home%/%user%/conf/web/snginx.%domain%.conf*;
}

Переход на https в поисковой выдаче

Чтобы в поиске наиболее безболезненно переехать на https нужно выполнить следующие действия:

  1. Добавьте в панели Яндекс.Вебмастер и Google для веб-мастеров свой сайт как новый домен c https не удаляя сайт с http по крайней мере до момента склейки доменов.
  2. Укажите в файле robots директивы Host и Sitemap c https Пример: Host: https://vash-domen.ru, Sitemap: https://vash-domen.ru/sitemap.xml
  3. Укажите в соответствующих настройках панелей добавленного сайта файлы robots и sitemap.
  4. В Яндекс.Вебмастер в разделе Переезд сайта версии домена на http поставьте галочку на htpps и подтвердите внесение изменений.
  5. Спустя какое-то время, после индексации и склейки доменов, настройте 301 редирект с http на https

Настройка 301 редиректа с http на https в nginx

По завершении предыдущих шагов ваш сайт уже работает по протоколу https. Но нам необходимо, чтобы при любом обращении к нему, при вводе домена в браузере, при переходе по старым ссылкам с http, мы попадали на любую его страницу по защищенному протоколу https. Для этого необходима настройка 301 редиректа через nginx.

Заходим в консоль управления VPS и вставляем следующую строку

mcedit /home/admin/conf/web/nginx.conf

Там находим секцию сайта, для которого мы установили ssl сертификат. Эта секция начинается с server {. В место, обозначенное стрелкой на скриншоте, вставьте следующую строку, изменив при этом домен на свой

rewrite  ^(.*) https://vash-domen.ru$request_uri? permanent;
Настройка 301 редиректа с http на https в nginx

Выходим из редактирования файла конфига с сохранением изменений.

Перезапускаем nginx

service nginx restart

После этого кто бы не перешел на ваш сайт, он увидит в браузере зеленый замок.

4 комментария

  1. > частично русифицированный интерфейс.

    В этом и проблема. Не очень удобно. Компания не российская, потому покупать у них не советовал бы.

    Если нужен нормальный российский реселлер со своим офисом в Москве и колл-центром, то можно обратиться к *********.ru.

    Они, кстати, единственные, кто имеет статус Symantec WSSP на территории СНГ. И покупать сертификаты у них гораздо проще, т.к. все на русском + всегда можно позвонить и обсудить или даже назначить встречу и лично заехать в офис.

    • Это смотря со стороны какого покупателя смотреть. Со стороны обычного вебмастера-блогера, с которого снова стригуны-выдумщики нашли идею бабла срубить за продажу воздуха, есть 2 требования: сертификат должен быть бесплатным или по минимально возможной цене и чтобы ему доверяли основные браузеры, а не распугивали от сайта пользователей пустыми страшилками. Комодо позитив у вашей компании 1 490/г р., у gogetssl с округлением 583/г по сегодняшнему курсу или ggssl domain ssl за 260/г. Звонить и встречаться в офисе — это не про нас 🙂

  2. Обходились как-то до этого без всяких сертификатов, сейчас приходится бегать по всяким ХостРадарам сломя голову, искать хостера с дешёвым или бесплатным s-s-l.

    • В панели vesta, которую использую, сейчас происходит автопродление бесплатного сертификата Lets Encrypt. Нет необходимости платить и заморачиваться каждые три месяца с продлением.

Оставить комментарий

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

*

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