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

So sichern Sie eine SSL-Verbindung mit Apache unter Ubuntu 18.04

Durch das Konfigurieren einer SSL-Verbindung (Secure Sockets Layer) können Sie dem allgemeinen HTTP ein zusätzliches asymmetrisches Verschlüsselungsprotokoll hinzufügen. Das SSL-Protokoll kann nützlich sein, um entweder das Authentifizierungssystem einer Website oder den Datenaustausch zwischen einer App und dem Server zu stärken. In dieser Anleitung erfahren Sie, wie Sie eine SSL-Verbindung konfigurieren und HTTPS auf Apache mit Ubuntu 18.04 aktivieren.

Verbinden Sie sich zunächst über eine SSH-Verbindung mit Ihrem Server. Wenn Sie dies noch nicht getan haben, wird empfohlen, unserer Anleitung zu folgen, um sich sicher mit dem SSH-Protokoll zu verbinden. Im Falle eines lokalen Servers gehen Sie zum nächsten Schritt und öffnen Sie das Terminal Ihres Servers.

Ein SSL-Zertifikat erhalten

Um eine sichere Verbindung herzustellen, benötigt Apache ein SSL-Zertifikat, das von einer Zertifizierungsstelle (CA) bezogen werden kann. Der Einfachheit halber verwenden wir in diesem Beispiel ein selbstsigniertes oder selbstsigniertes Zertifikat, das nur in Test- und Entwicklungsumgebungen verwendet wird. Um ein selbstsigniertes Zertifikat zu erhalten, lesen Sie unsere Anleitung zum Erstellen eines selbstsignierten SSL-Zertifikats.

Falls Sie daran interessiert sind, ein kostenloses, von einer Zertifizierungsstelle ausgestelltes SSL-Zertifikat zu erhalten, folgen Sie unserem Leitfaden zur Sicherung von Apache mit Let's Encrypt und Ubuntu 18.04 .

Wichtiger Hinweis:

Geben Sie während der Erstellung des Zertifikats die IP-Adresse und/oder den Domänennamen Ihres Servers ein, wenn Sie nach dem Common Name gefragt werden:

Common Name (e.g. server FQDN or YOUR name) []: domain.com

Erstellen Sie nach Erhalt des Zertifikats den Ordner /etc/certificate:

$ sudo mkdir /etc/certificate

Speichern Sie dann sowohl das Zertifikat als auch den privaten Schlüssel darin.

Konfigurieren der Apache SSL-Parameter

Fahren Sie fort, indem Sie die Anweisungen für die sichere Verbindung festlegen, die Apache erstellen wird. Erstellen Sie dazu die Datei ssl-params.conf im Verzeichnis Apache conf-available:

$ sudo nano /etc/apache2/conf-available/ssl-params.conf

Fügen Sie die folgende Grundkonfiguration in die neu erstellte Datei ein:

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
    
    SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
    
    SSLHonorCipherOrder On
    
    
    Header always set X-Frame-Options DENY
    
    Header always set X-Content-Type-Options nosniff
    
    # Requires Apache >= 2.4
    
    SSLCompression off
    
    SSLUseStapling on
    
    SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
    
    
    # Requires Apache >= 2.4.11
    
    SSLSessionTickets Off

Dann speichern und schließen Sie die Datei.

So ändern Sie den virtuellen Host

Ändern Sie dann die SSL-Konfiguration des virtuellen Hosts der Domain, die Sie mit einer SSL-Verbindung schützen möchten. In diesem Tutorial wird als Beispiel die SSL-Konfiguration des standardmäßigen Apache Virtual Host verwendet.

Öffnen Sie die Virtual Host SSL-Konfiguration:

$ sudo nano /etc/apache2/sites-available/default-ssl.conf

Sie finden eine Datei, die wie folgt aufgebaut ist:

<IfModule mod_ssl.c>
    
            <VirtualHost _default_:443>
    
                    ServerAdmin [email protected]
                     
    
                    DocumentRoot /var/www/html
                     
    
                    ErrorLog ${APACHE_LOG_DIR}/error.log
    
                    CustomLog ${APACHE_LOG_DIR}/access.log combined
                     
    
                    SSLEngine on
                     
    
                    SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
    
                    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
                     
    
                    <FilesMatch "\.(cgi|shtml|phtml|php)$">
    
                                    SSLOptions +StdEnvVars
    
                    </FilesMatch>
    
                    <Directory /usr/lib/cgi-bin>
    
                                    SSLOptions +StdEnvVars
    
                    </Directory>
                     
    
            </VirtualHost>
    
    </IfModule>

Richten Sie die ServerAdmin-Anweisung korrekt ein, indem Sie Ihre E-Mail-Adresse eingeben und die ServerName-Anweisung gefolgt von Ihrer Domain oder der IP-Adresse Ihres Servers hinzufügen.

