RHCE-serien: Implementering av HTTPS gjennom TLS ved hjelp av Network Security Service (NSS) for Apache - Del 8


Hvis du er en systemadministrator som har ansvaret for å vedlikeholde og sikre en webserver, har du ikke råd til å ikke bruke ditt beste for å sikre at data som serveres av eller går gjennom serveren din til enhver tid er beskyttet.

For å gi sikrere kommunikasjon mellom nettklienter og servere, ble HTTPS-protokollen født som en kombinasjon av HTTP og SSL ( Secure Sockets Layer) eller nylig TLS (Transport Layer Security).

På grunn av noen alvorlige sikkerhetsbrudd har SSL blitt avviklet til fordel for den mer robuste TLS. Av den grunn vil vi i denne artikkelen forklare hvordan du sikrer tilkoblinger mellom webserveren din og klienter ved hjelp av TLS.

Denne opplæringen forutsetter at du allerede har installert og konfigurert Apache-nettserveren. Hvis ikke, vennligst se følgende artikkel på dette nettstedet før du fortsetter.

  1. Installer LAMP (Linux, MySQL/MariaDB, Apache og PHP) på RHEL/CentOS 7

Installasjon av OpenSSL og Utilities

Først må du kontrollere at Apache kjører og at både http og https er tillatt gjennom brannmuren:


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

Installer deretter de nødvendige pakkene:


yum update && yum install openssl mod_nss crypto-utils

Viktig: Vær oppmerksom på at du kan erstatte mod_nss med mod_ssl i kommandoen ovenfor hvis du vil bruke OpenSSL-biblioteker i stedet for NSS (Network Security Service) for å implementere TLS (hvilken du skal bruke er helt opp til deg , men vi vil bruke NSS i denne artikkelen siden den er mer robust; for eksempel støtter den nyere kryptografistandarder som PKCS #11).

Til slutt, avinstaller mod_ssl hvis du velger å bruke mod_nss, eller omvendt.


yum remove mod_ssl

Konfigurere NSS (Network Security Service)

Etter at mod_nss er installert, opprettes standard konfigurasjonsfilen som /etc/httpd/conf.d/nss.conf. Du bør deretter sørge for at alle Lytt- og VirtualHost-direktivene peker til port 443 (standardport for HTTPS):


Listen 443
VirtualHost _default_:443

Start deretter Apache på nytt og kontroller om mod_nss-modulen er lastet inn:


apachectl restart
httpd -M | grep nss

Deretter bør følgende redigeringer gjøres i /etc/httpd/conf.d/nss.conf konfigurasjonsfil:

1. Angi NSS-databasekatalog. Du kan bruke standardkatalogen eller opprette en ny. I denne opplæringen vil vi bruke standarden:


NSSCertificateDatabase /etc/httpd/alias

2. Unngå manuell inntasting av passordfrase på hvert system, start ved å lagre passordet i databasekatalogen i /etc/httpd/nss-db-password.conf:


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

Der /etc/httpd/nss-db-password.conf KUN inneholder følgende linje og mitt passord er passordet som du vil angi senere for NSS-databasen:


internal:mypassword

I tillegg bør tillatelsene og eierskapet settes til henholdsvis 0640 og root:apache:


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

3. Red Hat anbefaler å deaktivere SSL og alle versjoner av TLS tidligere til TLSv1.0 på grunn av >POODLE SSLv3 sårbarhet (mer informasjon her).

Sørg for at hver forekomst av NSSSProtocol-direktivet lyder som følger (du finner sannsynligvis bare én hvis du ikke er vert for andre virtuelle verter):


NSSProtocol TLSv1.0,TLSv1.1

4. Apache vil nekte å starte på nytt siden dette er et selvsignert sertifikat og vil ikke gjenkjenne utstederen som gyldig. Av denne grunn, i dette spesielle tilfellet må du legge til:


NSSEnforceValidCerts off

5. Selv om det ikke er strengt nødvendig, er det viktig å angi et passord for NSS-databasen:


certutil -W -d /etc/httpd/alias