Przeglądarki i wyszukiwarki oczekują HTTPS, a Let's Encrypt wystawia certyfikaty bez opłat. Na VPS Linux Infrawire z AlmaLinux 9 Certbot może uzyskać certyfikat, zmienić konfigurację Apache i sam go odnawiać. Te same kroki działają na Rocky Linux 9.
📋 Wymagania wstępne
- VPS z AlmaLinux 9 z dostępem root lub sudo (IP i hasło w panelu klienta).
- Domena
example.com, której rekord A (oraz AAAA dla IPv6) wskazuje naVPS_IP. Najpierw poczekaj na propagację DNS. - Apache (httpd) obsługujący stronę przez HTTP na porcie 80.
1. Instalacja Apache i otwarcie zapory
Jeśli Apache nie jest jeszcze zainstalowany, zainstaluj go i uruchom. Następnie otwórz HTTP i HTTPS w firewalld; port 80 jest wymagany do walidacji Let's Encrypt.
Bashdnf install -y httpd systemctl enable --now httpd firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --reload firewall-cmd --list-services
2. Utworzenie hosta wirtualnego dla domeny
Certbot szuka ServerName pasującego do domeny, więc utwórz osobny host wirtualny.
Bashmkdir -p /var/www/example.com/public_html echo "Hello" > /var/www/example.com/public_html/index.html
Utwórz plik /etc/httpd/conf.d/example.com.conf:
Apache1<VirtualHost *:80> 2 ServerName example.com 3 ServerAlias www.example.com 4 DocumentRoot /var/www/example.com/public_html 5</VirtualHost>
Sprawdź składnię i przeładuj:
Bashapachectl configtest systemctl reload httpd
3. Instalacja Certbota i mod_ssl
Certbot pochodzi z repozytorium EPEL. mod_ssl dostarcza moduł TLS dla Apache i domyślny certyfikat, którego httpd potrzebuje do nasłuchu na porcie 443.
Bashdnf install -y epel-release dnf install -y certbot python3-certbot-apache mod_ssl
4. Zamówienie certyfikatu
Uruchom Certbota z wtyczką Apache. Zweryfikuje domenę przez HTTP, zapisze nowy host wirtualny *-le-ssl.conf i może dodać przekierowanie z HTTP na HTTPS.
Bashcertbot --apache -d example.com -d www.example.com
Podaj prawdziwy adres e-mail (służy do ostrzeżeń o wygaśnięciu), zaakceptuj warunki i wybierz przekierowanie, gdy zostaniesz zapytany. Każda nazwa podana z -d musi wskazywać na ten serwer, inaczej walidacja się nie powiedzie.
Jeśli SELinux działa w trybie enforcing (domyślnie), w standardowej konfiguracji nie trzeba nic zmieniać. Nie wyłączaj go, aby obejść błąd.
5. Sprawdzenie automatycznego odnawiania
Certyfikaty Let's Encrypt ważne są 90 dni. Na AlmaLinux 9 pakiet instaluje timer systemd, który uruchamia się dwa razy dziennie i odnawia tylko certyfikaty bliskie wygaśnięcia.
Bashsystemctl list-timers | grep certbot systemctl status certbot-renew.timer
Jeśli timera nie ma na liście, włącz go:
Bashsystemctl enable --now certbot-renew.timer
Zasymuluj odnowienie bez ruszania prawdziwego certyfikatu:
Bashcertbot renew --dry-run
Ostatni wiersz powinien informować, że wszystkie symulowane odnowienia się powiodły. Po prawdziwym odnowieniu Apache jest przeładowywany automatycznie.
Weryfikacja
Bashcertbot certificates curl -I https://example.com curl -I http://example.com
Pierwsze polecenie wyświetla domeny i datę wygaśnięcia. Żądanie HTTPS musi zwrócić 200, a żądanie HTTP powinno odpowiedzieć przekierowaniem 301 na adres HTTPS. W przeglądarce kłódka powinna pokazywać ważny certyfikat wystawiony przez Let's Encrypt. Cały łańcuch zobaczysz poleceniem openssl s_client -connect example.com:443 -servername example.com.
Rozwiązywanie problemów
- Nieudane wyzwanie lub przekroczony czas podczas walidacji: DNS jeszcze nie wskazuje na serwer albo port 80 jest zablokowany. Sprawdź
dig +short example.com,firewall-cmd --list-servicesi każdą zaporę przed VPS. - Certbot nie znajduje pasującego hosta wirtualnego:
ServerNamelubServerAliasw/etc/httpd/conf.d/nie zgadza się z podaną domeną. Popraw to, uruchomapachectl configtesti spróbuj ponownie. Możesz też użyćcertbot certonly --apachei skonfigurować ścieżki samodzielnie. - Za dużo certyfikatów lub nieudanych walidacji (limit zapytań): Let's Encrypt ogranicza powtarzane próby. Najpierw przetestuj
certbot --apache --dry-runi poczekaj przed ponowną próbą. - Strona niedostępna na porcie 443 po instalacji: HTTPS nie jest otwarty w firewalld lub httpd nie został przeładowany. Uruchom
firewall-cmd --permanent --add-service=https,firewall-cmd --reloadisystemctl restart httpd.
🔐 Twoja strona Apache na AlmaLinux 9 działa teraz po HTTPS i sama odnawia certyfikat.