Szukaj

Jak wygenerować certyfikat Let’s Encrypt w CentOS 7/8

Jak wygenerować certyfikat Let’s Encrypt w CentOS 7/8

Jeżeli używasz szyfrowanych połączeń, to na pewno zainteresuje Cię jak samodzielnie wygenerować bezpłatny certyfikat SSL/TLS. W tym artykule wyjaśnię jak wykorzystać narzędzie certbot do uzyskania i odnowienia certyfikatów. Skorzystamy z darmowych certyfikatów wydawanych przez Internet Security Research Group (ISRG). Stworzyli oni zautomatyzowany i otwarty ośrodek certyfikacji – Let’s Encrypt. Certbot jest rekomendowanym przez Let’s Encrypt klientem do generowania certyfikatów i można go używać w systemie CentOS 7/8.

Spis treści

1) Wprowadzenie

Jeśli chcesz uzyskać dostęp do swojej maszyny za pomocą FQDN (ang. fully qualified domain name) zacznij od poprawnego skonfigurowania usługi DNS.

Warto się też upewnić czy reguły naszej zapory zezwalają na połączenia przychodzące na porcie 80. Jest on wykorzystywany do weryfikacji domeny i wygenerowania certyfikatów.

2) Instalacja snapd i certbot

Snap jest dostępny dla CentOS 8 i CentOS 7, począwszy od wydania 7.6. Wchodzi w skład Extra Packages for Enterprise Linux (EPEL), więc na początek zainstaluj EPEL (jeśli jeszcze nie posiadasz).

# dla CentOS 7
				
					sudo yum install epel-release
				
			
# dla CentOS 8
				
					sudo dnf install epel-release sudo dnf upgrade
				
			
Po dodaniu repozytorium EPEL do instalacji CentOS, zainstaluj pakiet snapd, aktywuj socket do komunikacji oraz stwórz powiązanie wymagane do poprawnego działania certbot.
				
					sudo yum install snapd
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap
				
			
Wykonaj następujące instrukcje w wierszu poleceń na komputerze, aby upewnić się, że masz najnowszą wersję snapd.
				
					sudo snap install core
sudo snap refresh core
				
			

Jeśli masz zainstalowane jakiekolwiek pakiety Certbota za pomocą menedżera pakietów systemu operacyjnego, takiego jak aptdnf lub yum, powinieneś je usunąć przed zainstalowaniem wykonaniem dalszych poleceń, aby upewnić się, że po uruchomieniu polecenia certbot, używany jest snap, a nie instalacja z pakietu systemu operacyjnego menedżer. Dokładne polecenie, aby to zrobić, zależy od systemu operacyjnego, ale typowe przykłady to sudo apt-get remove certbotsudo dnf remove certbot lub sudo yum remove certbot.

Żeby zainstalować Certbota, w wierszu poleceń wykonaj:

				
					sudo snap install --classic certbot
				
			

Na koniec zobaczysz komunikat:

certbot 1.16.0 from Certbot Project (certbot-eff✓) installed

Po instalacji utwórzmy dowiązanie symboliczne, konieczne do uruchomienia Certbota.

				
					sudo ln -s /snap/bin/certbot /usr/bin/certbot
				
			

3) Wygenerowanie certyfikatu

Na początek wybierz, jak chcesz uruchomić Certbota.

  • Jeśli twój serwer WWW nie jest aktualnie uruchomiony na tym komputerze.
    Zatrzymaj serwer WWW, a następnie uruchom poniższe polecenie, aby uzyskać certyfikat. Certbot tymczasowo uruchomi serwer WWW na twoim komputerze.
				
					sudo certbot certonly --standalone
				
			

Jeśli serwer www jest włączony, otrzymasz błąd: Problem binding to port 80: Could not bind to IPv4 or IPv6. Najpierw wyłącz serwer, a następnie wykonaj polecenie lub korzystać z drugiej opcji generowania certyfikatu.

  • Muszę utrzymać uruchomiony serwer WWW.
    Jeśli masz serwer www, który już używa portu 80 i nie chcesz go zatrzymywać podczas działania Certbota, uruchom poniższe polecenie i postępuj zgodnie z instrukcjami w terminalu.
				
					sudo certbot certonly --webroot
				
			

4) Automatyczne odnowienie certyfikatu

Żeby sprawdzić czy automatyczne odnowienie certyfikatów działa w Twojej konfiguracji wykonaj dry-run.

				
					sudo certbot renew --dry-run
				
			

