Let’s Encrypt - бесплатный SSL/TLS сертификат

Let’s Encrypt - бесплатный SSL/TLS сертификат

Roman Bogachev VMware Specialist | Drone Pilot | Traveler

Получение и установка бесплатного сертификата от центра сертификации Let’s Encrypt

Let’s Encrypt — центр сертификации, при поддержке разнообразных крупных организаций, предоставляющий бесплатные криптографические сертификаты X.509 для TLS шифрования (HTTPS).

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

Несмотря на то, что проект достаточно молодой, его спонсорами являются достаточно крупные организации:

Основные плюсы

  • Бесплатно: владелец всякого доменного имени может воспользоваться Let’s Encrypt и получить доверенный (читать как «признаётся любым современным браузером») TLS-сертификат (TLS — наследник SSL) совершенно бесплатно;

  • Автоматизированно: Let’s Encrypt предоставляет бесплатное и свободное программное обеспечение (клиент), которое, будучи настроенным на веб-сервере, может полностью автоматически запрашивать безвозмездно предоставляемые сертификаты Let’s Encrypt, автоматически конфигурировать и обновлять их;

  • Безопасно: Let’s Encrypt строится как платформа для продвижения наилучших практик безопасности TLS как на стороне центра сертификации (CA), так и на стороне веб-сайтов, помогая администраторам должным образом настраивать веб-серверы;

  • Прозрачно: информация о выпуске и отзыве каждого сертификата Let’s Encrypt доступна публично, поэтому любой желающий сможет её получить;

  • Свободно: протоколы взаимодействия со CA, позволяющие автоматизировать процессы выпуска и обновления сертификатов, будут опубликованы как открытый стандарт для максимального внедрения;

  • Кооперативно: как и любой протокол, лежащий в основе Интернета и Всемирной паутины, Let’s Encrypt является совместным, неподконтрольным какой-либо конкретной организации некоммерческим проектом, созданным исключительно для того, чтобы принести пользу обществу.

Установка

Для дальнейшей работы в системе должен быть предустановлен пакет git.

Загружаем клиент Let`s Encrypt

1
git clone https://github.com/letsencrypt/letsencrypt

Переходим в директорию и запускаем letsencrypt-auto, чтобы загрузить все необходимые зависимости и обновить исходный код клиента.

1
2
cd letsencrypt
./letsencrypt-auto --help

Получение сертификата доступно как в автоматическом, так и в ручном режимах.
Также существует огромное количество скриптов и форков для полной автоматизации, я размещу информацию о них в конце статьи.

Например для получение сертификата для веб-сервера Apache достаточно выполнить:

1
./letsencrypt-auto --apache

Или для NGINX:

1
./letsencrypt-auto --nginx

В данном примере мы рассмотрим универсальный вариант с использованием standalone сервера.

  1. Отключим запущенный веб-сервер (в моем случае это NGINX).
  2. Отправляем запрос на получение сертификата для доменов example.com и www.example.com
1
./letsencrypt-auto certonly --standalone -d example.com -d www.example.com

Будет предложено ввести e-mail адрес для получения важных сообщений или восстановления забытого ключа.

После этого необходимо будет согласиться с лицензионным соглашением.

При успешном выполнении мы получим сертификат и всю цепочку:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/example.com/fullchain.pem. Your cert will
expire on 2016-12-12. To obtain a new or tweaked version of this
certificate in the future, simply run letsencrypt-auto again. To
non-interactively renew *all* of your certificates, run
"letsencrypt-auto renew"
- If you lose your account credentials, you can recover through
e-mails sent to roman@example.com.
- Your account credentials have been saved in your Certbot
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 Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, 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/example.com/ мы обнаружим симлинки на файлы с ключами:

privkey.pem - приватный ключ для сертификата. Хранить строго в секрете; (Apache требует для SSLCertificateKeyFile и NGINX для ssl_certificate_key)

cert.pem - только сертификат сервера; (требует Apache для SSLCertificateFile)

chain.pem - все сертификаты, которые должны обслуживаться браузером БЕЗ сертификата сервера. (Apache требует для SSLCertificateChainFile)

fullchain.pem - вся цепочка, объединение chain.pem и cert.pem. (NGINX требует для ssl_certificate)

Конфигурируем используемый веб-сервер на работу с SSL-сертификатом и пользуемся.

Серификат выдается на короткий срок в целях безопасности. Чтобы не утруждать себя перевыпуском сертификатов на всех доменах, рекомендую воспользоваться Certbot или другими доступными клиентами