Создание сертификата Let’s Encrypt для домена и всех поддоменов

Author Автор: Роман Чернышов    Опубликовано: 1 апреля 2025

ssl cert Друзья, всем привет! Создание сертификата Let’s Encrypt вручную — это процесс, который можно выполнить с помощью инструмента certbot (ACME-клиента). Let’s Encrypt использует протокол ACME (Automated Certificate Management Environment) для автоматизации выдачи сертификатов, но «вручную» обычно подразумевается выполнение команд без автоскриптов. В рамках заметки, размещая пошаговую инструкцию для создания сертификата на Linux (например, Ubuntu), используя certbot, с последующим его добавление в конфигурацию nGinx.

Требования

Домен, для которого создается сертификат (например, example.com).
Доступ к серверу с установленной ОС (например, через SSH).
Возможность настроить DNS или веб-сервер для подтверждения владения доменом.
Установленный certbot (или другой ACME-клиент).

Шаг 1: Установка Certbot

Если Certbot еще не установлен, установите его:

На Ubuntu/Debian:

sudo apt update
sudo apt install certbot

На CentOS/RHEL:

sudo yum install epel-release
sudo yum install certbot

Проверьте версию:

certbot --version

Шаг 2: Выбор метода подтверждения владения доменом

Let’s Encrypt требует доказать, что вы владеете доменом. Есть два основных метода:

DNS-01: Добавление TXT-записи в DNS

Данный вариант подходит, если вы не хотите использовать веб-сервер или нужно получить wildcard-сертификат (*.example.com).

Шаг 3: Создание сертификата

Запустите Certbot:

sudo certbot certonly --manual --preferred-challenges dns -d example.com -d *.example.com

Certbot покажет TXT-запись, которую нужно добавить в DNS:

Please deploy a DNS TXT record under the name
_acme-challenge.example.com with the following value:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Зайдите в панель управления вашего DNS-провайдера (например, Cloudflare, Namecheap) и добавьте TXT-запись:
Имя: _acme-challenge.example.com
Значение: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Подождите 5-10 минут, чтобы DNS обновился. Проверьте:

dig -t TXT _acme-challenge.example.com

кстати вы можете использовать созданный для этого мною сервис, проверки DNS записей домена, доступный по ссылке. Перейдите по ссылке, укажите домен _acme-challenge.example.com и тип записи TXT, нажмите «Получить данные». Если возвращаемое значение TXT соответствует тому, что вы прописали в настройках DNS домена(значит данные уже обновились), можно в консоли с выводом certbot, нажать клавишу для продолжения проверки.

Шаг 4: Получение сертификата

После успешной проверки Certbot сохранит сертификаты в:

/etc/letsencrypt/live/example.com/
fullchain.pem — полный сертификат (сертификат + цепочка).
privkey.pem — приватный ключ.

Шаг 5: Использование сертификата

Скопируйте файлы в нужное место для вашего веб-сервера (например, Nginx или Apache) и настройте их в конфигурации.

Пример для Nginx:

server {
    listen 443 ssl;
    server_name example.com;
 
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live Eexample.com/privkey.pem;
}

Перезапустите сервер:

sudo systemctl restart nginx

Шаг 6: Обновление сертификата

Сертификаты Let’s Encrypt действуют 90 дней. Для проверки и обновления вручную:

sudo certbot renew --dry-run  # Тестовый запуск
sudo certbot renew           # Реальное обновление

Для автоматизации добавьте в cron:

crontab -e
0 0 * * * certbot renew --quiet

Повторно подтверждать права на владение доменом при перевыпуске сертификата не нужно!

Оставить комментарий

Автор блога
Роман Чернышов
Веб-разработчик,
Full Stack
Senior, Architect
PHP, JavaScript, Node.JS, Python, HTML 5, CSS 3, MySQL, Bash, Linux Admin
Заказать работу
предложить оффер

Моя книга
Книга. Веб-разработчик. Легкий вход в профессию
Печатная книга
Веб-разработчик.
Легкий вход в профессию
Купить за 359₽
Популярные записи
Последние вопросы
Список вопросов
Последние комментарии
Меню

Archive

Мои проекты
Insurance CMS Love Crm CMS Совместные покупки Мой PHP Framework Хостинг для моих клиентов Лицензии на мой софт и поддержка