Menu
Szybki wybór
Hosting Domeny VPS SSL Kalkulator Porównania FAQ
Aktywne kody
Wszystkie kody rabatowe

Let's Encrypt Wildcard certyfikaty — certbot i DNS challenge

Wildcard vs standardowy certyfikat SSL

Standardowy certyfikat SSL (DV) z Let's Encrypt obejmuje jedną domenę lub kilka jawnie wymienionych (SAN). Certyfikat wildcard (*.domena.pl) obejmuje wszystkie subdomeny pierwszego poziomu: www.domena.pl, sklep.domena.pl, api.domena.pl itd. — w ramach jednego certyfikatu.

Typ Obejmuje Weryfikacja Cena
DV (standardowy) Jedna domena + www HTTP-01 lub DNS-01 Darmowy (Let's Encrypt)
Wildcard *.domena.pl Wszystkie subdomeny TYLKO DNS-01 Darmowy (Let's Encrypt)
OV / EV Wybrane domeny Weryfikacja organizacji Płatny (CA komercyjne)

Powiązane tematy: automatyzacja Let's Encrypt, konfiguracja Nginx vhost, Cloudflare z hostingiem oraz SPF/DKIM/DMARC konfiguracja. Do wyboru hostingu z darmowym SSL sprawdź kalkulator kosztów.

Dlaczego wildcard wymaga DNS-01?

Let's Encrypt wymaga DNS challenge dla certyfikatów wildcard, ponieważ nie można zweryfikować własności *.domena.pl przez żądanie HTTP (nie wiadomo które subdomeny istnieją). DNS-01 polega na dodaniu rekordu TXT _acme-challenge.domena.pl do DNS — dowód kontroli nad całą domeną.

Instalacja Certbot

# Ubuntu/Debian
sudo apt update
sudo apt install certbot

# Lub przez snap (najnowsza wersja)
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

Dla DNS-01 potrzebujesz wtyczki DNS odpowiedniej do twojego dostawcy DNS:

# Cloudflare
sudo apt install python3-certbot-dns-cloudflare
# lub: pip3 install certbot-dns-cloudflare

# DigitalOcean
pip3 install certbot-dns-digitalocean

# Route53 (AWS)
pip3 install certbot-dns-route53

# Inne (OVH, Hetzner, Gandi) — szukaj certbot-dns-PROVIDER
# Pełna lista: https://certbot.eff.org/docs/using.html#dns-plugins

Wildcard z Cloudflare DNS — krok po kroku

1. Konfiguracja API token Cloudflare

# Stwórz plik z tokenem
sudo mkdir -p /etc/letsencrypt/credentials
sudo nano /etc/letsencrypt/credentials/cloudflare.ini
# cloudflare.ini
dns_cloudflare_api_token = TWOJ_CLOUDFLARE_API_TOKEN
sudo chmod 600 /etc/letsencrypt/credentials/cloudflare.ini

Token Cloudflare: Dashboard → My Profile → API Tokens → Create Token → Template "Edit zone DNS" → ogranicz do swojej domeny.

2. Wydanie certyfikatu wildcard

sudo certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials /etc/letsencrypt/credentials/cloudflare.ini \
  -d "domena.pl" \
  -d "*.domena.pl"

Certbot automatycznie doda rekord TXT _acme-challenge.domena.pl do DNS Cloudflare, poczeka na propagację (domyślnie 10 sekund), zweryfikuje i wyda certyfikat.

Wildcard bez wtyczki DNS — ręczny DNS challenge

Jeśli twój dostawca DNS nie ma wtyczki Certbot, użyj trybu --manual:

sudo certbot certonly \
  --manual \
  --preferred-challenges dns \
  -d "domena.pl" \
  -d "*.domena.pl"

Certbot wyświetli instrukcję — ręcznie dodasz rekord TXT w panelu DNS:

Please deploy a DNS TXT record under the name:
_acme-challenge.domena.pl

with the following value:
AbCdEfGhIjKlMnOpQrStUvWxYz1234567890abc

Press Enter to Continue

Uwaga: Tryb manual nie obsługuje automatycznego odnawiania — musisz powtarzać ten proces co 90 dni. Użyj wtyczki DNS jeśli możliwe.

Konfiguracja Nginx z certyfikatem wildcard

server {
    listen 443 ssl http2;
    server_name domena.pl www.domena.pl sklep.domena.pl api.domena.pl;

    ssl_certificate /etc/letsencrypt/live/domena.pl/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domena.pl/privkey.pem;

    # Nowoczesne ustawienia SSL
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;

    include /etc/letsencrypt/options-ssl-nginx.conf;
}

Automatyczne odnawianie

# Sprawdź czy timer systemd działa
sudo systemctl status certbot.timer

# Lub cron (starsze systemy)
sudo crontab -l
# 0 12 * * * /usr/bin/certbot renew --quiet

# Test odnawiania (dry run — nie pobiera nowego certyfikatu)
sudo certbot renew --dry-run

# Wymuś odnawianie (jeśli <30 dni do wygaśnięcia)
sudo certbot renew --force-renewal

Let's Encrypt certyfikaty ważne są 90 dni. Certbot automatycznie odnawia gdy zostaje mniej niż 30 dni. Dla wildcard z Cloudflare — odnowienie w pełni automatyczne (nowy TXT rekord jest dodawany przez API).

Certyfikat multi-domain (SAN)

Alternatywa dla wildcard — certyfikat pokrywający kilka konkretnych domen:

sudo certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials /etc/letsencrypt/credentials/cloudflare.ini \
  -d "domena.pl" \
  -d "www.domena.pl" \
  -d "sklep.domena.pl" \
  -d "api.domena.pl" \
  -d "innादomain.pl"

Limit Let's Encrypt: maksymalnie 100 domen w jednym certyfikacie SAN i 50 certyfikatów tygodniowo per rejestrowana domena.

Lokalizacja plików certyfikatu

/etc/letsencrypt/live/domena.pl/
├── cert.pem       # certyfikat końcowy
├── chain.pem      # łańcuch pośredni CA
├── fullchain.pem  # cert.pem + chain.pem (używaj tego w Nginx/Apache)
└── privkey.pem    # klucz prywatny (chmod 600, tylko root)
# Sprawdź datę wygaśnięcia
sudo certbot certificates

# Lub bezpośrednio
openssl x509 -enddate -noout -in /etc/letsencrypt/live/domena.pl/fullchain.pem