Wie man Nginx mit Let’s encrypt installiert und A+ von SSLLabs Test erhält.

In diesem Tutorial zeige ich Ihnen Schritt für Schritt, wie Sie den Nginx-Webserver mit Letsencrypt-Zertifikat installieren und konfigurieren. In diesem Handbuch erfahren Sie mehr über die Installation des Nginx-Webservers, die Installation des let’s encrypt-Tools, die Generierung eines SSL-Zertifikats lets encrypt, die Konfiguration des virtuellen Hosts von nginx mit SSL und die Erstellung einer zusätzlichen SSL-Konfiguration, um das A+ aus den SSL-Test-SSL-Labs zu erhalten.

Voraussetzungen

  • Linux Server – Ubuntu 18.04 oder CentOS 7.5
  • Root-Rechte

Was werden wir tun?

  1. Nginx Web Server installieren
  2. Firewall UFW/Firewalld konfigurieren
  3. Installieren Sie let’s encrypt und generieren Sie SSL-Zertifikate.
  4. Konfigurieren Sie Secure SSL
  5. Nginx Virtual Host mit SSL konfigurieren
  6. Prüfung

Schritt 1 – Nginx Web Server installieren

In diesem Tutorial führen wir Sie durch die Installation und Konfiguration des Nginx-Webservers mit Letsencrypt auf beiden Linux-Servern – Ubuntu 18.04 und CentOS 7.5.

Am Ubuntu 18.04.

Aktualisieren Sie das Repository und installieren Sie nginx dann mit dem untenstehenden Befehl apt.

sudo apt update
sudo apt install nginx -y

Auf CentOS 7.5.

Installieren Sie das EPEL-Repository auf dem CentOS-System und installieren Sie Nginx mit dem Befehl yum.

sudo yum install epel-release -y
sudo yum install nginx -y

Nachdem die Installation abgeschlossen ist, starten Sie den Nginx-Dienst und aktivieren Sie ihn, damit er jedes Mal beim Systemstart gestartet werden kann.

systemctl start nginx
systemctl enable nginx

Der Nginx-Webserver ist nun installiert und läuft auf dem standardmäßigen HTTP-Port 80. Überprüfen Sie dies mit dem untenstehenden netstat-Befehl.

netstat -plntu

Nginx-Webserver installieren

Schritt 2 – Konfigurieren der Firewall UFW – Firewall UFW – Firewalld

Es wird empfohlen, die Firewall auf dem Server einzuschalten und den jeweiligen Port bei Bedarf zu öffnen. In diesem Schritt wird gezeigt, wie man SSH-, HTTP- und HTTPS-Ports auf Linux-Servern Ubuntu 18.04 mit Hilfe der UFW-Firewall und Firewalld auf dem CentOS 7.5-System öffnet.

Am Ubuntu 18.04 – UFW Firewall

Bevor Sie die UFW Firewall auf dem Ubuntu-System aktivieren, stellen Sie sicher, dass der SSH-Port in der Konfiguration der Listen-Firewall aktiviert ist.

Fügen Sie den SSH-Service-Port mit dem Befehl ufw zur Firewall-Konfiguration hinzu und aktivieren Sie dann den UFW-Firewall-Service.

ufw allow ssh
ufw enable

Fügen Sie nun die HTTP- und HTTPS-Dienste hinzu.

ufw allow http
ufw allow https

Die SSH-, HTTP- und HTTPS-Serviceports wurden der UFW Firewall-Serviceliste hinzugefügt, überprüfen Sie sie mit dem folgenden Befehl.

ufw status

UFW Firewall konfigurieren

Auf CentOS 7.5 – Firewalldatenbank

Bevor Sie dem Firewelld einen Port und Dienste hinzufügen, stellen Sie sicher, dass der Firewalldienst funktionsfähig ist.

Starten Sie den Firewalldienst und lassen Sie ihn jedes Mal beim Systemstart starten.

