Как установить бесплатный сертификат SSL от Let’s Encrypt на поддомен. Let's Encrypt - бесплатный SSL-сертификат: как получить, инструкция по установке, настройке и продлению

В последнее время забота о безопасности и приватности пользователей набирает обороты. Когда проектировался интернет и протокол HTTP, о таких понятиях не думали. Поэтому весь трафик, передаваемый между веб-сервером и пользователем по протоколу HTTP, может быть просмотрен кем угодно, кто находится на пути этого трафика, например провайдером или хакерами.

Поэтому был придуман протокол HTTPS, который позволяет шифровать трафик и таим образом обезопасить его от перехвата. Для шифрования используются SSL-сертификаты. Раньше эти сертификаты стояли денег, но благодаря компании Let"s Encrypt теперь любой веб-сайт может установить SSL-сертификат и настроить шифрование абсолютно бесплатно. В этой статье мы рассмотрим, как получить сертификат Let"s Encrypt с помощью официального клиента Certbot.

Вообще, нам не обязательно использовать именно Certbot, мы могли бы создать сертификат в OpenSSL, а затем просто подписать его с помощью ACME API от Let"s Encrypt. Но к этому API надо выполнять запросы в формате JSON, что очень неудобно делать из командной строки, поэтому лучше использовать один из клиентов. Например Certbot. К тому же, большинство клиентов ACME уже включают автоматическую генерацию сертификата в OpenSSL.

1. Синтаксис и команды Certbot

Прежде чем перейти к работе, давайте рассмотрим синтаксис утилиты Certbot и её команды. Они выглядят достаточно просто:

certbot команда опции -d домен

Команды используются для того, чтобы сообщить утилите, что именно надо сделать. Вот основные из них:

  • run - используется по умолчанию, если никакая команда не указана, получает и устанавливает сертификат;
  • certonly - только получает или обновляет сертификат, но не устанавливает его;
  • renew - обновляет сертификат;
  • enhance - добавляет настройки безопасности для существующих сертификатов;
  • certificates - отображает установленные сертификаты;
  • revoke - отзывает сертификат;
  • delete - удаляет сертификат;
  • register - создает ACME-аккаунт;

Как видите, команд не так много, и теперь вы в них точно не запутаетесь, а теперь разберём основные опции:

  • -d - указывает домен или список доменов, разделённых запятыми, для которых надо получить сертификаты;
  • --apache - использовать плагин apache для установки сертификата;
  • --nginx - использовать плагин nginx;
  • --standalone - запускать собственный веб-сервер для аутентификации при получении сертификата;
  • --preferred-challenges - позволяет выбрать способ аутентификации, по умолчанию http, но можно выбрать dns;
  • --server - позволяет указать адрес ACME-сервера, нужно для WildCard-сертификатов, поскольку они поддерживаются только второй версией ACME;
  • --webroot - поместить файлы аутентификации в папку веб-сервера;
  • -w - указывает папку веб-сервера, куда надо поместить файлы аутентификации;
  • --manual - создание сертификата в ручном режиме;
  • -n - запустить утилиту в не интерактивном режиме;
  • --dry-run - тестовый запуск без сохранения изменений на диск.

Теперь мы готовы к тому, чтобы перейти к работе с утилитой. Сначала установим её.

2. Установка Certbot

Сначала необходимо установить утилиту Certbot. Это официальный клиент, и он есть в репозиториях большинства дистрибутивов. Установка Certbot в Ubuntu выполняется из PPA:

sudo apt install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt update
sudo apt install certbot

Если вы знаете, для какой платформы будут генерироваться сертификаты, то можно установить отдельные расширения для них, они позволяют автоматически редактировать конфигурацию. Например, вы можете установить модуль для apache или nginx:

sudo apt install python-certbot-apache
sudo apt install python-certbot-nginx

Эти плагины нужны, если вы собираетесь использовать соответствующие опции для автоматической установки.

3. Создание сертификата без установки

Если вам нужен сертификат для веб-сервера, который не поддерживается программой, вам придётся устанавливать его вручную. Получить такой сертификат можно с помощью команды certonly:

sudo certbot certonly --webroot -w /var/www/test...test.сайт

