Изучив немного этот вопрос, оказалось, что 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 сертификата выбираем индивидуальный и жмем кнопку Complete Order.
Далее система попросит зарегистрироваться или авторизоваться, после чего в левом меню нам необходимо пройти в Менеджер ssl сертификатов.
Здесь в списке сертификатов жмем кнопку генерировать напротив нужного и оказываемся на странице CSR запроса.
Теперь необходимо получить этот CSR запрос в нашей панели. Входим в панель управления Vesta и редактируем домен, на котором необходимо установить ssl сертификат. Ставим галочку напротив Поддержка SSL / Cгенерировать CSR запрос. Тут же появится три новых поля SSL сертификат, Ключ SSL сертификата и Центр сертификации SSL / Intermediate (опционально).
Здесь же жмем ссылку Сгенерировать CSR запрос (откроется в новой вкладке) и заполняем поля в соответствии с их наименованием, кликаем Ок.
Появятся следующие заполненные поля: SSL CSR запрос, SSL сертификат и Ключ SSL сертификата. Обязательно скопируйте и сохраните данные из поля Ключ SSL сертификата на локальный диск. Затем копируем данные из поля SSL CSR запрос и возвращаемся на страницу CSR запроса сервиса gogetssl и вставляем их в соответствующее поле, жмем кнопку Validate CSR.
Теперь нужно подтвердить права на домен, методов проверки несколько, разобраться в них легко.
После чего мы перейдем на страницу ввода данных администратора домена и подтверждаем ознакомление с публичным соглашением на использование ssl сертификата.
Так как в качестве метода проверки домена я указал почту, то на указанный адрес пришло письмо с кодом подтверждения и ссылкой, где данный код нужно ввести – этим заканчивается проверка домена. Через несколько минут в меню менеджера сертификатов среди активных сертификатов вы увидите свой. На странице сертификата кликните ссылку на его загрузку.
В полученном архиве будет четыре файла.
Копируем содержимое поля Ключ SSL сертификата из вкладки генерации CSR запроса панели Vesta в поле Ключ SSL сертификата на вкладке настройки домена. Здесь же в поле SSL сертификат вставляем данные скопированные из файла vash-domen_ru.crt полученного архива. В поле Центр сертификации SSL / Intermediate (опционально) в указанном порядке поочередно вставляем содержимое следующих файлов из полученного архива:
- COMODORSADomainValidationSecureServerCA.crt
- COMODORSAAddTrustCA.crt
- AddTrustExternalCARoot.crt
Сохраняем настройки, если панель не ругнется, то надпись зеленым сообщит что настройки сохранены. Сертификат 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 нашего домена воспользуйтесь этим сервисом. После вышеуказанных действий статус должен быть А+
Но расслабляться еще рано, если через панель вы измените настройки домена, то все внесенные изменения будут утрачены, поэтому необходимо отредактировать шаблон в панели 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 нужно выполнить следующие действия:
- Добавьте в панели Яндекс.Вебмастер и Google для веб-мастеров свой сайт как новый домен c https не удаляя сайт с http по крайней мере до момента склейки доменов.
- Укажите в файле robots директивы Host и Sitemap c https Пример: Host: https://vash-domen.ru, Sitemap: https://vash-domen.ru/sitemap.xml
- Укажите в соответствующих настройках панелей добавленного сайта файлы robots и sitemap.
- В Яндекс.Вебмастер в разделе Переезд сайта версии домена на http поставьте галочку на htpps и подтвердите внесение изменений.
- Спустя какое-то время, после индексации и склейки доменов, настройте 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;
Выходим из редактирования файла конфига с сохранением изменений.
Перезапускаем nginx
service nginx restart
После этого кто бы не перешел на ваш сайт, он увидит в браузере зеленый замок.
> частично русифицированный интерфейс.
В этом и проблема. Не очень удобно. Компания не российская, потому покупать у них не советовал бы.
Если нужен нормальный российский реселлер со своим офисом в Москве и колл-центром, то можно обратиться к *********.ru.
Они, кстати, единственные, кто имеет статус Symantec WSSP на территории СНГ. И покупать сертификаты у них гораздо проще, т.к. все на русском + всегда можно позвонить и обсудить или даже назначить встречу и лично заехать в офис.
Это смотря со стороны какого покупателя смотреть. Со стороны обычного вебмастера-блогера, с которого снова стригуны-выдумщики нашли идею бабла срубить за продажу воздуха, есть 2 требования: сертификат должен быть бесплатным или по минимально возможной цене и чтобы ему доверяли основные браузеры, а не распугивали от сайта пользователей пустыми страшилками. Комодо позитив у вашей компании 1 490/г р., у gogetssl с округлением 583/г по сегодняшнему курсу или ggssl domain ssl за 260/г. Звонить и встречаться в офисе — это не про нас 🙂
Обходились как-то до этого без всяких сертификатов, сейчас приходится бегать по всяким ХостРадарам сломя голову, искать хостера с дешёвым или бесплатным s-s-l.
В панели vesta, которую использую, сейчас происходит автопродление бесплатного сертификата Lets Encrypt. Нет необходимости платить и заморачиваться каждые три месяца с продлением.