Ändern Sie schließlich den Pfad, der von den Direktiven SSLCertificateFile und SSLCertificateKeyFile angegeben wird, indem Sie jeweils den Pfad Ihres Zertifikats und Ihres privaten Schlüssels eingeben .

Sie erhalten ein Ergebnis ähnlich dem Folgenden:

<IfModule mod_ssl.c>
    
            <VirtualHost _default_:443>
    
                    ServerAdmin [email protected]
    
                    ServerName mydomain.com
                     
    
                    DocumentRoot /var/www/html
                     
    
                    ErrorLog ${APACHE_LOG_DIR}/error.log
    
                    CustomLog ${APACHE_LOG_DIR}/access.log combined
                     
    
                    SSLEngine on
                     
    
                    SSLCertificateFile      /etc/certificate/certificate.crt
    
                    SSLCertificateKeyFile /etc/certificate/private.key
                     
    
                    <FilesMatch "\.(cgi|shtml|phtml|php)$">
    
                                    SSLOptions +StdEnvVars
    
                    </FilesMatch>
    
                    <Directory /usr/lib/cgi-bin>
    
                                    SSLOptions +StdEnvVars
    
                    </Directory>
                     
    
            </VirtualHost>
    
    </IfModule>

Dann speichern und schließen Sie die Datei.

Wie man die Firewall konfiguriert

Falls eine Firewall auf Ihrem System vorhanden ist, richten Sie diese so ein, dass HTTP-Verkehr und HTTPS-Verkehr zu Ihrem Computer zugelassen werden.

Bei Verwendung der UFW-Firewall sind einige vorinstallierte Profile für Apache verfügbar. Sehen wir uns also an, wie man sie aktiviert.

Führen Sie diesen Befehl aus, um die verfügbaren Profile zu überprüfen, die in der UFW-Firewall installiert sind:

$ sudo ufw app list

Eine Liste ähnlich der folgenden wird auf dem Bildschirm angezeigt:

Available applications:
    
      Apache
    
      Apache Full
    
      Apache Secure
    
      OpenSSH

Um HTTP- (Port 80) und HTTPS- (Port 443) Datenverkehr zuzulassen, verwenden Sie das Profil "Apache Full".

Überprüfen Sie die Profilinformationen wie folgt:

$ sudo ufw app info "Apache Full"

Die Beschreibung des Bildschirmprofils wird angezeigt:

Profile: Apache Full
    
    Title: Web Server (HTTP,HTTPS)
    Description: Apache v2 is the next generation of the omnipresent Apache web
    server.
    
    Ports:
    80,443/tcp

Nachdem Sie das Profil verifiziert haben, aktivieren Sie es:

$ sudo ufw allow in "Apache Full"

Wie man Apache konfiguriert

An dieser Stelle können Änderungen an der Apache-Konfiguration vorgenommen werden.

Aktiviere die Module mod_ssl und mod_headers:

$ sudo a2enmod ssl
    
    $ sudo a2enmod headers

Lesen der zuvor erstellten SSL-Konfiguration aktivieren:

$ sudo a2enconf ssl-params

Aktivieren Sie den standardmäßigen virtuellen SSL-Host:

$ sudo a2ensite default-ssl

Überprüfen Sie, dass Sie keine Syntaxfehler in den Apache-Konfigurationsdateien gemacht haben:

$ sudo apache2ctl configtest

Wenn die Meldung "Syntax OK" auf dem Bildschirm erscheint, starten Sie Apache neu:

$ sudo systemctl restart apache2

So überprüfen Sie die sichere Verbindung

Öffnen Sie Ihren Browser, indem Sie sich mit der Domain oder IP-Adresse des von Ihnen konfigurierten virtuellen Hosts verbinden, und stellen Sie sicher, dass Sie das https-Protokoll verwenden

https://mydomain.com

Linux
  1. So sichern Sie Nginx mit Letsencrypt unter Ubuntu 20.04

  2. So sichern Sie vsFTPd mit SSL/TLS

  3. So aktivieren Sie das HTTPS-Protokoll mit Apache 2 unter Ubuntu 20.04

  4. Wie installiere ich Apache auf Ubuntu?

  5. So sichern Sie Apache mit Lets Encrypt unter Ubuntu 18.04

So installieren Sie Drupal auf einem Ubuntu 20.04-Server mit Apache

So installieren Sie Apache unter Ubuntu 20.04

So richten Sie die Passwortauthentifizierung mit Apache unter Ubuntu 18.04 ein

So aktivieren Sie HTTP/2 mit Apache in Ubuntu

So installieren Sie Apache Tomcat 10 auf Ubuntu 20.04 mit Nginx

So sichern Sie Apache mit Let’s Encrypt unter Ubuntu 20.04