Получение и установка бесплатного сертификата от центра сертификации 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
git clone https://github.com/letsencrypt/letsencrypt |
Переходим в директорию и запускаем letsencrypt-auto
, чтобы загрузить все необходимые зависимости и обновить исходный код клиента.
cd letsencrypt |
Получение сертификата доступно как в автоматическом, так и в ручном режимах.
Также существует огромное количество скриптов и форков для полной автоматизации, я размещу информацию о них в конце статьи.
Например для получение сертификата для веб-сервера Apache
достаточно выполнить:
./letsencrypt-auto --apache |
Или для NGINX
:
./letsencrypt-auto --nginx |
В данном примере мы рассмотрим универсальный вариант с использованием standalone
сервера.
- Отключим запущенный веб-сервер (в моем случае это
NGINX
). - Отправляем запрос на получение сертификата для доменов
example.com
иwww.example.com
./letsencrypt-auto certonly --standalone -d example.com -d www.example.com |
Будет предложено ввести e-mail адрес для получения важных сообщений или восстановления забытого ключа.
После этого необходимо будет согласиться с лицензионным соглашением.
При успешном выполнении мы получим сертификат и всю цепочку:
IMPORTANT NOTES: |
В директории /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 или другими доступными клиентами