Vyhledávání na webu

Řada RHCE: Implementace HTTPS prostřednictvím TLS pomocí služby Network Security Service (NSS) pro Apache – část 8


Pokud jste správce systému, který má na starosti údržbu a zabezpečení webového serveru, nemůžete si dovolit nevěnovat své nejlepší úsilí tomu, aby data obsluhovaná nebo procházející vaším serverem byla vždy chráněna.

Aby byla zajištěna bezpečnější komunikace mezi webovými klienty a servery, zrodil se protokol HTTPS jako kombinace HTTP a SSL ( Secure Sockets Layer) nebo novější TLS (Transport Layer Security).

Kvůli některým závažným narušením zabezpečení byla podpora SSL ukončena ve prospěch robustnějšího TLS. Z tohoto důvodu v tomto článku vysvětlíme, jak zabezpečit spojení mezi vaším webovým serverem a klienty pomocí TLS.

Tento tutoriál předpokládá, že jste již nainstalovali a nakonfigurovali webový server Apache. Pokud ne, přečtěte si prosím následující článek na této stránce, než budete pokračovat dále.

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

Instalace OpenSSL a utilit

Nejprve se ujistěte, že je spuštěn Apache a že je přes firewall povoleno jak http, tak https:


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

Poté nainstalujte potřebné balíčky:


yum update && yum install openssl mod_nss crypto-utils

Důležité: Pokud chcete použít , můžete v příkazu výše nahradit mod_nss za mod_ssl >Knihovny >OpenSSL namísto NSS (Služba zabezpečení sítě) k implementaci TLS (který z nich použijete, je zcela na vás , ale v tomto článku použijeme NSS, protože je robustnější; například podporuje nejnovější kryptografické standardy, jako je PKCS #11).

Nakonec odinstalujte mod_ssl, pokud jste se rozhodli použít mod_nss nebo naopak.


yum remove mod_ssl

Konfigurace služby NSS (Network Security Service)

Po instalaci mod_nss se jeho výchozí konfigurační soubor vytvoří jako /etc/httpd/conf.d/nss.conf. Poté byste se měli ujistit, že všechny direktivy Listen a VirtualHost směřují na port 443 (výchozí port pro HTTPS):


Listen 443
VirtualHost _default_:443

Poté restartujte Apache a zkontrolujte, zda byl načten modul mod_nss:


apachectl restart
httpd -M | grep nss

Dále by měly být provedeny následující úpravy v konfiguračním souboru /etc/httpd/conf.d/nss.conf:

1. Označte adresář databáze NSS. Můžete použít výchozí adresář nebo vytvořit nový. V tomto tutoriálu použijeme výchozí:


NSSCertificateDatabase /etc/httpd/alias

2. Vyhněte se ručnímu zadávání přístupové fráze při každém spuštění systému uložením hesla do adresáře databáze v /etc/httpd/nss-db-password.conf:


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

Kde /etc/httpd/nss-db-password.conf obsahuje POUZE následující řádek a mypassword je heslo, které později nastavíte pro databázi NSS:


internal:mypassword

Kromě toho by jeho oprávnění a vlastnictví měly být nastaveny na 0640 a root:apache:


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

3. Red Hat doporučuje deaktivovat SSL a všechny verze TLS předcházející TLSv1.0 kvůli POODLE SSLv3 (více informací zde).

Ujistěte se, že každá instance direktivy NSSProtocol zní následovně (pravděpodobně najdete pouze jednu, pokud nehostíte jiné virtuální hostitele):


NSSProtocol TLSv1.0,TLSv1.1

4. Apache odmítne restart, protože se jedná o certifikát podepsaný sám sebou a nerozpozná vydavatele jako platného. Z tohoto důvodu v tomto konkrétním případě budete muset přidat:


NSSEnforceValidCerts off

5. I když to není striktně vyžadováno, je důležité nastavit heslo pro databázi NSS:


certutil -W -d /etc/httpd/alias