
Let’s Encrypt предоставляет бесплатные SSL/TLS-сертификаты, которые позволяют защитить данные между сервером и пользователями. Для их работы требуется поддержка протокола ACME, который автоматизирует выдачу и продление сертификатов. На практике это значит, что при правильной настройке сертификат обновляется без ручного вмешательства каждые 90 дней.
Перед установкой необходимо проверить версию сервера и наличие доступа к домену. Для Linux-систем минимальная поддержка включает OpenSSL 1.0.1 и выше, Python 3.6 для работы Certbot. На Windows рекомендуется использовать WSL или специальный клиент Certbot для Windows. Также важно убедиться, что порты 80 и 443 открыты для внешних соединений.
Установка сертификата через Certbot требует минимальных команд, но для успешного применения нужно учитывать веб-сервер: Apache и Nginx поддерживают автоматическую интеграцию, а для других серверов потребуется ручная настройка конфигурационных файлов. При этом правильная настройка автоматического продления исключает простои и просрочку сертификата.
Эта статья подробно покажет пошаговый процесс установки Let’s Encrypt, включая проверку совместимости, генерацию сертификата, интеграцию с веб-сервером и настройку автоматического продления. Все действия ориентированы на конкретные команды и конфигурации, чтобы сразу получить рабочее SSL-решение на сервере.
Проверка совместимости сервера с Let’s Encrypt

Для работы Let’s Encrypt сервер должен поддерживать протокол ACME и иметь открытые порты 80 и 443. На Linux рекомендуется использовать OpenSSL версии 1.0.1 и выше, а также Python версии 3.6 и выше для работы клиента Certbot. Проверить установленную версию OpenSSL можно командой openssl version, а Python – python3 —version.
Необходимо убедиться, что домен корректно разрешается через DNS и указывает на IP-адрес сервера. Для этого используется команда ping ваш_домен или nslookup ваш_домен. Let’s Encrypt не выдаст сертификат, если домен не доступен извне.
Для веб-серверов Apache и Nginx требуется проверка конфигурации на наличие виртуальных хостов с корректными корневыми директориями. На Apache команда apachectl -S покажет активные виртуальные хосты, на Nginx – nginx -T. Это позволяет убедиться, что сертификат сможет быть автоматически установлен в нужный виртуальный хост.
На серверах Windows рекомендуется использовать WSL для запуска Certbot или установить клиент Certbot для Windows. Также нужно проверить наличие прав администратора и доступность командной строки для запуска скриптов обновления сертификатов.
Установка Certbot на Linux и Windows

Certbot – официальный клиент для получения и продления сертификатов Let’s Encrypt. Его установка зависит от операционной системы и веб-сервера.
На Linux процесс отличается в зависимости от дистрибутива:
- Debian/Ubuntu:
- Обновить пакеты: sudo apt update
- Установить Certbot и плагин для веб-сервера: sudo apt install certbot python3-certbot-apache или python3-certbot-nginx
- Проверить версию: certbot —version
- CentOS/RHEL:
- Установить EPEL репозиторий: sudo yum install epel-release
- Установить Certbot: sudo yum install certbot python3-certbot-apache или python3-certbot-nginx
- Проверить установку: certbot —version
На Windows есть два варианта:
- Установка через WSL:
- Установить WSL и Ubuntu из Microsoft Store
- Следовать инструкциям для Linux внутри WSL
- Использование нативного клиента Certbot для Windows:
- Скачать последнюю версию с официального сайта https://certbot.eff.org
- Запустить certbot.exe через командную строку с правами администратора
- Убедиться, что Certbot доступен: certbot —version
После установки рекомендуется сразу проверить возможность генерации тестового сертификата командой certbot certonly —dry-run, чтобы убедиться, что сервер и DNS корректно настроены.
Создание SSL-сертификата для домена через Certbot

