Zoeken op website

RHCE-serie: HTTPS implementeren via TLS met behulp van Network Security Service (NSS) voor Apache - Deel 8


Als u een systeembeheerder bent die verantwoordelijk is voor het onderhouden en beveiligen van een webserver, kunt u het zich niet veroorloven om niet uw uiterste best te doen om ervoor te zorgen dat de gegevens die door uw server worden verzonden of die via uw server gaan, te allen tijde worden beschermd.

Om veiligere communicatie tussen webclients en servers te bieden, werd het HTTPS-protocol geboren als een combinatie van HTTP en SSL ( Secure Sockets Layer) of recenter, TLS (Transport Layer Security).

Vanwege enkele ernstige inbreuken op de beveiliging is SSL verouderd ten gunste van de robuustere TLS. Daarom leggen wij in dit artikel uit hoe u de verbindingen tussen uw webserver en clients kunt beveiligen met behulp van TLS.

In deze tutorial wordt ervan uitgegaan dat u uw Apache-webserver al hebt geïnstalleerd en geconfigureerd. Als dit niet het geval is, raadpleeg dan het volgende artikel op deze site voordat u verder gaat.

  1. Installeer LAMP (Linux, MySQL/MariaDB, Apache en PHP) op RHEL/CentOS 7

Installatie van OpenSSL en hulpprogramma's

Zorg er allereerst voor dat Apache actief is en dat zowel http als https door de firewall worden toegelaten:


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

Installeer vervolgens de benodigde pakketten:


yum update && yum install openssl mod_nss crypto-utils

Belangrijk: houd er rekening mee dat u mod_nss kunt vervangen door mod_ssl in de bovenstaande opdracht als u OpenSSL-bibliotheken in plaats van NSS (Network Security Service) om TLS te implementeren (welke u moet gebruiken, wordt geheel aan u overgelaten , maar we zullen in dit artikel NSS gebruiken omdat het robuuster is; het ondersteunt bijvoorbeeld recente cryptografiestandaarden zoals PKCS #11).

Verwijder ten slotte mod_ssl als u mod_nss wilt gebruiken, of omgekeerd.


yum remove mod_ssl

NSS (Netwerkbeveiligingsservice) configureren

Nadat mod_nss is geïnstalleerd, wordt het standaardconfiguratiebestand gemaakt als /etc/httpd/conf.d/nss.conf. Zorg er vervolgens voor dat alle Listen en VirtualHost richtlijnen verwijzen naar poort 443 (standaardpoort voor HTTPS):


Listen 443
VirtualHost _default_:443

Start vervolgens Apache opnieuw op en controleer of de module mod_nss is geladen:


apachectl restart
httpd -M | grep nss

Vervolgens moeten de volgende wijzigingen worden aangebracht in het /etc/httpd/conf.d/nss.conf configuratiebestand:

1. Geef de NSS-databasedirectory aan. U kunt de standaardmap gebruiken of een nieuwe maken. In deze tutorial gebruiken we de standaard:


NSSCertificateDatabase /etc/httpd/alias

2. Vermijd het handmatig invoeren van een wachtwoord bij elke systeemstart door het wachtwoord op te slaan in de databasedirectory in /etc/httpd/nss-db-password.conf:


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

Waar /etc/httpd/nss-db-password.conf ALLEEN de volgende regel bevat en mijnwachtwoord het wachtwoord is dat u later voor de NSS-database zult instellen:


internal:mypassword

Bovendien moeten de rechten en het eigendom ervan worden ingesteld op respectievelijk 0640 en root:apache:


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

3. Red Hat raadt aan SSL en alle versies van TLS vóór TLSv1.0 uit te schakelen vanwege de >POODLE SSLv3 kwetsbaarheid (meer informatie hier).

Zorg ervoor dat elke instantie van de NSSProtocol-richtlijn als volgt luidt (u zult er waarschijnlijk maar één vinden als u geen andere virtuele hosts host):


NSSProtocol TLSv1.0,TLSv1.1

4. Apache zal weigeren opnieuw op te starten omdat dit een zelfondertekend certificaat is en de uitgever niet als geldig zal herkennen. Om deze reden moet u in dit specifieke geval toevoegen:


NSSEnforceValidCerts off

5. Hoewel dit niet strikt vereist is, is het belangrijk om een wachtwoord in te stellen voor de NSS-database:


certutil -W -d /etc/httpd/alias