Přeskočit obsah

Certifikáty — Let's Encrypt

Postup pro nastavení automaticky obnovovaného SSL certifikátu s DNS challenge přes Cloudflare.


Přehled

Prvek Role
Let's Encrypt Vydavatel certifikátu (zdarma)
Cloudflare DNS provider pro automatické TXT záznamy (DNS-01 challenge)
FORPSI Registrátor domény — nastavení NS delegace na Cloudflare
certbot Nástroj pro získání a obnovu certifikátů

Jednorázové nastavení

Krok 1 — Registrace na Cloudflare

  1. Jděte na dash.cloudflare.com → bezplatný účet
  2. Přidejte svou doménu
  3. Cloudflare vám přidělí 2 NS servery (např. ada.ns.cloudflare.com)

Krok 2 — Nastavení NS ve FORPSI

  1. FORPSI → Správa domény → DNS záznamy
  2. Nahraďte stávající NS záznamy NS záznamy od Cloudflare
  3. Ponechte propagaci DNS (24–48 hodin)

Krok 3 — DNS Challenge delegace

Ve FORPSI přidejte CNAME záznam:

_acme-challenge.vasedomena.cz  →  _acme-challenge.vasedomena.cz.cdn.cloudflare.com

Tím Cloudflare automaticky zpracovává Let's Encrypt DNS-01 výzvy.

Krok 4 — Cloudflare API token

  1. Cloudflare → My Profile → API Tokens → Create Token
  2. Zvolte šablonu Edit zone DNS
  3. Omezte na vaši doménu
  4. Uložte token

Krok 5 — certbot

# Instalace
apt install certbot python3-certbot-dns-cloudflare

# Cloudflare credentials
echo "dns_cloudflare_api_token = VÁŠ_TOKEN" > /etc/letsencrypt/cloudflare.ini
chmod 600 /etc/letsencrypt/cloudflare.ini

# Získání certifikátu
certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini \
  -d vasedomena.cz \
  -d "*.vasedomena.cz"   # wildcard pro subdomény

Automatické obnovení

Certbot automaticky obnovuje certifikáty přes systemd timer nebo cron:

# Ruční test obnovy
certbot renew --dry-run

# Crontab (pokud není systemd)
0 0 * * * certbot renew --quiet

Certifikáty jsou platné 90 dní, certbot je obnoví automaticky 30 dní před vypršením.


Použití v Docker Compose

services:
  api:
    volumes:
      - /etc/letsencrypt/live/vasedomena.cz:/certs:ro
    environment:
      - ASPNETCORE_Kestrel__Certificates__Default__Path=/certs/fullchain.pem
      - ASPNETCORE_Kestrel__Certificates__Default__KeyPath=/certs/privkey.pem