Darmowy certyfikat SSL z Let's Encrypt i Certbotem
Darmowy certyfikat SSL dla twojego serwera z Linuksem: tak zainstalujesz Certbota na Debianie i Ubuntu, wystawisz certyfikat Let's Encrypt dla Apache i włączysz automatyczne odnawianie.
Certyfikat SSL od Let's Encrypt nic nie kosztuje, konfigurujesz go w kilka minut, a akceptuje go każda popularna przeglądarka. W tym poradniku włączysz HTTPS na własnym serwerze z Linuksem i Apache: na Debianie 13, Debianie 12, Ubuntu 24.04 LTS oraz Ubuntu 22.04 LTS.
Wystawieniem certyfikatu zajmuje się Certbot, oficjalny klient ACME organizacji Electronic Frontier Foundation. Certbot wnioskuje o certyfikat, wpisuje go do konfiguracji Apache, a potem odnawia go samodzielnie przez timer systemd.
Wymagania
- Domena, której rekord A (a przy IPv6 dodatkowo rekord AAAA) wskazuje na twój serwer VPS albo serwer root.
- Działający serwer WWW Apache2 z wpisem VirtualHost dla tej domeny.
- Dostęp roota przez SSH.
- Port 80 i port 443 muszą być osiągalne z zewnątrz. Let's Encrypt sprawdza domenę przez port 80.
Najpierw sprawdź, czy domena faktycznie wskazuje na twój serwer. Wpisz ją w tym celu na stronie https://check-host.net/. Jeśli pojawi się tam adres IP twojego serwera, możesz działać dalej. Jeśli DNS nadal kieruje na stary cel, poczekaj na aktualizację, bo inaczej wystawienie certyfikatu się nie powiedzie.
Aktualizacja systemu
Na początek zaktualizuj listę pakietów oraz zainstalowane pakiety:
apt update && apt upgrade -y
Instalacja Certbota
Są dwie typowe drogi. Pakiet z dystrybucji jest najprostszy i dla większości serwerów w zupełności wystarcza. Pakiet snap dostarcza zawsze najnowszą wersję Certbota i to jego oficjalnie zaleca Electronic Frontier Foundation.
Wariant 1: Certbot z repozytorium dystrybucji
Na Debianie i Ubuntu Certbot oraz wtyczka do Apache leżą wprost w źródłach pakietów:
apt install certbot python3-certbot-apache -y
Rozpowszechniony kiedyś pakiet „python-certbot-apache” należał do Pythona 2 i już nie istnieje. Na wszystkich aktualnych wersjach Debiana i Ubuntu poprawna nazwa pakietu to „python3-certbot-apache”.
Wariant 2: instalacja Certbota przez snap
Jeśli chcesz mieć każdorazowo najnowszą wersję Certbota, na przykład dla wtyczek DNS albo certyfikatów wildcard, zainstaluj Certbota jako snap. Wcześniej usuń ewentualną instalację z pakietu dystrybucji, żeby obie sobie nawzajem nie wchodziły w drogę:
apt remove certbot -y
snap install core
snap refresh core
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot
Wystawienie certyfikatu i podpięcie go do Apache
Najszybsza droga to wtyczka do Apache. Certbot czyta istniejące wpisy VirtualHost, wnioskuje o certyfikat i sam zapisuje pasującą konfigurację SSL:
certbot --apache -d MojaDomena.pl -d www.MojaDomena.pl
Jeśli wolisz sam panować nad konfiguracją Apache, sprawdzenie domeny możesz przeprowadzić przez katalog webroot. Podaj przy tym dokładnie ten katalog, którego VirtualHost używa jako DocumentRoot:
certbot --authenticator webroot --installer apache -w /var/www/MojaDomena.pl -d MojaDomena.pl -d www.MojaDomena.pl
Jeśli twoja strona leży w katalogu domyślnym, polecenie wygląda tak:
certbot --authenticator webroot --installer apache -w /var/www/html/ -d MojaDomena.pl -d www.MojaDomena.pl
Pytania zadawane przez Certbota
Przy pierwszym uruchomieniu Certbot zadaje kilka pytań:
- Adres e-mail: Podaj adres, który naprawdę czytasz. Let's Encrypt wysyła na niego ostrzeżenie, gdy odnowienie nie dojdzie do skutku.
- Warunki korzystania: Klawiszem „A” wyrażasz zgodę.
- Newsletter Electronic Frontier Foundation: „Y” oznacza tak, „N” nie. To dobrowolne i nie ma wpływu na certyfikat.
- Przekierowanie na HTTPS: Wybierz opcję „Redirect”, żeby Apache automatycznie kierował wszystkie wywołania HTTP na HTTPS.
Następnie Certbot pokazuje ścieżkę do certyfikatu. Pliki leżą w katalogu /etc/letsencrypt/live/MojaDomena.pl/. Nie edytuj ich ręcznie, przy każdym odnowieniu są zapisywane na nowo.
Sprawdzenie automatycznego odnawiania
Certyfikat od Let's Encrypt jest ważny 90 dni. Certbot odnawia go automatycznie, gdy do końca ważności zostaje mniej niż 30 dni. Pakiet dostarcza w tym celu timer systemd. Sprawdź, czy jest aktywny:
systemctl list-timers certbot.timer
Jeśli timer nie jest aktywny, włącz go:
systemctl enable --now certbot.timer
Następnie przetestuj cały przebieg na sucho. Nic nie zostaje wtedy wystawione, Certbot jedynie odgrywa odnowienie:
certbot renew --dry-run
Żeby Apache po odnowieniu naprawdę korzystał z nowego certyfikatu, ustaw jednorazowo deploy hook:
certbot renew --deploy-hook "systemctl reload apache2"
Wyświetlanie i usuwanie certyfikatów
Przegląd wszystkich certyfikatów zarządzanych na serwerze daje polecenie:
certbot certificates
Certyfikat, którego już nie potrzebujesz, usuwasz w ten sposób, żeby Certbot nie próbował go dalej odnawiać:
certbot delete --cert-name MojaDomena.pl
Częste błędy
- „Could not bind to port 80”: Port 80 zajmuje inna usługa. Zatrzymaj ją albo skorzystaj z metody webroot, która używa działającego Apache.
- „Invalid response from http://.../.well-known/acme-challenge/...”: Domena nie wskazuje na ten serwer, firewall blokuje port 80 albo podany katalog webroot nie pasuje do wpisu VirtualHost.
- „The requested apache plugin does not appear to be installed”: Brakuje pakietu „python3-certbot-apache”.
- „too many certificates already issued”: To limit po stronie Let's Encrypt. Konfiguracje testuj na przyszłość z
--dry-run, zanim poprosisz o prawdziwy certyfikat. - Przeglądarka nadal pokazuje ostrzeżenie: Wyczyść cache przeglądarki i sprawdź, czy Apache został przeładowany po wystawieniu certyfikatu.
Trwałe przekierowanie HTTP na HTTPS
Jeśli podczas pytań Certbota przekierowanie nie zostało włączone, możesz je dodać w dowolnej chwili. Jak to działa przez plik .htaccess, opisujemy w osobnym wpisie o przekierowaniu z HTTP na HTTPS.
Najczęstsze pytania
Ile kosztuje certyfikat SSL od Let's Encrypt?
Jak długo ważny jest certyfikat Let's Encrypt?
Czy muszę odnawiać certyfikat ręcznie?
Czy Let's Encrypt działa też dla subdomen?
Dlaczego sprawdzenie domeny kończy się błędem?
2023-2026 KernelHost GmbH. Wszelkie prawa zastrzeżone. Ten poradnik jest chroniony prawem autorskim. Publikowanie go w innych serwisach, w całości, we fragmentach lub w zmienionej formie, wymaga naszej pisemnej zgody. Cytaty z podaniem źródła i z linkiem są jak najbardziej mile widziane.