Эта команда получает сертификат для доменов test.сайт и www.test.сайт. Файлы для подтверждения аутентификации будут размещены в каталоге /var/www/example/. Также вы можете использовать встроенный веб-сервер для аутентификации:

sudo certbot certonly --standalone -d test..test.сайт

Во время генерации сертификата утилита спросит ваш Email-адрес для аккаунта ACME, на который будут приходить уведомления о необходимости продления и другая информация:

Затем вам предложат подтвердить, что вы прочитали правила использования сервиса, ответьте А :

Только после этого начнётся получение сертификата. Если всё прошло успешно, то ваш сертификат будет сохранён в /etc/letsencrypt/live/имя_домена/, оттуда вы уже можете использовать их в своих приложениях. Если же возникли ошибки, то утилита сообщит об этом.

4. Создание сертификата для Nginx

Вам не обязательно вручную устанавливать сертификаты, вы можете использовать один из доступных плагинов для автоматического обновления конфигурации. Например, рассмотрим использование плагина для Nginx:

sudo certbot run --nginx

Дополнительные параметры задавать не надо, потому что утилита сама прочитает конфигурацию и выведет список доступных доменов:

Введите цифру нужного домена или несколько цифр, разделённых запятой. Утилита сама установит всё, что нужно, а затем спросит вас, нужно ли перенаправлять http-трафик на https:

Затем утилита выдаст ту же информацию, что и в предыдущем варианте:

5. Обновление сертификата Let"s Encrypt

Чтобы выполнить обновление сертификата Let"s Encrypt, достаточно запустить команду certbot с опцией certonly . Учитывая, что сертификат находится в папке certbot, а конфигурация веб-сервера настроена именно на эту папку, то этой операции достаточно. Если же сертификаты копируются в другую папку, то вам понадобится скрипт для их автоматического копирования после обновления.

sudo certbot certonly -d test..test.сайт

Если срок службы сертификата ещё не вышел и обновление не требуется, утилита спросит вас, действительно ли это надо сделать.

Если вы хотите обновлять сертификат в не интерактивном режиме, например с помощью скрипта, то нужно использовать опцию -n , также при использовании этой опции надо передать плагин, который будет использоваться для аутентификации:

sudo certbot certonly --nginx -n -d test..test.сайт

Теперь можно добавить эту команду в планировщик cron, например раз в неделю:

0 0 * * 0 /usr/bin/certbot certonly --nginx -n -d test..test.сайт

Если вы хотите обновить сертификаты для всех доменов одной командной в не интерактивном режиме, достаточно выполнить команду:

sudo certbot renew

6. Получение Wildcard сертификата Let"s Encrypt

Let"s Encrypt Wildcard-сертификаты появились относительно недавно. Они позволяют использовать один сертификат для всех поддоменов определённого домена, например *.test.сайт. Но и работает это всё сложнее - вам надо будет подтвердить, что этот домен принадлежит именно вам. Для этого надо добавить TXT-запись к зоне домена.

Вы можете сделать это вручную или же использовать dns-плагин для Certbot, чтобы добавить её автоматически. Правда, плагин поддерживается только для популярных сервисов, таких, как DigitalOcean, Linode, Cloudflare и так далее. В этой статье рассмотрим ручной вариант. Команда для генерации сертификата будет выглядеть вот так:

sudo certbot certonly --agree-tos -d test..test..api.letsencrypt.org/directory

Вам надо будет разрешить публикацию вашего IP-адреса, а потом добавить TXT-запись с нужным именем и значением к вашей доменной зоне. В моем случае это _acme-challenge.test.сайт со специальным хэшем:

SSL сертификат - это цифровое удостоверение сайта. Он необходим, если вы хотите настроить доступ к сайту по протоколу HTTPS.

Обычно сертификаты стоят денег, но можно самостоятельно и легко сгенерировать бесплатный с помощью Lets Encrypt .

Подготовка

Для получения и установки сертификата вам понадобится доступ к серверу по протоколу SSH. Вам нужно подключиться через терминал с помощью команды

Ssh user_name@host_name

либо поискать веб-консоль в панели управления вашим хостингом.

Для получения и обновления сертификата вам потребуется программа Certbot , которая будет работать с сервисом Let’s Encrypt. Чтобы её установить, введите следующие команды:

