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?
- Nginx Web Server installieren
- Firewall UFW/Firewalld konfigurieren
- Installieren Sie let’s encrypt und generieren Sie SSL-Zertifikate.
- Konfigurieren Sie Secure SSL
- Nginx Virtual Host mit SSL konfigurieren
- 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
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
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.
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.
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
Schritt 6 – Prüfung
Öffnen Sie Ihren Webbrowser und geben Sie den Namen Ihrer Domain ein, meine ist’http://hakase-labs.io‘.
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“.
Und folgendes ist mein Ergebnis bei der Verwendung der’Cipher.li Ciphersuite Recommendation‘.
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.
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'
Für den HSTS-Test überprüfen Sie ihn mit dem untenstehenden Curl-Befehl.
curl -s -D- https://hakase-labs.io | grep -i Strict
Die Installation und Konfiguration des Nginx-Webservers mit SSL-Letsencrypt sowie das Erhalten des A+ aus dem SSLabs-Test wurden erfolgreich abgeschlossen.