RHCE serija: HTTPS diegimas per TLS naudojant „Apache“ tinklo saugos tarnybą (NSS) - 8 dalis


Jei esate sistemos administratorius, atsakingas už žiniatinklio serverio priežiūrą ir apsaugą, negalite sau leisti nepadėti visų savo pastangų, kad jūsų serverio teikiami ar per jį perduodami duomenys būtų visada apsaugoti.

Siekiant užtikrinti saugesnį ryšį tarp interneto klientų ir serverių, HTTPS protokolas gimė kaip HTTP ir SSL („Secure Sockets Layer“) arba visai neseniai - „TLS“ (Transport Layer Security) derinys.

Dėl kai kurių rimtų saugumo pažeidimų SSL buvo nebenaudojamas tvirtesnio TLS naudai. Dėl šios priežasties šiame straipsnyje paaiškinsime, kaip apsaugoti ryšius tarp savo žiniatinklio serverio ir klientų naudojant TLS.

Šioje pamokoje daroma prielaida, kad jau įdiegėte ir sukonfigūravote „Apache“ žiniatinklio serverį. Jei ne, prieš tęsdami, perskaitykite šį šios svetainės straipsnį.

  1. Įdiekite LAMP („Linux“, „MySQL/MariaDB“, „Apache“ ir PHP) į „RHEL/CentOS 7“

„OpenSSL“ ir „Utilities“ diegimas

Pirmiausia įsitikinkite, kad veikia „Apache“ ir kad per ugniasienę leidžiama naudoti tiek „http“, tiek „https“:

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

Tada įdiekite reikiamus paketus:

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

Svarbu: atkreipkite dėmesį, kad aukščiau esančioje komandoje mod_nss galite pakeisti mod_ssl, jei norite naudoti TLS diegimui vietoj NSS (tinklo saugos tarnybos) naudoti OpenSSL bibliotekas (kurią naudoti paliksite tik jūs, bet mes naudosime NSS šiame straipsnyje, nes jis yra tvirtesnis; pavyzdžiui, jis palaiko naujausius kriptografijos standartus, tokius kaip PKCS # 11).

Galiausiai pašalinkite mod_ssl, jei pasirinkote naudoti mod_nss arba viceversa.

# yum remove mod_ssl

NSS (tinklo saugos tarnybos) konfigūravimas

Įdiegus mod_nss, numatytasis konfigūracijos failas sukuriamas kaip /etc/httpd/conf.d/nss.conf. Tada turėtumėte įsitikinti, kad visos „Listen“ ir „VirtualHost“ direktyvos nukreipia į 443 prievadą (numatytasis HTTPS prievadas):

Listen 443
VirtualHost _default_:443

Tada iš naujo paleiskite „Apache“ ir patikrinkite, ar mod_nss modulis buvo įkeltas:

# apachectl restart
# httpd -M | grep nss

Tada konfigūracijos faile /etc/httpd/conf.d/nss.conf reikia atlikti šiuos pakeitimus:

1. Nurodykite NSS duomenų bazės katalogą. Galite naudoti numatytąjį katalogą arba sukurti naują. Šioje pamokoje naudosime numatytąjį:

NSSCertificateDatabase /etc/httpd/alias

2. Venkite rankinio slaptafrazės įvedimo kiekvienoje sistemos paleidimo sistemoje, išsaugodami slaptažodį duomenų bazės kataloge, esančiame /etc/httpd/nss-db-password.conf:

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

Kur /etc/httpd/nss-db-password.conf yra TIK ši eilutė, o mano slaptažodis yra slaptažodis, kurį vėliau nustatysite NSS duomenų bazei:

internal:mypassword

Be to, jo leidimai ir nuosavybės teisė turėtų būti nustatyti kaip „0640“ ir „root: apache“:

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

3. „Red Hat“ rekomenduoja išjungti SSL ir visas ankstesnių nei TLSv1.0 versijų TLS dėl POODLE SSLv3 pažeidžiamumo (daugiau informacijos čia).

Įsitikinkite, kad kiekvienas „NSSProtocol“ direktyvos egzempliorius skamba taip (greičiausiai rasite tik vieną, jei nepriimate kitų virtualių kompiuterių):

NSSProtocol TLSv1.0,TLSv1.1

4. „Apache“ atsisakys paleisti iš naujo, nes tai yra pačių pasirašytas sertifikatas ir nepripažins išdavėjo galiojančiu. Dėl šios priežasties šiuo konkrečiu atveju turėsite pridėti:

NSSEnforceValidCerts off

5. Nors to griežtai nereikia, svarbu nustatyti NSS duomenų bazės slaptažodį:

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