SSL Lets Encrypt для IP сервера

Ресурсы

Этапы настройки. Получение SSL сертификата для IP 201.453.65.117

201.453.65.117 – IP взят из головы для наглядного примера. Замените на свой при настройке.

1. Обновите acme.sh

~/.acme.sh/acme.sh --upgrade

2. Настройте NGINX для порта 80

Отредактируйте /etc/nginx/sites-available/default. Через ftp или nano

sudo nano /etc/nginx/sites-available/default

Замените содержимое на:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    server_name _;

    location ~ ^/.well-known/(acme-challenge|pki-validation)/ {
        add_header Content-Type text/plain;
        root /var/www/letsencrypt;
    }

    location / {
        return 301 https://$host$request_uri;
    }
}

Создайте необходимые директории и перезагрузите NGINX:

sudo mkdir -p /var/www/letsencrypt
sudo mkdir -p /etc/nginx/ssl
sudo nginx -t
sudo nginx -s reload

3. Получите сертификат для IP

~/.acme.sh/acme.sh --issue --server letsencrypt \
  -d 201.453.65.117 \
  -w /var/www/letsencrypt \
  --certificate-profile shortlived \
  --days 3

-w /var/www/letsencrypt. Параметр -w (или --webroot) указывает клиенту acme.sh путь к папке, в которую ваш веб-сервер (например, Nginx или Apache) разрешает записывать и читать файлы.

--certificate-profile shortlived. Здесь указываем тип сертификата, в нашем случае shortlived подходящий для настройки ssl для ip сервера

--days 3. Указываем значение, через сколько дней будет обновляться сертификат

Обратите внимание, что для сертификатов IP-адресов требуется профиль с коротким сроком действия acme.sh . Let’s Encrypt ограничивает срок действия сертификата IP-адреса 6,66666 днями (160 часами), поэтому ему необходимо чаще проверять наличие обновлений. Настройка 
--days 3 гарантирует проверку на обновление каждые 3 дня. Вы можете установить это значение равным 4 или 5, но избегайте установки значения 6 или выше, так как сертификат может истечь до обновления.

После успешного выполнения вы увидите результат, похожий на следующий:

-----BEGIN CERTIFICATE-----
MIIDTTCCAtOgAwIBAgISB...
...
YNzpD1ligLWublURJM70SPswarQfHyNGcqQATBTh8QIwUZadgZbPS0cs+8cgomx3
S1qrw60gA1HnEJPCKLff8W2rmaeW11x+Q1Lzv7kfJTqt
-----END CERTIFICATE-----
[Tue Feb 17 23:52:35 UTC 2026] Your cert is in: /root/.acme.sh/201.453.65.117_ecc/201.453.65.117.cer
[Tue Feb 17 23:52:35 UTC 2026] Your cert key is in: /root/.acme.sh/201.453.65.117_ecc/201.453.65.117.key
[Tue Feb 17 23:52:35 UTC 2026] The intermediate CA cert is in: /root/.acme.sh/201.453.65.117_ecc/ca.cer
[Tue Feb 17 23:52:35 UTC 2026] And the full-chain cert is in: /root/.acme.sh/201.453.65.117_ecc/fullchain.cer

4. Установите сертификат

~/.acme.sh/acme.sh --install-cert -d 201.453.65.117 \
  --key-file       /etc/nginx/ssl/ip.key \
  --fullchain-file /etc/nginx/ssl/ip.crt \
  --ca-file        /etc/nginx/ssl/ip.ca.crt \
  --reloadcmd      "sudo systemctl restart nginx"

5. Настройте NGINX для порта 443

Добавьте в /etc/nginx/sites-available/default:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    server_name _;

    location ~ ^/.well-known/(acme-challenge|pki-validation)/ {
        add_header Content-Type text/plain;
        root /var/www/letsencrypt;
    }

    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen 443 ssl http2 default_server;
    listen [::]:443 ssl http2 default_server;

    server_name _;
    return 403;

    ssl_protocols TLSv1.3 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    ssl_certificate /etc/nginx/ssl/ip.crt;
    ssl_certificate_key /etc/nginx/ssl/ip.key;
}

Настройки NGINX файла могут отличатся.

Проверьте и перезагрузите:

sudo nginx -t
sudo systemctl restart nginx

Готово! Теперь открытие 201.453.65.117 в браузере будет через https.

Важные заметки

  • Сертификат будет обновляться автоматически через acme.sh
  • Проверяйте логи:
~/.acme.sh/acme.sh.log
  • Сертификат живёт примерно 6,67 дней (160 часов), поэтому обновление каждые 3 дня обязательно