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
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
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 apt
, dnf
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 certbot
, sudo 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 wwwJeś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’uByć 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.