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.