Jeśli dry-run pokazuje błędy (np. zajęty port 80) konieczne może być wykorzystanie haków (ang. hooks), które będą automatycznie wykonywane przed i/lub po każdej próbie odnowienia certyfikatów.

Jeśli dodałeś wspomniane automatyczne skrypty i wszystko jest w porządku, uruchom następującą linię, która doda zadanie cron do /etc/crontab:

				
					SLEEPTIME=$(awk 'BEGIN{srand(); print int(rand()*(3600+1))}'); echo "0 0,12 * * * root sleep $SLEEPTIME && certbot renew -q" | sudo tee -a /etc/crontab > /dev/null
				
			

Co prawda certbot wspomniał, że dodał to zadanie w tle, ale zawsze lepiej mieć pewność.

5) Pre & Post Hooks

  • Restart serwera www
     
    Jeśli musisz np. zatrzymać serwer internetowy, aby uruchomić Certbota, będziesz chciał dodać haki przed i po, aby automatycznie zatrzymywać i uruchamiać serwer internetowy.

    Wspomniane haki znajdują się w następujących katalogach:

    • /etc/letsencrypt/renewal-hooks/pre/ – zawiera pliki wykonywane PRZED odnowieniem
    • /etc/letsencrypt/renewal-hooks/post/ – zawiera pliki wykonywane PO odnowieniu

    Dla przykładu, jeśli używasz Apache możesz dodać następujące pliki, które automatycznie zatrzymają Apache przed odnowieniem certyfikatów, a następnie uruchomią ponownie po zakończeniu procesu.

				
					sudo sh -c 'printf "#!/bin/sh\nservice httpd stop\n" > /etc/letsencrypt/renewal-hooks/pre/httpd.sh'
sudo sh -c 'printf "#!/bin/sh\nservice httpd start\n" > /etc/letsencrypt/renewal-hooks/post/httpd.sh'
sudo chmod 755 /etc/letsencrypt/renewal-hooks/pre/httpd.sh
sudo chmod 755 /etc/letsencrypt/renewal-hooks/post/httpd.sh
				
			
  • Dostęp do certyfikatów dla użytkowników innych niż root w Asterisk’u
     
    Być może Twoja konfiguracja wymaga, żeby wykorzystywać certyfikaty, jako użytkownik inny niż root. Na przykład posiadasz serwer Asterisk’a i chcesz uruchomić TLS do rejestracji kont SIP, ale usługa działa jako użytkownik asterisk. W takiej sytuacji możesz po prostu utworzyć katalog do przechowywania certyfikatów, a następnie utworzyć skrypt (certbot post hook), który skopiuje nowo wygenerowane certyfikaty do wspomnianego katalogu i zmieni uprawnienia.
				
					mkdir /etc/asterisk/ssl
chmod 0700 /etc/asterisk/ssl
chown -R asterisk: /etc/asterisk/ssl
sudo sh -c 'printf "#!/bin/sh\nrm -rf /etc/asterisk/ssl/*.pem\ncp /etc/letsencrypt/live/*/*.pem /etc/asterisk/ssl/\nchmod 0600 /etc/asterisk/ssl/*.pem\nchown asterisk: /etc/asterisk/ssl/*.pem\n" > /etc/letsencrypt/renewal-hooks/post/asterisk.sh'
sudo chmod 755 /etc/letsencrypt/renewal-hooks/post/asterisk.sh
				
			

Oczywiście certbot jest bardzo potężnych narzędziem. Ten artykuł to tylko wstępna konfiguracja, która może być dostosowana do praktycznie każdego scenariusza.

Więcej informacji możesz oczywiście znaleźć na stronie producenta:
https://certbot.eff.org/

Czy wiesz co tak na prawdę dzieje się na Twojej centrali? Wypróbuj nasze autorskie oprogramowanie VOIPERO.

Instalacja i konfiguracja zajmuje kilka minut a system jest obecnie udostępniany całkowicie za darmo.

Dowiedz się jakie możliwości ma system VOIPERO jeżeli chodzi o raportowanie i monitorowanie na żywo systemów VoIP bazujących na asterisku.

Share this post

Masz pytania lub potrzebujesz oferty?

Skontaktuj się z naszym doradcą.

Popularne wpisy

Powiązane posty

Projekt wystartował!

Monitorowanie i raportowanie Twojego serwera VoIP