systemctl start firewalld
systemctl enable firewalld

Hinweis:

  • Der SSH-Dienst wird standardmäßig in der Firewald-Dienstliste aktiviert.

Fügen Sie nun die HTTP- und HTTPS-Dienste mit dem Befehl firewall-cmd unten hinzu.

firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent

Laden Sie die Firewall-Konfiguration neu und überprüfen Sie die Diensteliste.

firewall-cmd --reload
firewall-cmd --list-services

Und Sie erhalten die SSH-, HTTP- und HTTPS-Dienste auf der Liste.

Firewalldatei konfigurieren

Schritt 3 – Letsencrypt installieren und Zertifikate generieren

In diesem Schritt installieren wir das letsencrypt-Tool und generieren die starken SSL-Zertifikate Letsencrypt mit dem Befehl cerbot.

Am Ubuntu 18.04.

Installieren Sie die letsencrypt-Pakete mit dem folgenden apt-Befehl.

sudo apt install letsencrypt -y

Unter CentOS 7.5

Installieren Sie nun die letsencrypt-Pakete auf CentOS 7 mit dem Befehl yum unten.

sudo yum install certbot -y

Nach Abschluss der Installation erstellen wir eine neue Konfiguration, die für die Generierung von SSL-Zertifikatsdateien verwendet wird.

Am Ubuntu 18.04.

Gehen Sie in das Konfigurationsverzeichnis von ‚/etc/nginx‘ und erstellen Sie eine neue Konfigurationsdatei ‚cerbot.conf‘ unter dem Verzeichnis’snippets‘.

cd /etc/nginx/
vim snippets/certbot.conf

Fügen Sie dort die folgende Konfiguration ein.

    location /.well-known {
        alias /var/www/html/.well-known;
    }

Speichern und beenden.

Bearbeiten Sie nun die standardmäßige virtuelle Nginx-Hostdatei.

vim sites-available/default

Fügen Sie folgende Konfiguration unter den Blöcken ’server {..}‘ hinzu.

    include snippets/certbot.conf;

Speichern und beenden.

Unter CentOS 7.5

Gehen Sie in das Konfigurationsverzeichnis von ‚/etc/nginx‘ und erstellen Sie eine neue Konfigurationsdatei ‚certbot.conf‘ unter dem Verzeichnis ‚default.d‘.

cd /etc/nginx/
vim default.d/certbot.conf

Füge die Konfiguration unten ein.

    location /.well-known {
        alias /usr/share/nginx/html/.well-known;
    }

Speichern und beenden.

Testen Sie nun die nginx-Konfiguration und stellen Sie sicher, dass kein Fehler vorliegt, und starten Sie dann den nginx-Dienst neu.

nginx -t
systemctl restart nginx

Als nächstes generieren Sie die SSL letsencrypt Zertifikate mit dem Befehl certbot.

Am Ubuntu 18.04.

certbot certonly --rsa-key-size 4096 --webroot --agree-tos --no-eff-email --email myemail@gmail.com -w /var/www/html -d hakase-labs.io

Unter CentOS 7.5

certbot certonly --rsa-key-size 4096 --webroot --agree-tos --no-eff-email --email myemail@gmail.com -w /usr/share/nginx/html -d hakase-labs.io

Hinweis:

  • Wir geben die RSA-Schlüsselgröße für unsere Domäne auf 4096′ an, und wir definieren die Authentifizierungsmethode für das standardmäßige Web-Root-Verzeichnis /var/www/html‘ auf dem Ubuntu-System und das Verzeichnis /usr/share/nginx/html‘ für das CentOS-7-System.

Erstellen Sie Let's encrypt SSL-Zertifikat

Wenn es vollständig ist, erhalten Sie alle SSL-Zertifikatsdateien für den Domainnamen im Verzeichnis ‚/etc/letsencrypt/live‘.

Um eine zusätzliche Sicherheit zu erhalten, werden wir den DHPARAM-Schlüssel’4096′ mit dem OpenSSL-Befehl wie unten gezeigt erzeugen.

