Как получить сертификат для HTTPS бесплатно
HTTPS — расширение протокола HTTP, для поддержки шифрования в целях повышения безопасности. По данным компании Mozilla на Январь 2017-го года доля зашифрованного трафика впервые превысила долю незашифрованного, передаваемого по HTTP. Ранее же Mozilla и Google объявили, что в ближайшее время в новых версиях Mozilla Firefox и Google Chrome веб-сайты, использующие незащищённый протокол будут помечаться как «небезопасные».
Решение спорное, учитывая тот факт, что подавляющее большинство Центров Сертификации (Certificate Authority, CA) выдают их после оплаты определённой суммы, которая лишь относительно недавно перестала быть трёхзначной. На сегодня вполне реально за 5-10 долларов приобрести простейший сертификат, который не подтверждает ничего, кроме того факта, что DNS записи доменного имени действительно указывают на тот сервер, на котором размещён определённый веб-сайт, тем самым ограждая пользователей от возможного фишинга. Если веб-сайт не предлагает услуг, связанных с оплатой и передачей конфиденциальной информации, то такого сертификата вполне достаточно.
Однако и такую суммы не каждый готов платить. Хотя бы по тому, что по сути своей такой сертификат мало чем отличается от самоподписанного и основное его преимущество лишь в том, что браузер не будет ругаться на то, что сертификат не выписан авторизованным CA. При этом ситуация, когда самые популярные браузеры начнут помечать протокол HTTP как «небезопасный» (а по сути так и есть), вынудит даже владельцев личных блогов задуматься о переходе на HTTPS.
На сегодня и до недавнего времени существовало три CA, выдающих ssl-сертификаты бесплатно. StartCom был первым и долгое время единственным. Уровня такого сертификата вполне достаточно для подавляющего числа блогов, форумов и прочих ресурсов, до сих пор сидящих на HTTP.
Однако после продажи StartCom китайскому CA WoSign и эпичного залёта последнего, когда по технической ошибке был выписан сертификат на корневой домен GitHub.com лицу, никаким боком не имеющему отношения к руководству ресурса, в соответствующих кругах начался шторм. И поскольку WoSign не достаточно активно выражал покаяние и практически никак не пытался исправить ситуацию, заявив, что будет отзывать сертификаты, ошибочно выданные с использованием дыры, только по запросу владельцев этих сертификатов (!), под раздачу попал и StartCom, так как корневые сертификаты у них и у WoSign выписаны с использованием одних и тех же алгоритмов. Начиная с января 2017-го года в новых версиях браузеров Google, Mozilla и Apple сертификаты, выданные StartCom после конца октября 2016-го года, помечены как «недоверенные». То есть ничем не отличаются от самоподписанных.
Но к счастью для рядовых владельцев вполне рядовых форумов и блогов, остался третий CA, выдающий сертификаты бесплатно. Процесс выдачи сертификатов Let’s Encrypt в корне отличается от всего того, что используют другие CA. Администратору ресурса не нужно заводить аккаунт и как-либо взаимодействовать с ресурсом Let’s Encrypt. Всё что нужно — это доступ к собственному серверу по ssh и 5-10 минут свободного времени.
Приступим.
Рекомендованная Let’s Encrypt и подходящая для большинства пользователей программа — Certbot ACME. Это программа, установленная на сервер, способная практически полностью автоматизировать процесс получения, а так же продления сертификатов. Что важно, так как сертификаты Let’s Encrypt имеют достаточно короткий срок жизни — три месяца. Certbot работает только в UNIX-Like операционных системах (Linux, *BSD и Mac OS X) и поддерживает несколько типов веб-серверов, среди которых Apache и Nginx. Но перечень не ограничивается этими двумя. В данном примере я использую Ubuntu 16.04 и Apache. Для других конфигураций посмотрите инструкции на официальном сайте проекта.
Устанавливаем Sertbot.
sudo apt install python-letsencrypt-apache
Чтобы не нарушить работу активных сайтов и во избежании конфликтов конфигурации, убедитесь что конфигурационные файлы HTTP хостов у вас в порядке, а конфигурационные файлы HTTPS хостов (если таковые уже имеются) отключите. Sertbot сам создаст конфигурацию на основе имеющихся HTTP хостов, если требуется, подключит модуль ssl, добавит хосты HTTPS и перезагрузит Apache.
Запускаем Sertbot.
sudo letsencrypt --apache
Далее следуйте инструкциям в терминале. Вам будет предложено указать адрес вашей действующей электронной почты, а так же доменные имена из списка активных хостов. Sertbot убедится, что DNS записи доменных имён ваших хостов совпадают с IP адресом сервера, на котором Serbot запущен, сгенерирует сертификаты, создаст виртуальные HTTPS хосты и пропишет в них путь до сертификатов. В конце Sertbot предложит вписать редирект для HTTP хостов, что будет перенаправлять все запросы к ним на HTTPS. Решайте сами. Вся процедура занимает не больше минуты; по завершении процедуры ничего делать не нужно. Всё установлено и работает.
Обновление.
Sertbot может быть настроен на обновление сертификатов, срок действия которых подходит к концу. Поскольку сертификаты действительны лишь 90 дней, то данная опция рекомендована к использованию. Особенно, если у вас много хостов и сертификаты на них выписаны в разное время. Проверить состояние данной опции можно при помощи следующей команды:
sudo letsencrypt renew --dry-run --agree-tos
В текущей версии Serbot под Ubuntu 16.04 есть небольшой баг, в связи с которым вам вылетит сообщение о том, что при регистрации сертификатов не указан email. Пример:
2017-02-07 17:06:06,662:WARNING:letsencrypt.client:Registering without email!
Сообщение можно проигнорировать. Это не как не повлияет на процесс обновления. Дождитесь завершения команды. Вывод примерно следующий:
Congratulations, all renewals succeeded. The following certs have been renewed: /etc/letsencrypt/live/yourdomain.name/fullchain.pem (success) ** DRY RUN: simulating 'letsencrypt renew' close to cert expiry ** (The test certificates above have not been saved.) IMPORTANT NOTES: - Your account credentials have been saved in your Let's Encrypt configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Let's Encrypt so making regular backups of this folder is ideal.
Здесь так же рекомендуется периодически делать бэкап директории /etc/letsencrypt, так как в ней хранятся все сертификаты и ключи.
Вы можете выполнять команду «letsencrypt renew» вручную, или настроить её автоматическое выполнение с помощью cron или systemd. В этом случае разработчики рекомендуют запускать её дважды в день. Это никак не повлияет на те сертификаты, срок которых далёк от истечения. Но позволит избежать неприятностей с просроченными, или отозванными сертификатами.
ИСТОЧНИК: