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

Let's Encrypt wildcard — certyfikat *.domena.pl przez Certbot

Opublikowano: 9 kwietnia 2026 · Kategoria: SSL / Bezpieczeństwo

Zarządzasz wieloma subdomenami (blog.domena.pl, api.domena.pl, staging.domena.pl)? Zamiast wystawiać osobny certyfikat dla każdej, użyj certyfikatu wildcard *.domena.pl — jeden plik obejmuje wszystkie subdomeny. Let's Encrypt udostępnia wildcard SSL za darmo, ale wymaga weryfikacji przez DNS challenge (nie HTTP). Oto jak to zrobić metodą manualną i w pełni automatyczną przez Cloudflare.

Dlaczego wildcard? Kiedy warto?

  • Wiele subdomen — staging, dev, api, blog, shop — każda pokryta jednym certyfikatem.
  • Dynamiczne subdomeny — np. SaaS gdzie każdy klient dostaje subdomenę (klient.twoja-app.pl).
  • Prostsze zarządzanie — jedno odnawianie, jeden plik, jeden post-hook.
  • Ograniczenia Let's Encrypt — 50 certyfikatów na domenę tygodniowo; wildcard to 1 certyfikat dla nieskończonej liczby subdomen.

Uwaga: certyfikat *.domena.pl NIE obejmuje samej domeny głównej domena.pl. Dlatego zawsze wnioskuj o oba jednocześnie.

Metoda 1: Manual DNS Challenge (bez automatyzacji)

Najprościej — bez dodatkowych wtyczek, ale wymaga ręcznego dodania rekordu TXT przy każdym odnawianiu:

# Instalacja Certbot
sudo apt update
sudo apt install certbot

# Wnioskowanie o certyfikat wildcard — manual DNS challenge
sudo certbot certonly \
  --manual \
  --preferred-challenges dns \
  -d "*.domena.pl" \
  -d "domena.pl"

Certbot wyświetli komunikat z wartością rekordu TXT do dodania, np.:

Please deploy a DNS TXT record under the name:

_acme-challenge.domena.pl

with the following value:

xYzAbC123_losowy_token_weryfikacyjny

Press Enter to Continue

Dodaj rekord TXT w panelu DNS swojego dostawcy, odczekaj kilka minut na propagację (sprawdź: dig TXT _acme-challenge.domena.pl), a następnie naciśnij Enter w terminalu.

Metoda 2: Cloudflare DNS Plugin (w pełni automatyczna)

Najlepsza opcja gdy DNS zarządzany jest przez Cloudflare — Certbot automatycznie dodaje i usuwa rekord TXT przez API. Odnawianie jest w 100% bezobsługowe:

# Krok 1: Instalacja Certbot i pluginu Cloudflare
sudo apt install certbot python3-certbot-dns-cloudflare

# Lub przez pip (jeśli Certbot zainstalowany przez snap)
sudo snap install certbot --classic
sudo snap set certbot trust-plugin-with-root=ok
sudo snap install certbot-dns-cloudflare
# Krok 2: Utwórz token API Cloudflare
# Cloudflare Dashboard > My Profile > API Tokens > Create Token
# Uprawnienie: Zone:DNS:Edit (tylko dla Twojej strefy DNS)

# Krok 3: Utwórz plik z tokenem API
sudo mkdir -p /etc/letsencrypt
sudo nano /etc/letsencrypt/cloudflare.ini
# Zawartość /etc/letsencrypt/cloudflare.ini
# Opcja 1: API Token (rekomendowana — ograniczone uprawnienia)
dns_cloudflare_api_token = twoj_api_token_cloudflare

# Opcja 2: Global API Key (starsza metoda — szerokie uprawnienia)
# dns_cloudflare_email = [email protected]
# dns_cloudflare_api_key = twoj_global_api_key
# Zabezpiecz plik (tylko root może czytać)
sudo chmod 600 /etc/letsencrypt/cloudflare.ini

# Krok 4: Wnioskowanie o certyfikat wildcard
sudo certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini \
  --dns-cloudflare-propagation-seconds 60 \
  -d "*.domena.pl" \
  -d "domena.pl" \
  --email [email protected] \
  --agree-tos \
  --no-eff-email

Parametr --dns-cloudflare-propagation-seconds 60 każe Certbotowi poczekać 60 sekund na propagację DNS przed weryfikacją. Zwiększ do 120 jeśli masz problemy z weryfikacją.

Weryfikacja certyfikatu

# Sprawdź lokalizację certyfikatów
sudo certbot certificates

# Szczegóły certyfikatu (SAN, data ważności)
sudo openssl x509 -text -noout \
  -in /etc/letsencrypt/live/domena.pl/fullchain.pem \
  | grep -A 5 "Subject Alternative Name"

# Oczekiwany output:
# X509v3 Subject Alternative Name:
#   DNS:*.domena.pl, DNS:domena.pl

# Sprawdź datę ważności
sudo openssl x509 -enddate -noout \
  -in /etc/letsencrypt/live/domena.pl/fullchain.pem

Konfiguracja Nginx z certyfikatem wildcard

# /etc/nginx/sites-available/wildcard.conf

# Subdomena blog
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name blog.domena.pl;

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

    root /var/www/blog;
    index index.html;
}

# Subdomena api
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name api.domena.pl;

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

    location / {
        proxy_pass http://localhost:3000;
    }
}

Automatyczne odnawianie z post-hook dla Nginx

Certbot (snap) automatycznie instaluje systemd timer który sprawdza certyfikaty dwa razy dziennie. Dodaj post-hook który przeładuje Nginx po odnowieniu:

# Utwórz deploy hook
sudo nano /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh
#!/bin/bash
# /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh
# Wykonywany automatycznie po każdym udanym odnowieniu certyfikatu

systemctl reload nginx
echo "Nginx przeladowany po odnowieniu certyfikatu $(date)"
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh

# Sprawdź timer systemd
systemctl status snap.certbot.renew.timer

# Przetestuj odnawianie (dry-run)
sudo certbot renew --dry-run

Najczęstsze pytania

Czym różni się certyfikat wildcard od zwykłego certyfikatu SSL? +
Zwykły certyfikat SSL zabezpiecza jedną konkretną domenę (np. domena.pl i ew. www.domena.pl jako SAN). Certyfikat wildcard (*.domena.pl) zabezpiecza wszystkie subdomeny jednego poziomu: blog.domena.pl, sklep.domena.pl, api.domena.pl — nieograniczoną liczbę. NIE obejmuje jednak subdomeny drugiego poziomu (*.*.domena.pl) ani samej domeny głównej (domena.pl) — dlatego w Certbot zawsze wnioskuj o oba: *.domena.pl i domena.pl jednocześnie.
Dlaczego wildcard wymaga DNS challenge zamiast HTTP challenge? +
Let's Encrypt musi zweryfikować że kontrolujesz domenę. Dla certyfikatów wildcard HTTP challenge jest niemożliwy — nie istnieje jeden URL który obejmowałby wszystkie subdomeny. DNS challenge wymaga dodania rekordu TXT (_acme-challenge.domena.pl) do strefy DNS — to dowód kontroli nad domeną, niezależnie od tego ile subdomen istnieje.
Jak często Certbot odnawia certyfikaty Let's Encrypt? +
Certyfikaty Let's Encrypt są ważne 90 dni. Certbot (gdy zainstalowany przez snap lub systemd timer) automatycznie sprawdza certyfikaty dwa razy dziennie i odnawia te, którym zostało mniej niż 30 dni ważności. Przy certyfikatach wildcard z Cloudflare DNS plugin odnawianie jest w pełni automatyczne — Certbot automatycznie dodaje i usuwa rekord TXT przez API Cloudflare.
Czy mogę użyć certyfikatu wildcard na wielu serwerach? +
Tak. Możesz skopiować pliki certyfikatu (fullchain.pem i privkey.pem) z /etc/letsencrypt/live/domena.pl/ na inne serwery. Pamiętaj jednak o synchronizowaniu odnowień — gdy Certbot odnowi certyfikat na głównym serwerze, musisz zaktualizować kopię na pozostałych (np. przez rsync + post-renewal hook). Alternatywą jest użycie certbot certonly na każdym serwerze z tym samym kontem Cloudflare.

Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.