Wget https://dl.eff.org/certbot-auto chmod a+x certbot-auto

Настройка одной командой

Следующий шаг зависит от того, какой веб-сервер у вас установлен.

Apache

./certbot-auto --apache

Nginx

./certbot-auto --nginx

После ввода одной из данных команд вы увидите ответ приблизительно следующего содержания.

Запрос на ввод Email

Введите ваш или произвольный email адрес и нажмите Enter .

Запрос на согласие с правилами сервиса

Теперь вам предлагают ознакомиться с правилами использования сервиса. Введите A и нажмите Enter .

Запрос на присоединение к почтовой рассылке

Вам предлагают согласиться с получением почтовой рассылки на ваш адрес. Смело вводим N для отказа и нажимаем Enter .

Перечень ваших сайтов

Наконец, программа выведет все ваши домены, которые нашла у Apache или Nginx и предложит ввести номер того домена, который вы хотите подключить. В моём случае это будет №1. Введите число и нажмите Enter .

Результат работы программы

Вам также предложат выбрать, желаете ли вы оставить сайт доступным и по HTTP и по HTTPS или только HTTPS. Выбираем подходящий вариант и нажимаем Enter .

Готово . Теперь вы можете зайти на сайт по адресу https://<имя сайта>

Программа получила все необходимые сертификаты и положила их в директорию

/etc/letsencrypt/live/<имя вашего домена>/cert.pem

Попутно она создала новый конфиг для вашего веб-сервера и настроила доступ к сайту по протоколу HTTPS. Конфигурационный файл можно найти по адресу

/etc/apache2/sites-available/<имя домена>-le-ssl.conf

Продление

Сертификат Let’s Encrypt выдаётся на 3 месяца. Для обновления достаточно вызвать команду

./certbot-auto renew

и затем перезагрузить сервер. Удачи!

В статье рассмотрим плюсы и минусы бесплатного Let"s Encrypt, для кого подойдет, как получить и установить его на сайт с панелью Plesk 12.5

Let"s Encrypt - бесплатный, автоматизированный проект, с открытым CA (certificate authority - центр сертификации).

ОСНОВНЫЕ ПРЕИМУЩЕСТВА

бесплатно: любой владелец сайта (в частности, доменного имени) может получить и установить доверенный TLS-сертификат Let"s Encrypt (TLS - наследник SSL);
автоматизация: все функции установки, конфигурации и обновления проводятся в автоматическом режиме;
безопасность: все методы шифрования Let’s Encrypt отвечают текущим стандартам;
прозрачность: публичная доступность информации о выпуске и отзыве каждого сертификата для любого желающего;
свободно: будет использован принцип open standard для протоколов взаимодействия с CA (certificate authority).

ПРОГРАММНАЯ РЕАЛИЗАЦИЯ

Центр Сертификации выдаёт сертификаты, которые генерируются на АСМЕ сервере по протоколу Boulder, написанные на языке GO (доступный в исходниках под лицензией MPL2).
Данный сервер предоставляет RESTful-протокол, который функционирует через канал с TLS шифрованием.
Клиентская часть протокола АСМЕ, т.е. certbot, написанный на языке Python, также открыт под APACHE лицензией. Certbot устанавливается на клиентском сервере, чтобы создавать запрос сертификата, проверить валидность домена и после этого устанавливает сертификат с последующей настройкой шифрования HTTPS веб-сервера.
Также в функцию certbot входит обновление сертификата после истечения срока действия. Установка сертификата производится одной командой после того как принимается лицензия.
Certbot позволяет устанавливать сертификат с дополнительными опциями -OCSP stapling и HTTP Strict Transport Security

УСТАНАВЛИВАЕМ SSL СЕРТИФИКАТ LET"S ENCRYPT (ИНСТРУКЦИЯ)

Рассмотрим использование сертификата применительно к серверам, используемым на нашем хостинге.
Подавляющее большинство наших серверов используют версию Plesk 12.5 где данный модуль уже включён в дистрибутив Plesk 12.5 и установка его проста и удобна. Достаточно зайти в панель плеск в раздел «Сайты и домены », кликнуть на модуль Let"s Encrypt,