openssl dhparam -out /etc/nginx/dhparam.pem 4096

Der DHPARAM-Schlüssel wurde in das Verzeichnis’/etc/nginx‘ generiert.

Schritt 4 – SSL-Konfiguration

In diesem Schritt definieren wir die SSL-Konfiguration für den Nginx-Webserver. Wir werden eine neue Konfiguration’ssl.conf‘ erstellen, die eine optimierte SSL-Konfigurationssicherheit für den Nginx-Webserver enthält.

Am Ubuntu 18.04.

Gehen Sie in das Konfigurationsverzeichnis von ‚/etc/nginx/‘ und erstellen Sie eine neue SSL-Konfiguration ’ssl.conf‘ unter dem Verzeichnis von’snippets‘.

cd /etc/nginx/
vim snippets/ssl.conf

Unter CentOS 7.5

Gehen Sie zum Konfigurationsverzeichnis ‚/etc/nginx/‘ und erstellen Sie eine neue SSL-Konfiguration ’ssl/conf‘ unter dem Verzeichnis ‚default.d‘.

cd /etc/nginx/
vim default.d/ssl.conf

Fügen Sie dort die folgende SSL-Konfiguration ein.

# Specify the TLS versions
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;

# Ciphersuites recommendation from the chiper.li
# Use this chipersuites to get 100 points of the SSLabs test
# Some device will not support
#ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384";

# Mozilla Ciphersuits Recommendation
# Use this for all devices supports
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';

# Use the DHPARAM key and ECDH curve >= 256bit
ssl_ecdh_curve secp384r1;
ssl_dhparam /etc/nginx/dhparam.pem;

server_tokens off;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;

# Enable HTTP Strict-Transport-Security
# If you have a subdomain of your site,
# be carefull to use the 'includeSubdomains' options
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";

# Enable OSCP Stapling for Nginx web server
# If you're using the SSL from Letsencrypt,
# use the 'chain.pem' certificate
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/hakase-labs.io/chain.pem;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;

# XSS Protection for Nginx web server
add_header X-Frame-Options DENY;
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options nosniff;
add_header X-Robots-Tag none;

Speichern und beenden.

Hinweis:

  • Geben Sie die TLS-Versionen für die Website an, akzeptieren Sie nur die TLSv1 TLSv1.1 TLSv1.2.
  • Geben Sie die SSL-Ciphersuite an, und es wird empfohlen, die SSL-Ciphersuite des Mozilla-Vorschlags zu verwenden, um die Kompatibilität aller Geräte zu gewährleisten.
  • Aktivieren Sie HSTS, OSCP Stapling und fügen Sie den XSS-Schutz hinzu.

Schritt 5 – Nginx Virtual Host mit SSL konfigurieren

In diesem Schritt erstellen wir eine virtuelle Hostdatei für den Domänennamen. Wir erstellen einen neuen virtuellen Host, eine Domain namens hakase-labs.io, und sein Web-Root-Verzeichnis befindet sich im Verzeichnis’/var/wwww/site01′.

Erstellen Sie das neue Verzeichnis ‚/var/wwww/site01′ und erstellen Sie die Datei’index.html‘ darin.

mkdir -p /var/www/site01
echo '<h1><center>Nginx - Letsencrypt - A+</center></h1>' > /var/www/site01/index.html

Gehen Sie nun in das Konfigurationsverzeichnis von ‚/etc/nginx‘ und erstellen Sie eine neue virtuelle Hostdatei namens ‚hakase-labs.io‘ für ubuntu und ‚hakase-labs.conf‘ für das CentOS 7-System.

Am Ubuntu 18.04.

cd /etc/nginx/
vim sites-available/hakase-labs.io

Unter CentOS 7.5

cd /etc/nginx/
vim conf.d/hakase-labs.conf

Fügen Sie dort die folgende exemplarische Nginx Virtual Host-Konfiguration ein.

