Darmowy certyfikat Wildcard dzięki Let’s Encrypt

Serwis czy też aplikacja webowa dużo lepiej się prezentuje z autoryzowanym certyfikatem. Abyś mógł podpiąć certyfikat do własnego serwisu w pierwszej kolejności musisz go wykupić lub skorzystać z serwisu Let’s Encrypt a dokładnie z mechanizmu certbot. Ważność takiego darmowego certyfikatu to 3 miesiące i co taki czas mniej więcej należy go również za darmo odświeżać. W tym przykładzie pokażę Ci jak wygenerować taki certyfikat w systemie Ubuntu. Zaczynamy od instalacji.

apt install certbot

Aktualnie mój certbot jest w wersji 0.23.0

Generowanie certyfikatu:

certbot certonly --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory --manual-public-ip-logging-ok -d '*.twojadomena.pl' -d twojadomena.pl --preferred-challenges dns-01

W sytuacji gdy jeszcze nie korzystałeś z usługi mechanizm poprosi Cię o szybką rejestrację czyli podanie adresu e-mail, akceptację regulaminu oraz potwierdzenie udostępnienia adresu e-mail dla partnera Let’s Encrypt. W następnych krokach zostaniesz poproszony o dodanie dwóch wpisów TXT _acme-challenge.twojadomena.pl do DNSu w celu weryfikacji właściciela domeny. Po dodaniu każdej z kolei przed kliknięciem „KONTYNUUJ” sprawdź np. za pomocą serwisu MX Toolbox czy rekord jest już widoczny. PAMIĘTAJ: muszą być obie wartości w DNSie!

Po zakończeniu „roboty” w katalogu /etc/letsencrypt/live/twojadomena.pl/ zostaną utworzone linki do plików z kluczem i certyfikatem, które należy w przypadku np. Apache 2 odpowiednio podpiąć. Poniżej przykład konfiguracji Apache 2.

( … )
<VirtualHost *:443>
    ServerName www.twojadomena.pl
    ServerAlias twojadomena.pl
    ServerAdmin admin@twojadomena.pl
    DocumentRoot /var/www/twojadomena.pl

    <Directory /var/www/twojadomena.pl>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    SSLEngine on
    SSLCertificateFile      /etc/letsencrypt/live/twojadomena.pl/cert.pem
    SSLCertificateKeyFile   /etc/letsencrypt/live/twojadomena.pl/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/twojadomena.pl/chain.pem

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>
( … )

Oczywiście warto podawać linki a nie wygenerowane pliki, ponieważ przy każdym odświeżeniu certyfikatu poza przeładowaniem Apache 2 service apache2 reload nic nie trzeba więcej robić.

Odświeżenie np. po niespełna trzech miesiącach wykonuje się za pośrednictwem komendy certbot renew.