RHCE Series: Implementacija HTTPS prek TLS z uporabo Network Security Service (NSS) za Apache - 8. del


Če ste skrbnik sistema, ki je zadolžen za vzdrževanje in zaščito spletnega strežnika, si ne morete privoščiti, da se ne bi po najboljših močeh trudili, da bi bili podatki, ki jih streže vaš strežnik ali so skozi njega, vedno zaščiteni.

Da bi zagotovili varnejšo komunikacijo med spletnimi odjemalci in strežniki, se je protokol HTTPS rodil kot kombinacija HTTP in SSL (Secure Sockets Layer) ali nedavno TLS (Transport Layer Security).

Zaradi resnih kršitev varnosti je bil protokol SSL opuščen v prid trdnejšemu protokolu TLS. Zato bomo v tem članku razložili, kako zaščititi povezave med spletnim strežnikom in odjemalci s pomočjo TLS.

Ta vadnica predpostavlja, da ste že namestili in konfigurirali spletni strežnik Apache. V nasprotnem primeru si oglejte naslednji članek na tej spletni strani, preden nadaljujete.

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

Namestitev OpenSSL in pripomočkov

Najprej se prepričajte, da se Apache izvaja in ali sta požarnemu zidu dovoljeni http in https:

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

Nato namestite potrebne pakete:

# yum update && yum install openssl mod_nss crypto-utils

Pomembno: upoštevajte, da lahko v zgornjem ukazu mod_nss zamenjate z mod_ssl, če želite za izvajanje TLS uporabiti knjižnice OpenSSL namesto NSS (Network Security Service) (katero uporabiti prepuščamo vam, vendar bomo uporabili NSS v tem članku je bolj trden; na primer podpira nedavne kriptografske standarde, kot je PKCS # 11).

Na koncu odstranite mod_ssl, če ste se odločili za uporabo mod_nss ali obratno.

# yum remove mod_ssl

Konfiguriranje NSS (Network Security Service)

Po namestitvi mod_nss se privzeta konfiguracijska datoteka ustvari kot /etc/httpd/conf.d/nss.conf. Nato se prepričajte, da vse direktive Listen in VirtualHost kažejo na vrata 443 (privzeta vrata za HTTPS):

Listen 443
VirtualHost _default_:443

Nato znova zaženite Apache in preverite, ali je modul mod_nss naložen:

# apachectl restart
# httpd -M | grep nss

Nato je treba v konfiguracijski datoteki /etc/httpd/conf.d/nss.conf narediti naslednje spremembe:

1. Navedite imenik zbirke podatkov NSS. Uporabite lahko privzeti imenik ali ustvarite novega. V tej vadnici bomo uporabili privzeto:

NSSCertificateDatabase /etc/httpd/alias

2. Izogibajte se ročnemu vnosu gesla pri vsakem zagonu sistema tako, da shranite geslo v imenik baze podatkov v /etc/httpd/nss-db-password.conf:

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

Kjer /etc/httpd/nss-db-password.conf vsebuje SAMO naslednjo vrstico in mypassword je geslo, ki ga boste pozneje nastavili za bazo podatkov NSS:

internal:mypassword

Poleg tega bi morala biti njegova dovoljenja in lastništvo nastavljena na 0640 oziroma root: apache:

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

3. Red Hat priporoča, da zaradi ranljivosti POODLE SSLv3 onemogočite SSL in vse različice TLS, starejših od TLSv1.0 (več informacij tukaj).

Prepričajte se, da se vsak primerek direktive NSSProtocol glasi na naslednji način (če ne gostite drugih navideznih gostiteljev, boste verjetno našli le enega):

NSSProtocol TLSv1.0,TLSv1.1

4. Apache zavrne ponovni zagon, ker gre za samopodpisano potrdilo in izdajatelja ne bo prepoznal kot veljavnega. Iz tega razloga boste morali v tem primeru dodati:

NSSEnforceValidCerts off

5. Čeprav ni strogo obvezno, je pomembno, da za bazo podatkov NSS nastavite geslo:

# certutil -W -d /etc/httpd/alias