GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Einrichten eines Webservers zur Verwendung von HTTPS

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.


Linux
  1. So verwenden Sie BusyBox unter Linux

  2. Wie ich Cron unter Linux verwende

  3. Benachrichtigen-Senden als root ausführen

  4. Warum verwenden wir su - und nicht nur su?

  5. So richten Sie passwortloses SSH mit RSA-Schlüsseln ein

Verwenden Sie Linux, um Ihre Steuern zu erledigen

Verwenden Sie Emojis im Mac-Stil unter Linux

Warum ich rxvt als Terminal verwende

Aktualisieren von ISPConfig 3.1 auf ISPConfig 3.2

Zwingen Sie Benutzer, das Root-Passwort anstelle ihres eigenen Passworts zu verwenden, wenn Sie den Sudo-Befehl verwenden

Müssen alle Server das HTTPS-Protokoll verwenden oder nur öffentlich zugängliche Server?