Для генерации SSL-сертификата с помощью Certbot требуется подтверждение контроля над доменом. Наиболее распространённый метод – автоматическая проверка через веб-сервер.
Для Apache или Nginx используется команда:
sudo certbot —apache -d ваш_домен.com -d www.ваш_домен.com или sudo certbot —nginx -d ваш_домен.com -d www.ваш_домен.com
Certbot автоматически создаст необходимые директории, сгенерирует ключи и установит сертификат в конфигурацию веб-сервера. При этом создаются следующие файлы:
- privkey.pem – закрытый ключ
- fullchain.pem – полный сертификатный цепочек
- cert.pem – сертификат домена
- chain.pem – цепочка промежуточных сертификатов
Для серверов без автоматической интеграции используется режим standalone:
sudo certbot certonly —standalone -d ваш_домен.com
После успешного создания сертификата нужно проверить доступность HTTPS, открыв сайт в браузере или используя команду curl -I https://ваш_домен.com, чтобы убедиться, что сертификат применяется корректно и статус соединения 200 OK.
Настройка автоматического продления сертификата
Let’s Encrypt выдает сертификаты сроком на 90 дней. Для предотвращения простоя необходимо настроить автоматическое продление с помощью Certbot.
На Linux используется встроенный cron или systemd таймер. Для проверки работы таймера systemd выполните:
systemctl list-timers | grep certbot
Если таймер отсутствует, можно добавить cron-задание:
sudo crontab -e
И добавить строку:
0 3 * * * certbot renew —quiet —post-hook «systemctl reload nginx»
Рекомендуется проверять работу продления командой:
sudo certbot renew —dry-run
Это имитирует продление и позволяет убедиться, что cron или systemd выполняет обновление без ошибок.
Интеграция сертификата с Apache и Nginx
После генерации сертификата его необходимо подключить к веб-серверу. В Apache для каждого виртуального хоста добавляют следующие директивы:
- SSLEngine on – активирует SSL
- SSLCertificateFile – путь к fullchain.pem
- SSLCertificateKeyFile – путь к privkey.pem
Пример конфигурации для Apache:
<VirtualHost *:443>
ServerName ваш_домен.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/ваш_домен.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/ваш_домен.com/privkey.pem
</VirtualHost>
Для Nginx SSL настраивается в блоке server:
- listen 443 ssl; – включение SSL на порту 443
- ssl_certificate – путь к fullchain.pem
- ssl_certificate_key – путь к privkey.pem
Пример конфигурации для Nginx:
server {
listen 443 ssl;
server_name ваш_домен.com;
root /var/www/html;
ssl_certificate /etc/letsencrypt/live/ваш_домен.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ваш_домен.com/privkey.pem;
}
После внесения изменений веб-сервер необходимо перезагрузить: sudo systemctl reload apache2 или sudo systemctl reload nginx. Это применяет сертификат без остановки сервера.
Проверка корректности установки SSL на сайте

