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ć.

• Odnawianie

Komenda certbot renew nie działa i kończy swoje wykonywanie poniższym komunikatem.
(…)Cert is due for renewal, auto-renewing...
Could not choose appropriate plugin: The manual plugin is not working; there may be problems with your existing configuration.
The error was: PluginError('An authentication script must be provided with --manual-auth-hook when using the manual plugin non-interactively.',)
Attempting to renew cert (twojadomena.pl) from /etc/letsencrypt/renewal/twojadomena.pl.conf produced an unexpected error: The manual plugin is not working; there may be problems with your existing configuration.
The error was: PluginError('An authentication script must be provided with --manual-auth-hook when using the manual plugin non-interactively.',). Skipping.(…)

Poprawne odnowienie np. po niespełna trzech miesiącach wykonuje się za pośrednictwem tej samej komendy jak w przypadku generowania nowego certyfikatu. System wykryje, że wystarczy ją odświeżyć i ponownie poprosi o zmianę wpisów w DNSie.