Выбрать нужные опции и после нажатия кнопки «Установить», установка произойдёт менее чем за минуту.

Так как данный сертификат рассчитан на срок не более 90 дней, то в панели плеск создана соответствующая задача cron в разделе Инструменты и настройки - Планировщик задач

Стоит заметить, что существуют некоторые ограничения на генерацию сертификата:

  • дублирующие сертификаты - не более 5 в неделю;
  • количество попыток генерации сертификата не более 5 раз в час.

О НЕДОСТАТКАХ LET"S ENCRYPT

В конце этой статьи хотим отметить, что несмотря на все преимущества данного типа сертификата, существуют недостатки, которые нужно учитывать при выборе SSL:
  1. Бесплатный сертификат Let"s Encrypt кратковременный и рассчитан на срок не более 90 дней, в отличии от платного, который можно выпустить сроком до 3 лет. Вы можете, конечно, перевыпускать сертификат каждые 3 месяца, но обязательно следите за сроками. Перевыпуск сертификата можно осуществить тремя способами: вручную, за счет настройки планировщика задач cron или автоматически.

    Если вы выбрали способ обновления вручную , то следите четко за сроками и вовремя перевыпускайте сертификат. Иначе рискуете получить наплыв недовольных пользователей сайта и их последующий отток.

    Планировщик задач cron - это способ настройки автоматического обновления. Способ хорош для тех, кто владеет навыками администрирования Linux и умеет работать с кронами. Нужно еще учитывать, что в работе крона не исключены ошибки, которые могут помешать перевыпуску сертификата. Вывод: следить за обновлением все равно придется.

    Автоматическое обновление. Этот способ подразумевает, что вы принимаете автоматические настройки, предусмотренные Центром сертификации. И тут нужно понимать, что вы таким образом, даете свое согласие на то, что ЦС может вносить изменения по своему усмотрению в ПО и настройки вашего сервера.

  2. Не все домены можно защитить бесплатным Let"s Encrypt. Данный сертификат рассчитан только на защиту одного домена без проверки компании, так называемые DV SSL (Domain Validation).

    Так, при помощи Let"s Encrypt нельзя создать следующие типы сертификатов:

    - WildCard сертификат для защиты поддоменов определённого домена;
    - Сертификаты OV SSL(organization validation) , предполагающие проверку не только домена, но и компании;
    - Сертификаты EV SSL (extended validation) . Сертификат с максимальной степенью защиты и зелёной адресной строкой браузера;
    - Multi-Domain сертификат типа UCC;


  3. Важный момент - нет никаких финансовых гарантий использования Let"sEncrypt . Если вдруг произойдет взлом бесплатного сертификата, то денежную компенсацию никто вам не предоставит.

ЗАКЛЮЧЕНИЕ

Подводя итоги, можно сказать, что Центр Сертификации Let"s Encrypt достаточно успешный проект, популярность которого растет с каждым годом среди пользователей сети.

И если вам нужен простой сертификат для одного домена, вы обладаете соответствующими навыками администрирования, а также если нет необходимости в SSL с проверкой компании (OV- organization validation) или наличие зеленой адресной строки и указания названия компании в сертификате, то данный сертификат можно использовать.

Тем не менее, мы рекомендуем крупным компаниям, интернет-магазинам, банкам и другим e-commerce проектам устанавливать коммерческие от известных Центров сертификации, таких как, например, GlobalSign, Comodo.
Так вы заручитесь доверием пользователей и покажете, что вы серьезная компания, которая заботится о безопасности данных клиентов.

  • Поделиться:

Ранее мною была подана заявка на участие в тестировании сервиса выдачи бесплатных SSL сертификатов Let’s Encrypt. И вот сегодня, наконец-то пришло письмо о том что я могу принять участие в тестировании и получить сертификат для указанного в заявке домена.

На данный момент процесс закрытого бета-тестирования Let’s Encrypt закончен и любой желающий может создать сертификат для своего сайта.

В этой статье я опишу процесс создания и автоматического продления сертификатов с помощью сервиса Let’s Encrypt. Я использую Nginx на всех своих сайтах, поэтому, инструкция рассчитана под использование именно этого веб-сервера.