server {
    listen 80;
    listen [::]:80;
    server_name hakase-labs.io;

    return 301 https://$host$request_uri;
}

server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;

        root   /var/www/site01;
        index index.html index.php index.htm;

        server_name  hakase-labs.io;
        error_log /var/log/nginx/hakase-error.log warn;

        ssl_certificate /etc/letsencrypt/live/hakase-labs.io/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/hakase-labs.io/privkey.pem;

        #SSL Configuration
        include snippets/ssl.conf;

        location ~ /.well-known {
                allow all;
        }


        location / {
            try_files $uri $uri/ =404;
        }


        location = /favicon.ico {
                log_not_found off;
                access_log off;
        }

        location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        }

        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                expires max;
                log_not_found off;
        }

}

Speichern und beenden.

Hinweis:

  • Ändern Sie die Zeile’include snippets/ssl.conf;‘. Wenn Sie Ubuntu verwenden, lassen Sie es als Standard. Und wenn Sie CentOS verwenden, ändern Sie das Verzeichnis auf’default.d/ssl.conf‘.

Nur auf Ubuntu System

Aktivieren Sie die neue virtuelle Hostdatei und testen Sie die Konfiguration, und stellen Sie sicher, dass kein Fehler vorliegt.

ln -s /etc/nginx/sites-available/hakase-labs.io /etc/nginx/sites-enabled/
nginx -t

Starten Sie nun den nginx-Dienst neu.

systemctl restart nginx

Der neue virtuelle Host mit aktiviertem HTTPS und einer zusätzlichen SSL-Konfiguration wurde erstellt.

Überprüfen Sie mit dem Befehl netstat und Sie erhalten den HTTPS-Port 443 auf der Liste.

netstat -plntu

Nginx konfigurieren

Schritt 6 – Prüfung

Öffnen Sie Ihren Webbrowser und geben Sie den Namen Ihrer Domain ein, meine ist’http://hakase-labs.io‘.

nginx testen

Sie werden dann zur HTTPS-Verbindung weitergeleitet.

Gehen Sie nun auf die SSL-Testseite‘https://www.ssllabs.com/ssltest/‚ und geben Sie Ihren eigenen Domainnamen ein, und warten Sie dann, bis Sie die Ergebnisse erhalten.

Nachfolgend ist mein Ergebnis bei der Verwendung der „Mozilla Ciphersuite Recommendation“.

A+ Ergebnis aus SSL Labs

Und folgendes ist mein Ergebnis bei der Verwendung der’Cipher.li Ciphersuite Recommendation‘.

Mit Cipher.li Ciphersuite Empfehlung

Sie werden sehen, dass alle Ergebnisse A+-Ergebnisse haben und sich nur in der Chiffrierstärke bei den Mozilla-Empfehlungen und der Empfehlung Cipherli.st unterscheiden.

Um die OSCP-Heftung und die HSTS auf dem Server zu überprüfen, scrollen Sie auf der Testergebnisseite und Sie erhalten das Ergebnis wie unten gezeigt.

OSCP-Heftung

Wenn Sie die OSCP-Heftung von der Befehlszeile aus überprüfen möchten, überprüfen Sie sie mit dem folgenden Befehl.

echo QUIT | openssl s_client -connect hakase-labs.io:443 -status 2> /dev/null | grep -A 17 'OCSP response:' | grep -B 17 'Next Update'

Überprüfen Sie die OSCP-Heftung von der Befehlszeile aus.

Für den HSTS-Test überprüfen Sie ihn mit dem untenstehenden Curl-Befehl.

curl -s -D- https://hakase-labs.io | grep -i Strict

HSTS-Prüfung

Die Installation und Konfiguration des Nginx-Webservers mit SSL-Letsencrypt sowie das Erhalten des A+ aus dem SSLabs-Test wurden erfolgreich abgeschlossen.

Referenzen

Das könnte dich auch interessieren …