Wyszukiwanie w witrynie

Jak zarządzać certyfikatem SSL Let's Encrypt za pomocą poleceń Certbot


Kiedy ktoś odwiedza Twoją stronę internetową, jego przeglądarka i Twój serwer wymieniają się informacjami w obie strony. Bez szyfrowania ta rozmowa odbywa się w formie zwykłego tekstu, co oznacza, że każda osoba monitorująca sieć mogłaby odczytać wszystko: dane logowania, prywatne wiadomości, informacje o płatnościach – wszystko.

Certyfikat SSL rozwiązuje ten problem, umożliwiając HTTPS, który szyfruje wszystkie dane między przeglądarką a Twoim serwerem. Mała ikona kłódki w pasku adresu przeglądarki? To oznacza, że połączenie jest szyfrowane i bezpieczne.

Przez lata zdobycie certyfikatu SSL oznaczało coroczną opłatę dla urzędu certyfikacji i przechodzenie przez uciążliwy, ręczny proces konfiguracji. Potem pojawiło się Let’s Encrypt i zmieniło wszystko. To darmowy, zautomatyzowany urząd certyfikacji, który istnieje w jednym celu: uczynić zaszyfrowane połączenia domyślnymi w całym internecie.

Ale tu jest rzecz: chociaż certyfikaty Let’s Encrypt są bezpłatne, wygasają co 90 dni. Ręczne zarządzanie odnowieniami byłoby koszmarem, i właśnie dlatego istnieje Certbot – narzędzie wiersza poleceń, które automatyzuje cały proces uzyskiwania, instalowania i odnawiania certyfikatów Let’s Encrypt.

W tym poradniku przeprowadzimy Cię przez wszystko, co musisz wiedzieć o korzystaniu z Certbot, od pierwszej instalacji certyfikatu po zrozumienie procesów odnawiania, wszystko wyjaśnione w sposób zrozumiały, nawet jeśli dopiero zaczynasz przygodę z serwerami Linux.

Instalowanie Certbota w Linuksie

Proces instalacji certbota nieco różni się w zależności od dystrybucji Linuksa, ale ogólnie jest prosty.

W przypadku systemów opartych na Debianie najpierw należy upewnić się, że system jest aktualny:

sudo apt update
sudo apt upgrade

Następnie zainstaluj Certbot wraz z wtyczką do swojego serwera WWW, jeśli używasz nginx.

sudo apt install certbot python3-certbot-nginx

Albo jeśli używasz Apache.

sudo apt install certbot python3-certbot-apache

W przypadku dystrybucji opartych na RHEL proces wygląda podobnie, ale używa się dnf:

sudo dnf install certbot python3-certbot-nginx    # For Nginx
sudo dnf install certbot python3-certbot-apache   # For Apache

Wtyczki serwera sieciowego są ważne, ponieważ pozwalają Certbotowi automatycznie konfigurować serwer do HTTPS. Bez nich musiałbyś ręcznie edytować pliki konfiguracyjne, co jest dokładnie tym rodzajem żmudnej pracy, którą Certbot ma na celu wyeliminować.

Uzyskiwanie pierwszego certyfikatu SSL

Po zainstalowaniu Certbot uzyskanie certyfikatu jest niezwykle proste.

Dla serwera Nginx polecenie wygląda tak:

sudo certbot --nginx -d example.com -d www.example.com

Jeśli używasz Apache, polecenie jest prawie identyczne:

sudo certbot --apache -d example.com -d www.example.com

Gdy uruchomisz powyższe polecenie po raz pierwszy, Certbot poprosi o Twój adres e-mail, co jest istotne, ponieważ choć Let’s Encrypt kiedyś wysyłało powiadomienia o wygaśnięciu certyfikatów na ten adres e-mail, od tego czasu zrezygnowano z tej usługi, aby zminimalizować przechowywanie danych. W związku z tym musisz polegać na niezawodnym procesie automatycznego odnawiania lub samodzielnie skonfigurować monitoring wygaśnięć za pomocą zewnętrznych narzędzi.

