В этой статье описана процедура получение бесплатного сертификата и перехода на защищенный протокол https.
Последняя статья по редиректам.
Как уже писал в предыдущей статье, наступила эра защищенных сайтов. Поисковик Google теперь ранжирует незащищенные сайты хуже, чем те, которые работают по защищенному протоколу. С 1 октября 2017 года этот алгоритм вступил в основную силу.
Теперь не будут возникать сомнений, переходить ли на защищенный https или нет. Очевидно, что теперь выбора не остаётся.
Получение SSL сертификата
С поиском платных компаний выдающих защищенные сертификаты, думаю проблем не возникнет. Остановимся сразу на бесплатном варианте. Сейчас он единственный и называется Let’s Encrypt. Сертификат SSL выдаётся на 3 месяца и его следует продлевать по истечении срока. Продление можно делать в автоматическом режиме.
Официальный сайт:
Let’s Encrypt
Есть разные способы установки сертификата на свой сайт. Ниже будут приведены способы установки SSL сертификата на VPS сервера с nginx под управлением CentOS 7 и CentOS 6. Вообщем-то инструкции есть и на официальном сайте.
Для панели управления Vesta есть упрощенное получение этого сертификата.
Установка SSL на CentOS 7 (Nginx)
Подключаемся к своему сайту через протокол SSH.
Для установки сертификата нужно подключить репозиторий EPEL. Для этого по очереди вводим команды:
yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional
Дальше устанавливаем Certbot:
Теперь, если мы хотим, чтобы в файл nginx.conf добавились настройки автоматически, то применяем эту команду:
Если хотим (я предпочитаю первый вариант) изменять файл конфигурации потом самостоятельно, то эту:
Появится следующее сообщение:
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):
Вписываем свой e-mail адрес. Дальше попросят подтвердить соглашение:
https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. You must agree
in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
Соглашаемся. И снова нас спросят, теперь о желании получать рассылку:
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
Соглашаемся или нет, ставим Y или N.
Далее будет выведен перечень ваших доменов на текущем IP:
...
...
...
Ставим цифры через пробел тех сайтов, для которых хотим чтобы были выписаны сертификаты.
Сертификат будет выдан один и с названием первого в списке сайтов. Иными словами, если захочется посмотреть сертификат на сайте «б» или «в», то в нём будет указано название сайта «a».
Если это не критично, можно устанавливать один сертификат на все домены. А иначе устанавливать отдельный сертификат для каждого.
Следующий шаг надо выбрать стоит ли перенаправлять весь трафик на зашифрованный протокол.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
Указываем перенаправление.
На этом установка сертификатов от letsencrypt завершена (но не закончена):
/etc/letsencrypt/live/ploshadka.net/fullchain.pem (success)
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=ploshadka.net
В сообщении выше будут ссылки на проверку сертификата для каждого из сайтов.
Сертификат будет установлен в созданную папку, название которой будет перенимать название первого из списка ваших сайтов:
Для папки /etc/letsencrypt рекомендуется делать резервную копию.
Настройка файла nginx.conf
Открываем файл конфигурации nginx. В Vesta под CentOS 7 команда такая:
Там для каждого сайта появятся строки, добавленные Let’s Encrypt-ом. Эти не трогаем:
# ssl_certificate /etc/letsencrypt/live/ploshadka.net/fullchain.pem; # managed by Certbot
#ssl_certificate_key /etc/letsencrypt/live/ploshadka.net/privkey.pem; # managed by Certbot
#include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
# ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
А закомментированные строчки редиректа мы раскомментируем:
if ($scheme != "https") {
return 301 https://$host$request_uri;
} # managed by Certbot
После изменений в nginx надо перезапустить эту службу.
Теперь все URL с http будут переправляться на https.
Добавляем автоматическое продление для сертификатов
В файл cron надо добавить следующую директиву:
Установка SSL на CentOS 6 (Nginx)
Для CentOS установка сертификата SSL от Let’s Encrypt вызвала ряд проблем и ошибок. Помучался я около часа в поисках ответов. И пришел к выводам, что лучше снести CentOS 6 и поставить CentOS 7, что и сделал сам и вам рекомендую.
Настройка сайта для https
Дальнейшая настройка зависит от движка сайта. Как настроить https для WordPress.