Переводим свой сайт с HTTP на HTTPS. Бесплатный сертификат SSL.

Admin VPS, WordPress

В этой статье описана процедура получение бесплатного сертификата и перехода на защищенный протокол 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 -y install yum-utils
yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional

Дальше устанавливаем Certbot:

sudo yum install certbot-nginx

Теперь, если мы хотим, чтобы в файл nginx.conf добавились настройки автоматически, то применяем эту команду:

sudo certbot --nginx

Если хотим (я предпочитаю первый вариант) изменять файл конфигурации потом самостоятельно, то эту:

sudo certbot --nginx certonly

Появится следующее сообщение:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):

Вписываем свой e-mail адрес. Дальше попросят подтвердить соглашение:

Please read the Terms of Service at
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

Соглашаемся. И снова нас спросят, теперь о желании получать рассылку:

Would you be willing to share your email address with the Electronic Frontier
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:

Which names would you like to activate HTTPS for?
...
...
...

Ставим цифры через пробел тех сайтов, для которых хотим чтобы были выписаны сертификаты.

Не нужно выписывать сертификат отдельно на каждый сайт, если он находится на одном сервере. Однако есть одно НО, которое иногда очень важно!

Сертификат будет выдан один и с названием первого в списке сайтов. Иными словами, если захочется посмотреть сертификат на сайте «б» или «в», то в нём будет указано название сайта «a».

Если это не критично, можно устанавливать один сертификат на все домены. А иначе устанавливать отдельный сертификат для каждого.

Следующий шаг надо выбрать стоит ли перенаправлять весь трафик на зашифрованный протокол.

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
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 завершена (но не закончена):

Congratulations, all renewals succeeded. The following certs have been renewed:
/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/live/ploshadka.net/fullchain.pem

Для папки /etc/letsencrypt рекомендуется делать резервную копию.

Настройка файла nginx.conf

Открываем файл конфигурации nginx. В Vesta под CentOS 7 команда такая:

nano /home/admin/conf/web/nginx.conf

Там для каждого сайта появятся строки, добавленные Let’s Encrypt-ом. Эти не трогаем:

listen 443 ssl; # managed by Certbot
# 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

А закомментированные строчки редиректа мы раскомментируем:

# Redirect non-https traffic to https
if ($scheme != "https") {
    return 301 https://$host$request_uri;
} # managed by Certbot

После изменений в nginx надо перезапустить эту службу.

Теперь все URL с http будут переправляться на https.

Добавляем автоматическое продление для сертификатов

В файл cron надо добавить следующую директиву:

certbot renew
Разработчики рекомендуют выполнять эту команду 2 раза в день, чтобы вовремя продлить сертификаты. Команда ни на что не влияет пока сертификаты не требуют продления. Также просят проверку сертификатов сделать в случайную минуту. Вероятно, чтобы не было одновременных нагрузок. Люди любят округлять цифры до часа.

Установка SSL на CentOS 6 (Nginx)

Для CentOS установка сертификата SSL от Let’s Encrypt вызвала ряд проблем и ошибок. Помучался я около часа в поисках ответов. И пришел к выводам, что лучше снести CentOS 6 и поставить CentOS 7, что и сделал сам и вам рекомендую.

Настройка сайта для https

Дальнейшая настройка зависит от движка сайта. Как настроить https для WordPress.

English Query (запросы по теме на английском языке)

RewriteEngine On

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Could not open the page, too many redirects

У сайта нет цели самоокупаться, поэтому на сайте нет рекламы. Но если вам пригодилась информация, можете лайкнуть страницу, оставить комментарий или отправить мне подарок на чашечку кофе.

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

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи:
"Переводим свой сайт с HTTP на HTTPS. Бесплатный сертификат SSL."