RHCE-serien: Implementering af HTTPS gennem TLS ved hjælp af Network Security Service (NSS) til Apache - Del 8


Hvis du er en systemadministrator, der har ansvaret for vedligeholdelse og sikring af en webserver, har du ikke råd til ikke at bruge din allerbedste indsats for at sikre, at data, der betjenes af eller går gennem din server, altid er beskyttet.

For at give mere sikker kommunikation mellem webklienter og servere blev HTTPS-protokollen født som en kombination af HTTP og SSL (Secure Sockets Layer) eller for nylig TLS (Transport Layer Security).

På grund af nogle alvorlige sikkerhedsbrud er SSL blevet afskaffet til fordel for den mere robuste TLS. Af denne grund forklarer vi i denne artikel, hvordan du sikrer forbindelser mellem din webserver og klienter ved hjælp af TLS.

Denne tutorial antager, at du allerede har installeret og konfigureret din Apache-webserver. Hvis ikke, henvises til følgende artikel på dette websted, inden du fortsætter videre.

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

Installation af OpenSSL og Utilities

Først skal du sørge for, at Apache kører, og at både http og https er tilladt gennem firewallen:

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

Installer derefter de nødvendige pakker:

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

Vigtigt: Bemærk, at du kan erstatte mod_nss med mod_ssl i kommandoen ovenfor, hvis du vil bruge OpenSSL-biblioteker i stedet for NSS (Network Security Service) til at implementere TLS (hvilken der skal bruges, er helt op til dig, men vi bruger NSS i denne artikel, da den er mere robust; for eksempel understøtter den nylige kryptografistandarder som PKCS # 11).

Endelig skal du afinstallere mod_ssl, hvis du vælger at bruge mod_nss eller viceversa.

# yum remove mod_ssl

Konfiguration af NSS (Network Security Service)

Når mod_nss er installeret, oprettes dens standardkonfigurationsfil som /etc/httpd/conf.d/nss.conf. Du skal derefter sørge for, at alle Lyt- og VirtualHost-direktiverne peger på port 443 (standardport til HTTPS):

Listen 443
VirtualHost _default_:443

Genstart derefter Apache og kontroller, om mod_nss-modulet er indlæst:

# apachectl restart
# httpd -M | grep nss

Dernæst skal følgende redigeringer foretages i /etc/httpd/conf.d/nss.conf konfigurationsfil:

1. Angiv NSS-databasekatalog. Du kan bruge standardmappen eller oprette en ny. I denne vejledning bruger vi standard:

NSSCertificateDatabase /etc/httpd/alias

2. Undgå manuel indtastning af adgangskode på hvert system start ved at gemme adgangskoden i databasekataloget i /etc/httpd/nss-db-password.conf:

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

Hvor /etc/httpd/nss-db-password.conf KUN indeholder følgende linje, og mypassword er den adgangskode, du vil indstille senere til NSS-databasen:

internal:mypassword

Derudover skal dens tilladelser og ejerskab indstilles 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 at deaktivere SSL og alle versioner af TLS tidligere end TLSv1.0 på grund af POODLE SSLv3-sårbarheden (flere oplysninger her).

Sørg for, at hver forekomst af NSSProtocol-direktivet læser som følger (du finder sandsynligvis kun en, hvis du ikke er vært for andre virtuelle værter):

NSSProtocol TLSv1.0,TLSv1.1

4. Apache nægter at genstarte, da dette er et selvsigneret certifikat og genkender ikke udstederen som gyldig. Af denne grund skal du i dette særlige tilfælde tilføje:

NSSEnforceValidCerts off

5. Selvom det ikke strengt kræves, er det vigtigt at indstille en adgangskode til NSS-databasen:

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