Serija RHCE: Implementacija HTTPS-a preko TLS-a pomoću usluge mrežne sigurnosti (NSS) za Apache - 8. dio


Ako ste administrator sistema koji je zadužen za održavanje i osiguranje web servera, ne možete sebi priuštiti da ne uložite sve svoje napore kako biste osigurali da podaci koje služi ili prolaze kroz vaš server uvijek budu zaštićeni.

Kako bi se osigurala sigurnija komunikacija između web klijenata i servera, nastao je HTTPS protokol kao kombinacija HTTP i SSL ( Secure Sockets Layer) ili novije, TLS (Transport Layer Security).

Zbog nekih ozbiljnih kršenja sigurnosti, SSL je zastario u korist robusnijeg TLSa. Iz tog razloga, u ovom članku ćemo objasniti kako osigurati veze između vašeg web servera i klijenata koristeći TLS.

Ovaj vodič pretpostavlja da ste već instalirali i konfigurisali svoj Apache web server. Ako ne, pogledajte sljedeći članak na ovoj stranici prije nego što nastavite dalje.

  1. Instalirajte LAMP (Linux, MySQL/MariaDB, Apache i PHP) na RHEL/CentOS 7

Instalacija OpenSSL-a i uslužnih programa

Prvo, uvjerite se da je Apache pokrenut i da su i http i https dozvoljeni kroz zaštitni zid:


systemctl start http
systemctl enable http
firewall-cmd --permanent –-add-service=http
firewall-cmd --permanent –-add-service=https

Zatim instalirajte potrebne pakete:


yum update && yum install openssl mod_nss crypto-utils

Važno: Imajte na umu da možete zamijeniti mod_nss sa mod_ssl u gornjoj naredbi ako želite koristiti OpenSSL biblioteke umjesto NSS (Usluga mrežne sigurnosti) za implementaciju TLS (koji ćete koristiti u potpunosti je na vama , ali ćemo u ovom članku koristiti NSS jer je robusniji; na primjer, podržava najnovije standarde kriptografije kao što je PKCS #11).

Konačno, deinstalirajte mod_ssl ako ste odabrali korištenje mod_nss, ili obrnuto.


yum remove mod_ssl

Konfiguriranje NSS (usluga mrežne sigurnosti)

Nakon što se mod_nss instalira, kreira se njegova zadana konfiguracijska datoteka kao /etc/httpd/conf.d/nss.conf. Zatim biste trebali osigurati da sve Listen i VirtualHost direktive upućuju na port 443 (podrazumevani port za HTTPS):


Listen 443
VirtualHost _default_:443

Zatim ponovo pokrenite Apache i provjerite da li je modul mod_nss učitan:


apachectl restart
httpd -M | grep nss

Zatim, sljedeće izmjene treba napraviti u /etc/httpd/conf.d/nss.conf konfiguracijskom fajlu:

1. Navedite direktorij baze podataka NSS. Možete koristiti zadani direktorij ili kreirati novi. U ovom vodiču ćemo koristiti zadanu:


NSSCertificateDatabase /etc/httpd/alias

2. Izbjegnite ručni unos lozinke na svakom početku sistema tako što ćete sačuvati lozinku u direktorij baze podataka u /etc/httpd/nss-db-password.conf:


NSSPassPhraseDialog file:/etc/httpd/nss-db-password.conf

Gdje /etc/httpd/nss-db-password.conf sadrži SAMO sljedeći red i mypassword je lozinka koju ćete kasnije postaviti za NSS bazu podataka:


internal:mypassword

Osim toga, njegove dozvole i vlasništvo treba postaviti na 0640 i root:apache, respektivno:


chmod 640 /etc/httpd/nss-db-password.conf
chgrp apache /etc/httpd/nss-db-password.conf

3. Red Hat preporučuje onemogućavanje SSL-a i svih verzija TLS-a prije TLSv1.0 zbog >POODLE SSLv3 ranjivost (više informacija ovdje).

Uvjerite se da svaka instanca direktive NSSProtocol glasi na sljedeći način (vjerovatno ćete pronaći samo jednu ako ne hostirate druge virtuelne hostove):


NSSProtocol TLSv1.0,TLSv1.1

4. Apache će odbiti ponovno pokretanje jer je ovo samopotpisani certifikat i neće prepoznati izdavaoca kao važećeg. Iz tog razloga, u ovom konkretnom slučaju morat ćete dodati:


NSSEnforceValidCerts off

5. Iako nije striktno potrebno, važno je postaviti lozinku za NSS bazu podataka:


certutil -W -d /etc/httpd/alias