cp.lv — VPS, выделенные и облачные серверы

cp.lv (LANGMARKET LLP) — хостинг-провайдер: VPS, выделенные и облачные серверы на NVMe с выбором ОС, полным root-доступом и поддержкой 24/7. Тест-период до оплаты: выделенные серверы — 5 дней, VPS и облако — 5 часов.

Contact Info
LANGMARKET LLP
Rīga, Latvija

+371 00 000 000

Follow Us

Личный кабинет

Язык

Бесплатный SSL Let's Encrypt через certbot: установка и автопродление

Бесплатный SSL Let's Encrypt через certbot: установка и автопродление

Запустить на сервере одной командой (сначала проверьте содержимое скрипта ниже):

curl -sSL https://cp.lv/scripts/besplatnyj-ssl-lets-encrypt.sh | sudo bash

…или через wget:

wget -qO- https://cp.lv/scripts/besplatnyj-ssl-lets-encrypt.sh | sudo bash

Содержимое скрипта besplatnyj-ssl-lets-encrypt.sh:

#!/usr/bin/env bash
# Выпуск бесплатного сертификата Let's Encrypt для Nginx
set -e
export DEBIAN_FRONTEND=noninteractive

DOMAIN=example.com
[email protected]

# 1. Открыть порты 80 и 443
sudo ufw allow 'Nginx Full' || true

# 2. Установить certbot с плагином Nginx
sudo apt-get update
sudo apt-get install -y certbot python3-certbot-nginx

# 3. Выпустить сертификат и настроить HTTPS-редирект (неинтерактивно)
sudo certbot --nginx -d ${DOMAIN} -d www.${DOMAIN} \
  --non-interactive --agree-tos -m ${EMAIL} --redirect

# 4. Проверить конфиг Nginx и автопродление
sudo nginx -t && sudo systemctl reload nginx
sudo certbot renew --dry-run

echo "Готово: HTTPS для ${DOMAIN} включён, автопродление настроено."

Let’s Encrypt — это некоммерческий центр сертификации, который выдаёт TLS-сертификаты бесплатно: сам сертификат ничего не стоит, а выпускается и продлевается автоматически утилитой certbot. Ниже — как включить HTTPS для сайта на Nginx за несколько минут.

Что нужно заранее

  • Домен, A-запись которого указывает на IP вашего сервера.
  • Работающий server block Nginx с корректным server_name.
  • Открытые порты 80 и 443:
sudo ufw allow 'Nginx Full'

Порт 80 обязателен — по нему Let’s Encrypt проверяет владение доменом (HTTP-01 challenge).

Если server block ещё не создан, откройте конфиг в редакторе (nano, vim или mcedit):

sudo nano /etc/nginx/sites-available/example.com

Минимальный HTTP-конфиг под проверку домена (потом certbot допишет сюда HTTPS):

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.html;
}

Либо создайте конфиг целиком одной командой — скопируйте и вставьте в консоль (кавычки 'EOF' важны, чтобы Nginx не трогал $-переменные):

sudo tee /etc/nginx/sites-available/example.com > /dev/null << 'EOF'
server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.html;
}
EOF
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

Шаг 1. Установка certbot

Рекомендуемый способ — через snap, он всегда содержит свежую версию:

sudo snap install core && sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

Альтернатива через apt (если snap недоступен):

sudo apt install certbot python3-certbot-nginx -y

Шаг 2. Выпуск сертификата

Плагин Nginx сам найдёт нужный server block, выпустит сертификат и пропишет настройки HTTPS:

sudo certbot --nginx -d example.com -d www.example.com

Certbot спросит email (для уведомлений об истечении) и согласие с условиями. На вопрос про редирект выберите вариант с перенаправлением HTTP → HTTPS. После успешного выпуска сертификат сохранится в /etc/letsencrypt/live/example.com/.

Шаг 3. Что certbot добавляет в конфиг

После выпуска в server block появятся строки:

listen 443 ssl;
ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

И отдельный блок редиректа с 80 порта на HTTPS. Проверьте и перезагрузите:

sudo nginx -t
sudo systemctl reload nginx

Шаг 4. Проверка автопродления

Сертификаты Let’s Encrypt действуют 90 дней. Certbot устанавливает systemd-таймер, который продлевает их автоматически. Проверьте таймер и прогоните тестовое продление:

systemctl list-timers | grep certbot
sudo certbot renew --dry-run

Если --dry-run завершился без ошибок — реальное продление тоже пройдёт. Ничего вручную делать не нужно.

Шаг 5. Проверка HTTPS

Откройте https://example.com — в адресной строке появится замок. Проверить цепочку и срок можно из консоли:

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates

Полезные команды certbot

Задача Команда
Список сертификатов sudo certbot certificates
Продлить сейчас sudo certbot renew
Отозвать сертификат sudo certbot revoke --cert-name example.com
Добавить домен sudo certbot --nginx -d example.com -d shop.example.com

Частые вопросы

Правда ли сертификат Let’s Encrypt бесплатный? Да, центр сертификации Let’s Encrypt выдаёт и продлевает сертификаты без оплаты — это его модель. Оплачивается только сам сервер, на котором работает сайт.

Что делать, если certbot пишет «challenge failed»? Чаще всего A-запись домена ещё не указывает на сервер или закрыт порт 80. Проверьте DNS (dig example.com) и правила брандмауэра.

Сертификат на 90 дней — придётся продлевать руками? Нет. Certbot ставит таймер автопродления. Проверьте его командой certbot renew --dry-run — этого достаточно.

Можно ли выпустить wildcard-сертификат (*.example.com)? Да, но потребуется DNS-01 challenge и плагин под вашего DNS-провайдера, так как HTTP-проверка для поддоменов не годится.

HTTPS сегодня обязателен для любого сайта: он влияет и на доверие пользователей, и на ранжирование. Развернуть сайт с сертификатом можно на тарифах со страницы аренда VPS, а для магазинов и CMS — VPS для WordPress.

Кристапс Берзиньш

Кристапс Берзиньш

CEO, основатель. Отвечает за стратегию cp.lv и следит, чтобы хостинг оставался честным и понятным для клиента.