Własny serwer Red Hat – cz.3: certyfikat TSL/SSL
Ostatnia aktualizacja: 31 stycznia 2025, 11:28
W pierwszej części serii cyklu Własny Serwer Red Hat skonfigurowaliśmy serwer www za pomocą Apache (oraz opcjonalnie Nginx), a w drugiej zainstalowaliśmy interpretator PHP oraz system bazodanowy MariaDB.
W części trzeciej zainstalujemy certyfikat TSL/SSL w dystrybucji kompatybilnej z Red Hat/CentOS/Alma/Rocky Linux.
Co to jest TSL/SSL ?
Z Wikipedii:
TLS (ang. Transport Layer Security) – przyjęte jako standard w Internecie rozwinięcie protokołu SSL (ang. Secure Socket Layer), zaprojektowanego pierwotnie przez Netscape Communications. TLS zapewnia poufność i integralność transmisji danych, a także uwierzytelnienie serwera, a niekiedy również klienta. Opiera się na szyfrowaniu asymetrycznym oraz certyfikatach X.509.
Do celów tego wpisu posłużymy się bezpłatnym certyfikatem Let’s Encrypt, który zainstalujemy za pomocą narzędzia „certbot”.
Instalacja
Upewnij się, że zapora ogniowa przepuszcza połączenie https.
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --reload
W domyślnych repozytoriach Rocky Linux, na których pracujemy, nie ma pakietu certbot, należy dodać repozytoria „epel”.
Instalacja dla Apache
dnf install epel-release
dnf install certbot python3-certbot-apache
dnf install mod_ssl
Utwórz konfigurację dla SSL, np.:
nano /etc/httpd/conf.d/pavroo-ssl.conf
##### linuxiarze.pl ######
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin admin@pavroo.pl
ServerName linuxiarze.pl
ServerAlias www.linuxiarze.pl linuxiarze.pl
DocumentRoot /home/pavroo/public_html
<Directory /home/pavroo/public_html/>
Options All Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/httpd/error-linuxiarze-pl.log
CustomLog /var/log/httpd/access-linuxiarze-pl.log combined
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
Jeśli certyfikat nie jest dostępny w podanych lokalizacjach, utwórz nowy:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/localhost.key -out /etc/pki/tls/certs/localhost.crt
Przeładuj Apache:
systemctl restart httpd
Teraz zainstaluj certyfikat TSL:
certbot --apache -d linuxiarze.pl -d www.linuxiarze.pl
Przeładuj Apache:
systemctl restart httpd
Instalacja dla Nginx
dnf install epel-release
dnf install certbot python3-certbot-nginx
Dodaj konfigurację dla SSL do istniejącego pliku, np.:
nano /etc/nginx/conf.d/pavroo.conf
server {
listen 443 ssl http2;
server_name linuxiarze.pl www.linuxiarze.pl;
root /home/pavroo/public_html;
index index.php index.html index.htm;
ssl_certificate /etc/pki/tls/certs/localhost.crt;
ssl_certificate_key /etc/pki/tls/private/localhost.key;
location /
{
try_files $uri $uri/ =404;
}
}
Jeśli certyfikat nie jest dostępny w podanych lokalizacjach, utwórz nowy:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/localhost.key -out /etc/pki/tls/certs/localhost.crt
Przeładuj Nginx:
systemctl restart nginx
Teraz zainstaluj certyfikat TSL:
certbot --nginx -d linuxiarze.pl -d www.linuxiarze.pl
Przeładuj Nginx:
systemctl restart nginx
Ważne !
Pamiętaj, że certyfikat od Let’s Encrypt jest przyznawany tylko na 3 miesiące. Przed upływem tego czasu trzeba go odnowić.
Ręczne odnowienie certyfikatu wszystkich zarejestrowanych domen
Odnowienie certyfikatu Let’s Encrypt dla Apache:
certbot renew --apache
Odnowienie certyfikatu Let’s Encrypt dla Nginx:
certbot renew --nginx
Automatyczne odnawianie certyfikatu
Proces odnawiania certyfikatu można zautomatyzować i przekazać do crona.
Dodaj nowe zadanie crona – zostanie uruchomione (przykładowo) raz w miesiącu, 1 dnia miesiąca o godz. 23.15:
crontab -e
Dla Apache:
15 23 1 * * certbot -q renew --apache
Dla Nginx:
15 23 1 * * certbot -q renew --nginx
W przypadku problemów lub niejasności odsyłam do stron man-a:
man certboot
man cron
man httpd
man nginx
Na tym zakończyliśmy trzecią część serii Własny Serwer Red Hat, w części czwartej zainstalujemy i skonfigurujemy serwer FTP.