Następnie Certbot wykonuje swoją pracę: komunikuje się z Let’s Encrypt, udowadnia, że kontrolujesz domenę, pobiera certyfikat i modyfikuje konfigurację Nginx, aby korzystać z HTTPS.

Zrozumienie odnawiania certyfikatu SSL

Jak wspomniałem wcześniej, certyfikaty Let’s Encrypt wygasają co 90 dni, więc kluczowe jest skonfigurowanie automatycznego procesu odnawiania. Timer systemd może to obsługiwać, sprawdzając dwa razy dziennie, czy któryś z certyfikatów zbliża się do wygaśnięcia. Gdy certyfikat ma mniej niż 30 dni do końca ważności, Certbot automatycznie go odnawia, bez potrzeby ręcznej interwencji.

Możesz przetestować ten proces odnowienia bez faktycznego odnawiania czegokolwiek:

sudo certbot renew --dry-run

Flaga --dry-run symuluje proces odnawiania, co jest przydatne, aby upewnić się, że wszystko jest poprawnie skonfigurowane. Jeśli polecenie zakończy się sukcesem, możesz być pewien, że automatyczne odnawianie zadziała, gdy nadejdzie czas.

Aby sprawdzić, kiedy wygasają Twoje certyfikaty i sprawdzić stan ich odnowienia:

sudo certbot certificates

Możesz sprawdzić status timera, aby potwierdzić, że jest aktywny:

sudo systemctl status certbot.timer

Zarządzanie wieloma certyfikatami SSL

W miarę dodawania kolejnych domen lub subdomen do swojego serwera, będziesz gromadzić wiele certyfikatów, ale certbot sprawia, że jest to zaskakująco łatwe do zarządzania.

Aby dodać nową domenę do istniejącego certyfikatu:

sudo certbot --nginx -d example.com -d www.example.com -d blog.example.com

Jeśli chcesz uzyskać całkowicie osobny certyfikat dla innej domeny:

sudo certbot --nginx -d another-domain.com -d www.another-domain.com

Każdy certyfikat jest zarządzany niezależnie, ale wszystkie odnowienia odbywają się automatycznie w ramach tego samego procesu odnowienia.

Ręczne odnawianie certyfikatów SSL

Chociaż automatyczne odnawianie jest głównym celem używania Certbot, zdarzają się sytuacje, w których możesz chcieć wymusić odnowienie ręcznie. Być może wprowadziłeś zmiany w konfiguracji i chcesz je przetestować, albo rozwiązujesz jakiś problem.

Aby odnowić wszystkie certyfikaty, które wymagają odnowienia, uruchom następujące polecenie, które odnowi tylko certyfikaty w ciągu 30 dni przed wygaśnięciem, a certyfikaty mające więcej niż 30 dni ważności nie zostaną odnowione.

sudo certbot renew

Jeśli musisz wymusić odnowienie niezależnie od daty wygaśnięcia:

sudo certbot renew --force-renewal

Przeglądanie certyfikatów SSL

Czasami musisz zobaczyć szczegóły dotyczące zainstalowanych certyfikatów, na przykład nazwę każdego certyfikatu, domeny, które obejmuje, jego datę ważności oraz ścieżki plików, w których przechowywane są certyfikat i klucz prywatny.

sudo certbot certificates

Faktyczne pliki certyfikatów znajdują się w /etc/letsencrypt/live/, z osobnymi katalogami dla każdego certyfikatu. Wewnątrz znajdziesz dowiązania symboliczne do rzeczywistych certyfikatów, które są wersjonowane w katalogu archiwum.

Cofanie certyfikatów SSL

Jeśli prywatny klucz certyfikatu zostanie kiedykolwiek naruszony lub jeśli nie potrzebujesz już certyfikatu, powinieneś go unieważnić, co natychmiast informuje przeglądarki i inne klienty, że certyfikat nie powinien być już zaufany, nawet jeśli jeszcze nie wygasł.

Aby unieważnić certyfikat:

sudo certbot revoke --cert-path /etc/letsencrypt/live/example.com/cert.pem

