RHCE sērija: HTTPS ieviešana, izmantojot TLS, izmantojot Apache tīkla drošības pakalpojumu (NSS) - 8. daļa


Ja esat sistēmas administrators un esat atbildīgs par tīmekļa servera uzturēšanu un drošību, jūs nevarat atļauties nepielikt visas iespējamās pūles, lai nodrošinātu, ka jūsu servera apkalpoti vai caur to esošie dati vienmēr tiek aizsargāti.

Lai nodrošinātu drošāku komunikāciju starp tīmekļa klientiem un serveriem, HTTPS protokols ir dzimis kā HTTP un SSL (Secure Sockets Layer) vai pavisam nesen TLS (Transport Layer Security) kombinācija.

Dažu nopietnu drošības pārkāpumu dēļ SSL ir novecojis par labu stingrākam TLS. Šī iemesla dēļ šajā rakstā mēs paskaidrosim, kā nodrošināt savienojumus starp jūsu tīmekļa serveri un klientiem, izmantojot TLS.

Šajā apmācībā tiek pieņemts, ka esat jau instalējis un konfigurējis savu Apache tīmekļa serveri. Ja nē, lūdzu, skatiet nākamo šīs vietnes rakstu, pirms turpināt darbu.

  1. Uz RHEL/CentOS 7 instalējiet LAMP (Linux, MySQL/MariaDB, Apache un PHP)

OpenSSL un Utilities instalēšana

Vispirms pārliecinieties, vai darbojas Apache un vai caur ugunsmūri ir atļauts izmantot gan http, gan https:

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

Pēc tam instalējiet nepieciešamos iepakojumus:

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

Svarīgi: Lūdzu, ņemiet vērā, ka iepriekš esošajā komandā mod_nss varat aizstāt ar mod_ssl, ja TLS ieviešanai vēlaties NSS (tīkla drošības pakalpojums) vietā izmantot OpenSSL bibliotēkas (kuru izmantot pilnībā atstājat jūs, taču mēs izmantosim NSS šajā rakstā, jo tas ir stingrāks; piemēram, tas atbalsta jaunākos kriptogrāfijas standartus, piemēram, PKCS # 11).

Visbeidzot, atinstalējiet mod_ssl, ja izvēlējāties izmantot mod_nss vai viceversa.

# yum remove mod_ssl

NSS (tīkla drošības pakalpojums) konfigurēšana

Pēc mod_nss instalēšanas tā noklusējuma konfigurācijas fails tiek izveidots kā /etc/httpd/conf.d/nss.conf. Pēc tam jums jāpārliecinās, vai visas Klausīšanās un VirtualHost direktīvas norāda uz 443. portu (noklusējuma ports HTTPS):

Listen 443
VirtualHost _default_:443

Pēc tam restartējiet Apache un pārbaudiet, vai mod_nss modulis ir ielādēts:

# apachectl restart
# httpd -M | grep nss

Pēc tam konfigurācijas failā /etc/httpd/conf.d/nss.conf jāveic šādi labojumi:

1. Norādiet NSS datu bāzes direktoriju. Varat izmantot noklusējuma direktoriju vai izveidot jaunu. Šajā apmācībā mēs izmantosim noklusējumu:

NSSCertificateDatabase /etc/httpd/alias

2. Izvairieties no paroles manuālas ievadīšanas katrā sistēmas startā, saglabājot paroli datu bāzes direktorijā mapē /etc/httpd/nss-db-password.conf:

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

Kur /etc/httpd/nss-db-password.conf satur TIKAI šādu rindu, un parole ir parole, kuru vēlāk iestatīsit NSS datu bāzei:

internal:mypassword

Turklāt tā atļaujām un īpašumtiesībām jābūt attiecīgi iestatītām uz 0640 un root: apache:

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

3. Red Hat iesaka atspējot SSL un visas TLS versijas pirms TLSv1.0 POODLE SSLv3 ievainojamības dēļ (vairāk informācijas šeit).

Pārliecinieties, ka katrs NSSProtocol direktīvas gadījums skan šādi (iespējams, ka atradīsit tikai vienu, ja neuzņemat citus virtuālos resursdatorus):

NSSProtocol TLSv1.0,TLSv1.1

4. Apache atteiksies restartēt, jo tas ir pašu parakstīts sertifikāts un neatzīs emitentu par derīgu. Šī iemesla dēļ šajā konkrētajā gadījumā jums būs jāpievieno:

NSSEnforceValidCerts off

5. Lai gan tas nav obligāti nepieciešams, ir svarīgi iestatīt paroli NSS datu bāzei:

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