# Сертификаты

> Acme.sh, выпуск, продление, подводные камни.

- Caddy auto-HTTPS — «кади сам создаёт ssl ключи» [id=138170](https://t.me/c/2941121338/138170); certbot/acme для остальных.
- acme.sh (подготовка перед скриптами/панелью) [id=213705, 213723|09.02.2026](https://t.me/c/2941121338/213705):
```bash
apt update && apt upgrade -y
apt-get install cron socat
curl https://get.acme.sh/ | sh -s email=EMAIL && source ~/.bashrc
acme.sh --set-default-ca --server letsencrypt
# выпуск (standalone, alpn):
acme.sh --issue --standalone -d 'panel.domain' --key-file /opt/remnawave/nginx/privkey.key \
  --fullchain-file /opt/remnawave/nginx/fullchain.pem --alpn --tlsport 8443
```
Открыть 8443 (ufw allow 8443) для автообновления; ошибка «tcp port 80 is already used by nginx» — выключить nginx перед выпуском [id=213941](https://t.me/c/2941121338/213941).
- Селфстил-сертификаты через certbot: `apt install nginx certbot python3-certbot-nginx; certbot --nginx -d имя-домена` [id=371755|18.04.2026](https://t.me/c/2941121338/371755); на 80 порт nginx, сертбот генерит и деплоит [id=371747](https://t.me/c/2941121338/371747).
- certbot в docker для Hysteria2-ноды (Remnawave) [id=647736|06.06.2026](https://t.me/c/2941121338/647736):
```yaml
services:
  certbot:
    container_name: certbot
    image: certbot/certbot
    network_mode: host
    volumes:
      - ./certs:/etc/letsencrypt
```
```bash
docker run --rm \
  -v $(pwd)/certs:/etc/letsencrypt \
  -v $(pwd)/var-lib-letsencrypt:/var/lib/letsencrypt \
  --network host \
  certbot/certbot certonly --standalone \
  --non-interactive --agree-tos \
  --email admin@your-domain.com \
  -d your-domain.com
```
Проброс в compose ноды: `- '/opt/certbot/certs:/etc/letsencrypt:ro'`; cron обновления: `0 0 28 * * cd /opt/certbot && docker compose run --rm certbot renew`.
- Xray tlsSettings не читает самоподписанный .pem (tls: bad certificate) — подписывать certbot'ом и указывать paths [id=591408|27.05.2026](https://t.me/c/2941121338/591408):
```json
"streamSettings": {
  "network": "raw", "security": "tls",
  "tlsSettings": {
    "certificates": [{
      "keyFile": "/etc/letsencrypt/live/domain.domain/privkey.pem",
      "certificateFile": "/etc/letsencrypt/live/domain.domain/fullchain.pem"
    }],
    "rejectUnknownSni": false
  }
}
```
- Пути сертов Caddy для xhttp-инбаунда: `/certs/caddy/certificates/acme-v02.api.letsencrypt.org-directory/<домен>/{ключ.key,серт.crt}` + volume `selfsteel_caddy_data_selfsteal:/certs:ro` [id=72155|24.11.2025](https://t.me/c/2941121338/72155).
- Certwarden: сервер+клиент, серты по API обновляются сами, wildcard возможен [id=109582, 189077](https://t.me/c/2941121338/109582).
- Wildcard нужен при селфстиле и DNS-балансировке [id=109721](https://t.me/c/2941121338/109721); скрипты синхронизации сертификатов TimeWeb/Hostkey API по крону [id=387..395](https://t.me/c/2941121338/52/387); acme.sh не шлёт письма о конце срока — поднимать мониторинг с алертами в TG [id=118467](https://t.me/c/2941121338/118467).
- Yandex CDN: сертификат Let's Encrypt выпускается автоматически [id=1090740, 1141452 (создание ~20-22 мин)](https://t.me/c/2941121338/1090740).
- Критика блог-гайда по certbot: серты в /opt/certbot/certs вместо /etc/letsencrypt; крон на renew раз в неделю ломается через 90 дней (LE рекомендует 1–2 раза в день) [id=911094, 911128|19.07.2026](https://t.me/c/2941121338/911094).
- Выпуск серта для кабинета ломает панель (500) — панель: acme, кабина: certbot, не мешать [id=285879, 286005](https://t.me/c/2941121338/285879).
- «На каждой ноде один и тот же серт, тупо перенести по sftp» [id=432962|01.05.2026](https://t.me/c/2941121338/432962).

---
Источник: https://host.pink/baza/set/sertifikaty/
Оригинал: https://github.com/Rxflex/BedolagaBD/blob/main/docs/04-сеть-серверы/сертификаты.md
Лицензия: CC BY-SA 4.0
