Dieser Artikel beschreibt und demonstriert die Schritte zum Installieren und Konfigurieren eines httpd
Dienst zum Bereitstellen von Inhalten über HTTPS. Der Zweck der Verwendung von HTTPS anstelle von einfachem HTTP besteht darin, dass der Inhalt während der Übertragung verschlüsselt wird. Das bedeutet, wenn jemand den Datenverkehr zwischen Ihrem System und dem Webserver erfasst, kann er nicht sehen, was gesendet wurde. Wenn Sie auf einen einfachen HTTP-Server zugreifen, könnten sie den Inhalt sehen.
Die Voraussetzungen
Zunächst verwenden wir als Umgebung eine grundlegende virtuelle Maschine mit Red Hat Enterprise Linux (RHEL) 8.2. Stellen Sie sicher, dass das System entweder bei einem Red Hat Satellite oder beim Red Hat Kundenportal registriert ist. Hilfe dazu finden Sie im Registrierungsassistenten.
Nachdem das System registriert und die richtigen Abonnements hinzugefügt wurden, installieren Sie httpd
und mod_ssl
:
[root@webserver ~]# dnf install httpd mod_ssl
### Output truncated ###
Installed:
apr-1.6.3-9.el8.x86_64 apr-util-1.6.1-6.el8.x86_64
apr-util-bdb-1.6.1-6.el8.x86_64 apr-util-openssl-1.6.1-6.el8.x86_64
httpd-2.4.37-21.module+el8.2.0+5008+cca404a3.x86_64 httpd-filesystem-2.4.37-21.module+el8.2.0+5008+cca404a3.noarch
httpd-tools-2.4.37-21.module+el8.2.0+5008+cca404a3.x86_64 mod_http2-1.11.3-3.module+el8.2.0+7758+84b4ca3e.1.x86_64
mod_ssl-1:2.4.37-21.module+el8.2.0+5008+cca404a3.x86_64 redhat-logos-httpd-81.1-1.el8.noarch
Complete!
[root@webserver ~]#
[ Den Lesern gefiel auch: Ein Sicherheitsaudit mit Unternehmens-Linux überleben ]
Generieren von Zertifikaten
Generieren Sie nach der Installation der RPMs Zertifikate von einer Zertifizierungsstelle Ihrer Wahl, falls Sie diese noch nicht haben:
[root@webserver ~]# openssl req -newkey rsa:2048 -nodes -keyout /etc/pki/tls/private/httpd.key -x509 -days 3650 -out /etc/pki/tls/certs/httpd.crt
Generating a RSA private key
..............+++++
..........................................................................+++++
writing new private key to '/etc/pki/tls/private/httpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields, but you can leave some blank
For some fields, there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:North Carolina
Locality Name (eg, city) [Default City]:Holly Springs
Organization Name (eg, company) [Default Company Ltd]:Example Co
Organizational Unit Name (eg, section) []:Example Unit
Common Name (eg, your name or your server's hostname) []:webserver
Email Address []:root@localhost
[root@webserver ~]#
Sie können überprüfen, ob die Dateien erstellt wurden:
[root@webserver ~]# ls -l /etc/pki/tls/private/ /etc/pki/tls/certs/
/etc/pki/tls/certs/:
total 4
lrwxrwxrwx. 1 root root 49 Oct 18 2019 ca-bundle.crt -> /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
lrwxrwxrwx. 1 root root 55 Oct 18 2019 ca-bundle.trust.crt -> /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
-rw-r--r--. 1 root root 1489 Oct 1 12:02 httpd.crt
/etc/pki/tls/private/:
total 4
-rw-------. 1 root root 1704 Oct 1 12:00 httpd.key
Nachdem die Zertifikate generiert wurden, müssen Sie ein Verzeichnis erstellen, aus dem Ihr Webserver die Inhalte bereitstellt. Zum Beispiel:
[root@webserver ~]# mkdir /var/www/https
Sie können Beispielinhalte in die index.html einfügen Datei dort:
[root@webserver ~]# echo secure content > /var/www/https/index.html
[root@webserver ~]# cat /var/www/https/index.html
secure content
[root@webserver ~]#
SELinux-Sicherheit
Stellen Sie sicher, dass der richtige SELinux-Kontext festgelegt ist:
[root@webserver ~]# ll -Z /var/www
total 0
drwxr-xr-x. 2 root root system_u:object_r:httpd_sys_script_exec_t:s0 6 Dec 2 2019 cgi-bin
drwxr-xr-x. 2 root root system_u:object_r:httpd_sys_content_t:s0 6 Dec 2 2019 html
drwxr-xr-x. 2 root root unconfined_u:object_r:httpd_sys_content_t:s0 6 Oct 1 12:34 https
[root@webserver ~]#
Vergewissern Sie sich auch, dass der SELinux-Kontext für Ihre index.html korrekt ist Datei:
[root@webserver ~]# ll -Z /var/www/https/index.html
-rw-r--r--. 1 root root unconfined_u:object_r:httpd_sys_content_t:s0 15 Oct 1 15:07 /var/www/https/index.html
[root@webserver ~]#
Nachdem Sie nun die richtigen Zertifikate haben, das Verzeichnis erstellt wurde und SELinux korrekt ist, teilen Sie httpd
mit um die Tasten zu verwenden:
[root@webserver ~]# vi /etc/httpd/conf.d/ssl.conf
[root@webserver ~]# grep -e httpd.crt -e httpd.key /etc/httpd/conf.d/ssl.conf -B1
#SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateFile /etc/pki/tls/certs/httpd.crt
--
#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCertificateKeyFile /etc/pki/tls/private/httpd.key
[root@webserver ~]#
[root@webserver ~]# grep DocumentRoot /etc/httpd/conf.d/ssl.conf
DocumentRoot "/var/www/https"
#DocumentRoot "/var/www/html"
[root@webserver ~]#
Firewall-Einstellungen
Der httpd
Der Dienst wurde jetzt konfiguriert, aber wir müssen sicherstellen, dass der Datenverkehr durch die Firewall zugelassen wird. Wir aktivieren Port 443 und laden dann die Firewall neu:
[root@webserver ~]# firewall-cmd --permanent --add-port=443/tcp
success
[root@webserver ~]# firewall-cmd --reload
success
Endgültige Konfiguration und Tests
Aktivieren Sie httpd
Dienst beim Booten starten und dann den httpd
neu starten Dienst:
[root@webserver ~]# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
[root@webserver ~]# systemctl restart httpd
[root@webserver ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2020-10-01 12:35:26 EDT; 1min 30s ago
Docs: man:httpd.service(8)
Main PID: 33387 (httpd)
Status: "Total requests: 1; Idle/Busy workers 100/0;Requests/sec: 0.0112; Bytes served/sec: 40 B/sec"
Tasks: 213 (limit: 74790)
Memory: 35.6M
CGroup: /system.slice/httpd.service
├─33387 /usr/sbin/httpd -DFOREGROUND
├─33390 /usr/sbin/httpd -DFOREGROUND
├─33391 /usr/sbin/httpd -DFOREGROUND
├─33392 /usr/sbin/httpd -DFOREGROUND
└─33393 /usr/sbin/httpd -DFOREGROUND
Oct 01 12:35:26 webserver.example.com systemd[1]: Starting The Apache HTTP Server...
Oct 01 12:35:26 webserver.example.com systemd[1]: Started The Apache HTTP Server.
Oct 01 12:35:26 webserver.example.com httpd[33387]: Server configured, listening on: port 443, port 80
[root@webserver ~]#
Sie können überprüfen, ob der Dienst ausgeführt wird und Port 443 überwacht, indem Sie netstat
verwenden :
[root@webserver ~]# netstat -tlpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 192.168.124.1:53 0.0.0.0:* LISTEN 1505/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1438/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1904/cupsd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp6 0 0 :::80 :::* LISTEN 33387/httpd
tcp6 0 0 :::22 :::* LISTEN 1438/sshd
tcp6 0 0 ::1:631 :::* LISTEN 1904/cupsd
tcp6 0 0 :::443 :::* LISTEN 33387/httpd
tcp6 0 0 :::111 :::* LISTEN 1/systemd
[root@webserver ~]#
An diesem Punkt sollte der Webdienst korrekt funktionieren und für Ihre Kunden sichtbar sein. Um dies zu überprüfen, versuchen Sie, mit Ihrem Webbrowser auf die Website zuzugreifen. Wenn Sie ein selbstsigniertes Zertifikat verwenden, müssen Sie es akzeptieren:

Wenn Sie auf das Schlosssymbol in der Adressleiste klicken und dann „Zertifikat anzeigen“ auswählen, werden die von Ihnen eingegebenen Zertifikatsinformationen angezeigt:

Sie können den Inhalt in /var/www/https/index.html sehen Datei, die Ihnen über HTTPS bereitgestellt wird:

[ Möchten Sie mehr über Sicherheit erfahren? Schauen Sie sich die Checkliste für IT-Sicherheit und Compliance an. ]
Abschluss
Dieser Artikel hat Ihnen gezeigt, wie Sie einen HTTPS-Server installieren und konfigurieren und dann überprüfen, ob der Dienst ordnungsgemäß funktioniert. Zusätzliche Konfigurationen können das Einrichten von Remote-Logging, das Aktivieren von PHP oder das Konfigurieren einer Datenbank für die Website beinhalten.