RHCE Serie: Implementéiere vun HTTPS duerch TLS mat Network Security Service (NSS) fir Apache - Deel 8


Wann Dir e System Administrateur sidd, dee verantwortlech ass fir e Webserver z'erhalen an ze sécheren, kënnt Dir Iech net leeschten, Är allerbescht Efforten net ze widmen fir sécherzestellen datt d'Donnéeën, déi vun Ärem Server servéiert oder duerchgoen, zu all Moment geschützt sinn.

Fir méi sécher Kommunikatioun tëscht Webclienten a Server ze bidden, gouf den HTTPS Protokoll als Kombinatioun vun HTTP an SSL (Secure Sockets Layer) oder méi kierzlech TLS (Transport Layer Security) gebuer.

Wéinst e puer sérieux Sécherheetsverletzungen ass SSL zugonschte vum méi robuste TLS ofgeschaaft ginn. Aus deem Grond wäerte mir an dësem Artikel erkläre wéi Dir Verbindungen tëscht Ärem Webserver a Cliente mat TLS séchert.

Dësen Tutorial gëtt ugeholl datt Dir Ären Apache Webserver schonn installéiert a konfiguréiert hutt. Wann net, kuckt w.e.g. den folgenden Artikel op dësem Site ier Dir weider geet.

  1. LAMP installéieren (Linux, MySQL/MariaDB, Apache a PHP) op RHEL/CentOS 7

Installatioun vun OpenSSL an Utilities

Als éischt gitt sécher datt Apache leeft an datt souwuel http an https duerch d'Firewall erlaabt sinn:

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

Installéiert dann déi néideg Packagen:

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

Wichteg: Notéiert w.e.g. datt Dir mod_nss mat mod_ssl am Kommando hei uewen ersetzen kënnt wann Dir OpenSSL Bibliothéike wëllt benotzen amplaz NSS (Network Security Service) fir TLS ëmzesetzen (wat een ze benotzen ass ganz un Iech iwwerlooss, awer mir wäerten NSS benotzen an dësem Artikel well et méi robust ass; zum Beispill, et ënnerstëtzt rezent Kryptografiestandards wéi PKCS #11).

Endlech, deinstalléiert mod_ssl wann Dir gewielt hutt mod_nss ze benotzen, oder viceversa.

# yum remove mod_ssl

NSS (Network Security Service) konfiguréieren

Nodeems mod_nss installéiert ass, gëtt seng Standardkonfiguratiounsdatei als /etc/httpd/conf.d/nss.conf erstallt. Dir sollt dann sécher sinn datt all Listen an VirtualHost Direktiven op den Hafen 443 weisen (Standardport fir HTTPS):

Listen 443
VirtualHost _default_:443

Da start Apache nei a kontrolléiert ob de mod_nss Modul gelueden ass:

# apachectl restart
# httpd -M | grep nss

Als nächst sollten déi folgend Ännerungen an /etc/httpd/conf.d/nss.conf Konfiguratiounsdatei gemaach ginn:

1. NSS Datebank Verzeechnes unzeginn. Dir kënnt de Standardverzeechnes benotzen oder en neien erstellen. An dësem Tutorial benotze mir de Standard:

NSSCertificateDatabase /etc/httpd/alias

2. Vermeiden manuell Passwuert-Entrée op all System Start andeems Dir d'Passwuert an d'Datebankverzeechnes an /etc/httpd/nss-db-password.conf späichert:

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

Wou /etc/httpd/nss-db-password.conf NËMMEN déi folgend Zeil enthält a mäi Passwuert ass d'Passwuert dat Dir spéider fir d'NSS-Datebank setzt:

internal:mypassword

Zousätzlech solle seng Permissiounen a Besëtzer op 0640 a root:apache gesat ginn, respektiv:

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

3. Red Hat recommandéiert SSL an all Versioune vun TLS viru TLSv1.0 auszeschalten wéinst der POODLE SSLv3 Schwachstelle (méi Informatioun hei).

Vergewëssert Iech datt all Instanz vun der NSSProtocol Direktiv wéi follegt liest (Dir wäert wahrscheinlech nëmmen een fannen wann Dir net aner virtuell Hosten host):

NSSProtocol TLSv1.0,TLSv1.1

4. Apache wäert refuséieren nei ze starten well dëst e selbst ënnerschriwwenen Zertifika ass an den Emittent net als valabel erkennt. Aus dësem Grond, an dësem bestëmmte Fall musst Dir derbäisetzen:

NSSEnforceValidCerts off

5. Och wann et net strikt erfuerderlech ass, ass et wichteg e Passwuert fir d'NSS Datebank ze setzen:

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