Для автоматизации получения сертификата, Let’s Encrypt использует ACME — специальный клиент написанный на Perl. Все действия осуществляются непосредственно через консоль и после получения сертификата, дальнейшее его продление будет проходить полностью в автоматическом режиме.

Для создания сертификатов использовалась виртуальная машина с OS Debian 8.2, но вы можете использовать любой другой Linux дистрибутив по своему усмотрению.

Перед тем как перейти к процессу создания сертификатов Let’s Encrypt, необходимо определится с расположением файлов ACME. Клиент нам понадобится в дальнейшем для продления сертификатов.

В моем случае ACME будет расположен в директории home:

Cd /home

Если следовать официальной инструкции, для загрузки ACME необходимо установить клиент Git:

# apt-get install git

После чего загрузить файлы командой:

# git clone https://github.com/letsencrypt/letsencrypt # cd letsencrypt

Как альтернативный вариант, я предлагаю просто скачать zip-архив ACME с официального репозитория GitHub.

# wget https://github.com/letsencrypt/letsencrypt/archive/master.zip

Извлекаем архив и переходим в каталог с файлами:

# unzip master.zip # mv letsencrypt-master letsencrypt # cd letsencrypt

Для проверки владения доменом, необходимо добавить в настройки виртуального хоста Nginx:

Server { listen 80; server_name test..сайт; location "/.well-known/acme-challenge" { default_type "text/plain"; alias /tmp/letsencrypt-auto"; } }

Для уже существующего сайта, нужно добавить в секцию server алиас:

Location "/.well-known/acme-challenge" { default_type "text/plain"; alias /tmp/letsencrypt-auto"; }

Создание сертификата Let’s Encrypt

Есть несколько параметров запуска клиента Let’s Encrypt. Подробнее о каждом из них можно прочитать на странице официальной документации . Чтобы создать сертификат, просто выполните команды ниже:

# export DOMAINS="-d test..test../letsencrypt-auto certonly --server https://acme-v01.api.letsencrypt.org/directory -a webroot --webroot-path=$DIR --agree-dev-preview $DOMAINS

Не забудьте заменить названия доменов на свои.

В процессе генерации сертификата Let’s Encrypt необходимо будет указать email:

Enter email address (used for urgent notices and lost key recovery)

Примите условия использования:

Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.0.1-July-27-2015.pdf. You must agree in order to register with the ACME server at https://acme-staging.api.letsencrypt.org/directory

Соглашаемся на сохранение вашего адреса в логах Let’s Encrypt:

NOTE: The IP of this machine will be publicly logged as having requested this certificate. If you"re running letsencrypt in manual mode on a machine that is not your server, please ensure you"re okay with that. Are you OK with your IP being logged?

Если проверка прошла успешно, то вы увидите следующее сообщение:

IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/test..pem. Your cert will expire on 2016-03-06. To obtain a new version of the certificate in the future, simply run Let"s Encrypt again. - If like Let"s Encrypt, please consider supporting our work by: Donating to ISRG / Let"s Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

Сгенерированный сертификат и ключи для нашего домена будет расположены в папке:

/etc/letsencrypt/live/test.сайт/

Не меняя расположение, вам необходимо указать путь к файлам в настройка Nginx или другого веб-сервера.

Продление сертификата Let’s Encrypt

Все сертификаты Let’s Encrypt имеют срок действия равный 90 дней. Поэтому, обновлять вручную сертификаты каждые 3 месяца не совсем удобно. По словам представителей Let’s Encrypt, время жизни сертификата в будущем может быть уменьшено.

Чтобы автоматизировать процесс продления сертификата, необходимо добавить в cron скрипт:

Export DOMAINS="-d test..test.сайт" export DIR=/tmp/letsencrypt-auto mkdir -p $DIR /home/letsencrypt/letsencrypt-auto --renew certonly --server https://acme-v01.api.letsencrypt.org/directory -a webroot --webroot-path=$DIR --agree-dev-preview $DOMAINS service nginx restart

Наличие SSL сертификата для сайта позволяет защитить данные пользователей, передаваемые по сети от атак человек-посередине (man-in-the-middle) и гарантировать целостность переданных данных В этом обзоре мы расскажем об особенности установки и привязки бесплатного SSL сертификата от Let’s Encrypt для сайта IIS, запущенного на Windows Server 2012 R2.

Пара слов о Let’ s Encrypt – это некоммерческий центр сертификации, позволяющий в автоматическом режиме через API выпускать бесплатные SSL/TLS сертификаты. Выдаются только сертификаты для валидации доменов (domain validation), со сроком действия 90 дней, что не является проблемой из-за наличия встроенной возможности автоматического перевыпуска сертификата, в результате чего можно непрерывность защиты.

API интерфейс, позволяющий автоматически выпускать сертификаты называется Automated Certificate Management Environment (ACME ) API. Для Windows систем на данный момент имеется 3 реализации клиента ACME API:

  • Утилита LetsEncrypt-Win-Simple – утилита командной строки для интерактивного выпуска сертификата и привязки его к определенному сайту на вашем веб сервере IIS
  • Модуль Powershell ACMESharp – библиотека Powershell с множеством команд для взаимодействия через ACME API с серверами Let’s Encrypt
  • Certify – графическая утилита для интерактивного управления сертификатами через ACME API (на данный момент функционал еще не полный, но проект развивается)

Самый простой способ получить SSL сертификат от Let’s Encrypt — воспользоваться консольной утилитой LetsEncrypt- Win- Simple . Она представляет собой простой мастер, который позволяет выбрать один из сайтов, запущенных на IIS, и автоматически выпустить и привязать к нему SSL сертификат.

Итак, предположим у нас имеется веб сайт на IIS, развёрнутый под управлением Windows Server 2012 R2. Наша задача, переключить его в HTTPS режим, установив SSL сертификат от Let’s Encrypt.

Скачайте последний релиз клиента со страницы проекта на GitHub https://github.com/Lone-Coder/letsencrypt-win-simple/releases (в моем случае это была версия v1.9.11.2).

Распакуйте его в каталог на сервере с IIS: c:\inetpub\letsencrypt

Откройте командную строку с правами администратора, перейдите в каталог c:\inetpub\ letsencrypt и запустите letsencrypt.exe.

Запустится интерактивный мастер, который сначала попросит указать ваш email на который будут отправляться уведомления о проблемах с обновлением сертификата и согласиться с пользовательским соглашением.

Затем нужно будет выбрать, что необходимо создать новый сертификат (N: Create new certificat e) и выбрать тип сертификата (в нашем примере нет необходимости использовать сертификат с несколькими SAN), поэтому достаточно выбрать пункт 1. Single binding of an IIS site .

Следующий этап – выполнение валидации домена. Доступно несколько вариантов валидации: TLS, через запись в DNS или через HTTP). Самый простой вариант — выбрать пункт 4 Create temporary application in IIS (recommended). В этом случае на веб-сервере будет создано небольшое приложение, через которое сервера Let’s Encrypt смогут провести валидацию.

Примечание . При выполнении TLS/HTTP проверки ваш сайт должен быть доступен снаружи по полному DNS имени по протоколам HTTP (80/TCP) и HTTPS (443/TCP).

После валидации утилита letsencrypt-win-simple автоматически отправит запрос на генерацию сертификата, скачает его (все необходимые файлы, а также закрытый ключ сохраняются в каталог C:\Users\Administrator\AppData\Roaming\letsencrypt-win-simple) и создаст привязку на сайте IIS.

В том случае, если на сайте уже установлен SSL сертификат, он будет заменен новым.

Кроме того, будет создано правило в планировщике заданий Windows, которое запускается каждый день и автоматически выпускающее и устанавливающее новый сертификат каждые 60 дней.

Вручную запустить процедуру перевыпуска сертификата можно такой командой:

LetsEncrypt --renew

Чтобы перенаправить весь входящий HTTP трафик на HTTPS сайт, нужно установить модуль Microsoft URL Rewrite Module , и убедиться, что в настройках сайте не включена опция обязательного использования SSL (Require SSL). Осталось настроить редирект в файле web.config:













Отметим, что сертификаты Let’s Encrypt в настоящий момент широко используются на сайтах многих крупных компаний и им доверяют все браузеры. Надеюсь, что судьба бесплатного центра сертификации Let’s Encrypt не постигнет участь WoSign и StartCom.