Będziesz musiał określić ścieżkę do pliku certyfikatu, który chcesz unieważnić.

sudo certbot revoke --cert-path /etc/letsencrypt/live/example.com/cert.pem --delete-after-revoke

Certbot będzie komunikować się z Let’s Encrypt, aby unieważnić certyfikat i opcjonalnie usunąć lokalne pliki.

Usuwanie certyfikatów SSL bez ich unieważniania

Czasami chcesz usunąć certyfikat ze swojego systemu, nie unieważniając go. Może przeniosłeś domenę na inny serwer lub przypadkowo otrzymałeś certyfikat i nigdy go nie używałeś.

sudo certbot delete --cert-name example.com

To usuwa pliki certyfikatu z systemu, ale nie unieważnia certyfikatu w Let’s Encrypt. Certyfikat pozostaje ważny, jeśli jest używany w innym miejscu, ale Certbot przestanie nim zarządzać na tym serwerze.

Rozwiązywanie problemów z odnawianiem certyfikatu Certbot

Nawet przy automatyzacji Certbota, czasami mogą wystąpić problemy, oto najczęstsze z nich i sposoby ich rozwiązania.

Jeśli odnowienie certyfikatu nie powiedzie się, sprawdź, czy Twój serwer internetowy działa i jest dostępny z Internetu, ponieważ Let’s Encrypt musi mieć dostęp do Twojego serwera na porcie 80 lub 443, aby zweryfikować własność domeny.

Możesz sprawdzić dzienniki odnowień pod kątem konkretnych komunikatów o błędach:

sudo cat /var/log/letsencrypt/letsencrypt.log

Te logi pokazują dokładnie, co Certbot próbował zrobić i gdzie napotkał problemy, co zazwyczaj wskazuje bezpośrednio na źródło problemu.

Jeśli konfiguracja Twojego serwera internetowego zostanie w jakiś sposób uszkodzona, Certbot czasami może przywrócić oryginalną konfigurację:

sudo certbot --nginx rollback

To cofa zmiany wprowadzone przez Certbota, chociaż rzadko jest to potrzebne, jeśli korzystasz z automatycznych opcji konfiguracji.

Zrozumienie ograniczeń prędkości

Let’s Encrypt ma limity częstotliwości, aby zapobiec nadużyciom. W normalnym użytkowaniu nigdy ich nie osiągniesz, ale warto wiedzieć, że istnieją. Możesz zamówić do 50 certyfikatów na zarejestrowaną domenę tygodniowo, a każdy certyfikat może obejmować do 100 subdomen.

Jeśli testujesz lub się uczysz, używaj hojnie flagi --dry-run, która symuluje cały proces bez faktycznego żądania certyfikatów, więc nie wpływa na limity częstotliwości.

sudo certbot renew --dry-run

Aktualizowanie Certbota

Jak każde oprogramowanie, Certbot otrzymuje aktualizacje, które naprawiają błędy i dodają nowe funkcje, dlatego ważne jest, aby regularnie aktualizować certbot za pomocą standardowego menedżera pakietów:

sudo apt update
sudo apt upgrade certbot
Wykraczanie poza podstawowe zastosowanie

Kiedy poczujesz się pewnie w podstawowym zarządzaniu certyfikatami, Certbot oferuje zaawansowane opcje warte wypróbowania. Możesz użyć walidacji DNS zamiast walidacji HTTP, co pozwala na uzyskanie certyfikatów nawet dla serwerów, które nie są publicznie dostępne na portach 80 lub 443.

Możesz skonfigurować niestandardowe skrypty odnowienia, które będą uruchamiane podczas odnawiania certyfikatów, co jest przydatne do restartowania usług lub aktualizacji konfiguracji. Możesz nawet uzyskać certyfikaty typu wildcard, obejmujące wszystkie subdomeny jednocześnie.

Ale w większości przypadków użycia proste polecenia, które omówiliśmy, obsługują wszystko, czego potrzebujesz. Certbot bierze to, co kiedyś było skomplikowanym i podatnym na błędy procesem, i redukuje je do kilku prostych poleceń, które po prostu działają.