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

В этой статье описана процедура получение бесплатного сертификата и перехода на защищенный протокол https.

Как уже писал в предыдущей статье, наступила эра защищенных сайтов. Поисковик Google теперь ранжирует незащищенные сайты хуже, чем те, которые работают по защищенному протоколу. С 1 октября 2017 года этот алгоритм вступил в основную силу.

Теперь не будут возникать сомнений, переходить ли на защищенный https или нет. Очевидно, что теперь выбора не остаётся.

Получение SSL сертификата

С поиском платных компаний выдающих защищенные сертификаты, думаю проблем не возникнет. Остановимся сразу на бесплатном варианте. Сейчас он единственный и называется Let’s Encrypt. Сертификат SSL выдаётся на 3 месяца и его следует продлевать по истечении срока. Продление можно делать в автоматическом режиме.

Официальный сайт:
Let’s Encrypt

Есть разные способы установки сертификата на свой сайт. Ниже будут приведены способы установки SSL сертификата на VPS сервера с nginx под управлением CentOS 7 и CentOS 6. Вообщем-то инструкции есть и на официальном сайте.

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

Подключаемся к своему сайту через протокол SSH.

Для установки сертификата нужно подключить репозиторий EPEL. Для этого по очереди вводим команды:

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

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

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

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

1
2
3
4
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 адрес. Дальше попросят подтвердить соглашение:

1
2
3
4
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

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

1
2
3
4
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:

1
2
3
4
Which names would you like to activate HTTPS for?
...
...
...

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

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

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

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

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

1
2
3
4
5
6
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 завершена (но не закончена):

1
2
3
4
5
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

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

Сертификат будет установлен в созданную папку, название которой будет перенимать название первого из списка ваших сайтов:

1
/etc/letsencrypt/live/ploshadka.net/fullchain.pem

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

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

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

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

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

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

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

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

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

Разработчики рекомендуют выполнять эту команду 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.".

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