После интеграции сертификата важно убедиться, что SSL применяется корректно и все соединения защищены.
Основные методы проверки:
- Браузер: открыть сайт по HTTPS и убедиться, что отображается значок замка. Проверить цепочку сертификатов и дату окончания срока действия.
- Командная строка:
- Использовать curl -I https://ваш_домен.com для проверки ответа сервера.
- Проверить подробную информацию с openssl s_client -connect ваш_домен.com:443 -servername ваш_домен.com, включая цепочку сертификатов и выбранный протокол TLS.
- Онлайн-инструменты: SSL Labs Server Test (https://www.ssllabs.com/ssltest/) предоставляет оценку конфигурации и безопасности сертификата.
Рекомендуется проверять сертификат сразу после установки и после автоматического продления, чтобы убедиться, что веб-сервер корректно перезагружен и HTTPS соединения доступны для всех пользователей.
Устранение типичных ошибок при установке и обновлении сертификата

При работе с Let’s Encrypt могут возникать ошибки, связанные с доступностью домена, настройкой веб-сервера или конфликтами с существующими сертификатами. Ниже приведены наиболее распространённые проблемы и способы их устранения.
| Ошибка | Причина | Решение |
|---|---|---|
| Ошибка валидации домена | DNS не указывает на сервер или порт 80/443 закрыт | Проверить A/AAAA записи, открыть порты через firewall, использовать ping и nslookup для диагностики |
| Конфликт с существующим сертификатом | На сервере уже установлен другой SSL для того же домена | Удалить старый сертификат или указать точный путь в конфигурации веб-сервера |
| Неудачное автоматическое продление | Cron или systemd таймер не настроен или веб-сервер не перезагружен | Проверить cron/systemctl list-timers, добавить —post-hook для перезагрузки сервера, протестировать certbot renew —dry-run |
| Ошибка разрешения зависимостей Certbot | Отсутствуют необходимые пакеты Python или обновления системы | Обновить систему и установить недостающие пакеты: sudo apt install python3-certbot-apache или аналог для вашей ОС |
После устранения ошибок рекомендуется повторно проверить работу сертификата и доступность HTTPS с помощью браузера, curl и онлайн-инструментов проверки SSL.
Вопрос-ответ:
Что такое Certbot и для чего он нужен при установке Let’s Encrypt?
Certbot — это официальный клиент Let’s Encrypt, который автоматизирует получение и продление SSL-сертификатов. Он создает ключи, формирует запросы на сертификаты, интегрирует их с веб-сервером и настраивает автоматическое обновление каждые 90 дней, что упрощает управление HTTPS-соединениями.
Какие порты должны быть открыты на сервере для успешной генерации сертификата?
Для успешной выдачи сертификата Let’s Encrypt требуется, чтобы порты 80 (HTTP) и 443 (HTTPS) были открыты и доступны извне. Порт 80 используется для проверки владения доменом, а 443 — для установки HTTPS-соединения. Закрытые порты приведут к ошибкам валидации.
Как проверить, что SSL-сертификат установлен правильно на сервере?
Проверку можно провести несколькими способами: открыть сайт в браузере и убедиться, что отображается значок замка; использовать команду curl -I https://ваш_домен.com для проверки заголовков; выполнить openssl s_client -connect ваш_домен.com:443 -servername ваш_домен.com для анализа цепочки сертификатов; или воспользоваться онлайн-инструментами, например, SSL Labs Server Test, чтобы оценить конфигурацию и безопасность.
Что делать, если автоматическое продление сертификата не срабатывает?
Необходимо проверить работу cron или systemd таймера, который отвечает за продление. В Linux команда systemctl list-timers | grep certbot покажет активные таймеры. Если таймер отсутствует, можно добавить cron-задание с командой certbot renew —quiet —post-hook «systemctl reload nginx». После настройки рекомендуется выполнить certbot renew —dry-run для тестирования.
Можно ли установить Let’s Encrypt на Windows-сервер, и какие есть особенности?
Да, на Windows можно использовать Certbot через WSL или нативный клиент для Windows. Важно иметь права администратора для запуска скриптов и обеспечить доступность портов 80 и 443. В случае WSL установка проводится как на Linux-дистрибутиве, что позволяет применять те же команды и интеграцию с веб-сервером.
Какие шаги нужно выполнить для установки Let’s Encrypt на сервер с Apache?
Сначала необходимо убедиться, что сервер поддерживает ACME и открыты порты 80 и 443. Затем устанавливается Certbot и соответствующий плагин для Apache: sudo apt install certbot python3-certbot-apache. После этого создается сертификат командой sudo certbot —apache -d ваш_домен.com -d www.ваш_домен.com, и Certbot автоматически обновляет конфигурацию виртуального хоста. Для проверки правильности установки следует открыть сайт по HTTPS или использовать curl -I https://ваш_домен.com.
Как убедиться, что SSL-сертификат автоматически продлевается без ошибок?
Следует проверить наличие cron-задания или systemd таймера, который выполняет certbot renew. Для проверки systemd выполняют команду systemctl list-timers | grep certbot. Если используется cron, нужно добавить строку 0 3 * * * certbot renew —quiet —post-hook «systemctl reload nginx». После настройки рекомендуется выполнить certbot renew —dry-run, чтобы убедиться, что продление проходит корректно и веб-сервер перезагружается без ошибок.
