SSL Let’s Encrypt to bezpłatny certyfikat SSL (Secure Sockets Layer) wydawany przez organizację non-profit Internet Security Research Group (ISRG). Aby z niego skorzystać, będziesz potrzebował dostępu do konsoli SSH i uprawnień użytkownika root swojego serwera. W tym artykule pokażemy, jak zainstalować i skonfigurować certyfikat na serwerze Ubuntu + Apache. Proces instalacji na Nginx jest bardzo podobny, a różnice omówimy na końcu.

1. Instalacja Certbot

Certbot to darmowy, open-source’owy program do automatyzacji uzyskiwania i odnawiania certyfikatów SSL/TLS od Let’s Encrypt.

Otwórz konsolę SSH i zaloguj się do serwera jako użytkownik root. Rozpocznij od aktualizacji paczek:

apt-get update

Zainstaluj Certbot oraz wtyczkę integrującą Certbot z serwerem Apache:

apt-get install -y certbot python3-certbot-apache

2. Weryfikacja konfiguracji Apache

Certbot automatycznie zmodyfikuje plik konfiguracyjny VirtualHost dla domeny, dla której będzie generowany certyfikat. Upewnij się, że masz odpowiednio ustawioną nazwę domeny w ServerName oraz ServerAlias w pliku konfiguracyjnym swojej strony:

<VirtualHost *:80>
  ServerName test.ping.pl
  ServerAlias www.test.ping.pl

  DocumentRoot /var/www/html
</VirtualHost>

My do testów użyliśmy subdomeny test.ping.pl, ale certyfikat może być wygenerowany dla dowolnej domeny wyższego poziomu.

Pamiętaj, że poo wprowadzeniu jakichkolwiek zmian w ustawieniach Apache powinieneś go zrestartować:

service apache2 restart

Oczywiście ustawienia DNS Twojej domeny powinny być skonfigurowane w taki sposób, aby ruch był kierowany na adres IP Twojego serwera (poprzez dodanie rekordu A w ustawieniach DNS). Wpisy w DNS domeny możesz zmodyfikować w panelu firmy w której zakupiłeś domenę, chyba, że po zakupie “przeparkowałeś” domenę w inne miejsce.

3. Konfiguracja Firewall

Jeżeli korzystasz z Firewall to zweryfikuj, czy porty 80 (http) jak i 443 (https) są otwarte:

ufw allow 80 && ufw allow 443

4. Instalacja certyfikatu

Po wykonaniu powyższych kroków możemy przejść do wygenerowania i instalacji certyfikatu:

certbot --apache

Powyższe polecenie uruchomi proces generowania nowego certyfikatu. Zostaniesz poproszony o adres e-mail do powiadomień w przypadku problemów z odnowieniem certyfikatu. Będziesz również musiał zaakceptować regulamin Let’s Encrypt oraz opcjonalnie udostępnić adres e-mail fundacji do komunikacji o aktualnościach, zmianach itp.

Certbot przeskanuje konfigurację Apache i zaproponuje listę domen, dla których mogą zostać wygenerowane certyfikaty. Wybierz odpowiednią domenę lub domeny i potwierdź wybór klawiszem Enter.

Po chwili powinieneś zobaczyć komunikat o pomyślnym wygenerowaniu certyfikatu, a Twoja strona będzie dostępna pod protokołem HTTPS.

Dla pewności, zalecamy jeszcze weryfikację poprawności certyfikatu na stronie: https://www.sslshopper.com/ssl-checker.html. Wynik skanowania strony z poprawnie zainstalowanym certyfikatem powinien wyglądać podobnie do poniższego:

Wynik uruchomionego testu szybkości strony

5. Sprawdzenie automatycznego odnawiania certyfikatu

Certyfikaty Let’s Encrypt są ważne przez 90 dni. Certbot jednak automatycznie powinien odświeżać certyfikat bez Twojego udziału w taki sposób, aby zachować jego ciągłość. Warto jednak upewnić się, że program za to odpowiedzialny działa prawidłowo, możesz to zrobić poleceniem:

systemctl status certbot.timer

W wyświetlony wyniku powyższego polecenia zwróc uwagę na status programu certbot.timer - powinien być active (waiting).

Jeszcze lepiej jeżeli powyższy test wykonasz po restarcie całego serwera. Certbot powinien uruchomić się automatycznie wraz ze startem serwera, ale lepiej to sprawdzić.

Instalacja Let’s Encrypt na serwerze Nginx

Jeżeli korzystasz z Nginx zamiast Apache, aby zainstalować certyfikat Let’s Encrypt dla swojej strony wystarczy, że:

  • w kroku 1 zainstalujesz plugin dla nginx zamiast apache:
apt-get install -y certbot python3-certbot-nginx
  • polecenie z kroku 4 wykonasz z atrybutem nginx zamiast apache, czyli:
certbot --nginx

W czym płatne certyfikaty są lepsze od darmowego Let’s Encrypt?

Let’s Encrypt jest świetnym rozwiązaniem dla większości standardowych stron internetowych, oferując darmowy i automatyczny sposób na bezpieczne połączenie. Płatne certyfikaty oferują dodatkowe korzyści, które mogą być niezbędne dla firm lub stron wymagających wyższego poziomu zaufania, wsparcia i zabezpieczeń.

Let’s Encrypt wydaje certyfikaty Domain Validation (DV), które potwierdzają, że właściciel domeny ma kontrolę nad tą domeną. Płatne certyfikaty mogą oferować wyższe poziomy weryfikacji, takie jak Organization Validation (OV) czy Extended Validation (EV), które potwierdzają tożsamość organizacji i oferują większe zaufanie użytkowników (zielony pasek adresu w przeglądarce).

Płatne certyfikaty często zawierają ubezpieczenie od naruszeń bezpieczeństwa, co może wynosić od kilku tysięcy do kilku milionów dolarów.