SSL (steht für Secure Socket Layer) ist ein Webprotokoll, das den Datenverkehr zwischen Server und Client durch Verschlüsselung sicher macht. Server und Clients übertragen den Datenverkehr sicher, ohne dass das Kommunikationsrisiko von Dritten interpretiert wird. Es hilft dem Kunden auch, die Identität der Website zu überprüfen, mit der er kommuniziert.
In diesem Beitrag werden wir beschreiben, wie SSL für nginx eingerichtet wird. Wir werden das Verfahren unter Verwendung des selbstsignierten Zertifikats demonstrieren. Ein selbstsigniertes Zertifikat verschlüsselt nur die Verbindung, bestätigt jedoch nicht die Identität Ihres Servers. Daher sollte es nur für Testumgebungen oder für interne LAN -Dienste verwendet werden. Für die Produktionsumgebung ist es besser, die von CA (Certificate Authority) unterzeichneten Zertifikate zu verwenden.
Voraussetzungen
Für diesen Beitrag sollten Sie die folgenden Voraussetzungen haben:
Das hier erläuterte Verfahren wurde durchgeführt Debian 10 (Buster) Maschine.
Schritt 1: Erzeugen eines selbstsignierten Zertifikats
Unser erster Schritt wird darin bestehen, ein selbstsigniertes Zertifikat zu generieren. Geben Sie den folgenden Befehl im Terminal aus, um CSR (Zertifikatsignalanforderung) und einen Schlüssel zu generieren:
$ sudo opensensl req -x509 -nodes -days 365 -Newkey RSA: 2048 -keyout/etc/ssl/privat/selfsigned -nginx.Key -out/etc/ssl/certs/selfsigned -nginx.crt
Sie werden aufgefordert, einige Informationen wie Ihren Ländernamen, Ihren Staat, den Ort, Ihren gemeinsamen Namen (Ihren Domänennamen oder Ihre IP -Adresse) und die E -Mail -Adresse bereitzustellen.
Im obigen Befehl erstellt OpenSSL die folgenden zwei Dateien:
Erstellen Sie nun die Dhparam.PEM -Datei Verwenden des folgenden Befehls:
$ sudo opensensl dhparam -out/etc/ssl/certs/dhparam.PEM 2048
Schritt 2: Konfigurieren von nginx zur Verwendung von SSL
Im vorherigen Schritt haben wir den CSR und den Schlüssel erstellt. In diesem Schritt konfigurieren wir die NGINX für die Verwendung von SSL. Hierzu erstellen wir ein Konfigurationsausschnitt und fügen Informationen zu unseren SSL -Zertifikatdateien und wichtigen Stellen hinzu.
Geben Sie den folgenden Befehl im Terminal aus, um ein neues Konfigurationsausschnitt zu erstellen selbst signiert.Conf -Datei im /etc/nginx/snippets.
$ sudo nano/etc/nginx/snippets/selbstsigniert.Conf
Fügen Sie in der Datei die folgenden Zeilen hinzu:
ssl_certificate/etc/ssl/certs/selfsigned-nginx.CRT;
ssl_certificate_key/etc/ssl/privat/selfsigned-nginx.Taste;
Der SSL_Certificate ist eingestellt auf selbstsigniert-nginx.crt (Zertifikatdatei), während die ssl_certificate_key ist eingestellt auf selbstsigniert-nginx.Taste (Schlüsseldatei).
Speichern und schließen Sie die selbst signiert.Conf Datei.
Jetzt werden wir eine weitere Snippet -Datei erstellen SSL-Params.Conf und konfigurieren Sie einige grundlegende SSL -Einstellungen. Geben Sie den folgenden Befehl im Terminal aus, um die zu bearbeiten SSL-Params.Conf Datei:
$ sudo nano/etc/nginx/snippets/ssl-params.Conf
Fügen Sie der Datei den folgenden Inhalten hinzu:
SSL_Protocols TLSV1.2;
ssl_prefer_server_ciphers on;
ssl_dhparam/etc/ssl/certs/dhparam.Pem;
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 SHAA384;
SSL_ECDH_CURVE SECP384R1;
ssl_session_timeout 10m;
SSL_Session_Cache Shared: SSL: 10m;
ssl_session_tickets off;
# SSL_Stapling auf;
# ssl_stapling_verify on;
Resolver 8.8.8.8 8.8.4.4 gültig = 300s;
Resolver_Timeout 5S;
add_header x-rame-options leugnen;
add_header x-content-optionen nosniff;
add_Header x-XSS-Protektion "1; modus = block";
Da wir kein CA-signiertes Zertifikat verwenden, haben wir das SSL-Heften deaktiviert. Wenn Sie ein CA-signiertes Zertifikat verwenden, wenden Sie sich an die SSL_Stapling Eintrag.
Schritt 3: Konfigurieren des Nginx für die Verwendung von SSL
Jetzt öffnen wir die Konfigurationsdatei nginx Server -Block -Konfiguration, um einige Konfigurationen zu erstellen. In diesem Schritt gehen wir davon aus, dass Sie den Serverblock bereits eingerichtet haben, der dem ähnelt:
Server
Hören Sie 80;
Hören Sie [::]: 80;
root/var/www/test.org/html;
Indexindex.HTML -Index.HTM -Index.nginx-debian.html;
Server_Name -Test.org www.prüfen.org;
Standort /
try_files $ uri $ uri/ = 404;
Verwenden Sie den folgenden Befehl, um die Konfigurationsdatei Nginx Server Block zu öffnen:
$ sudo nano/etc/nginx/sites-verfügbare/test.Org
Ändern Sie nun die vorhandenen Server Block, damit es so aussieht:
Server
Hören Sie 443 SSL;
Hören [::]: 443 SSL;
Snippets/Selbst signiert einschließen.conf;
Fügen Sie Snippets/SSL-Params ein.conf;
root/var/www/test.org/html;
Indexindex.HTML -Index.HTM -Index.nginx-debian.html;
Server_Name -Test.org www.prüfen.org;
In den obigen Konfigurationen haben wir auch die SSL -Snippets hinzugefügt selbst signiert.Conf Und SSL-Params.Conf dass wir früher konfiguriert haben.
Als nächstes fügen Sie a hinzu Zweiter Server Block.
Server
Hören Sie 80;
Hören Sie [::]: 80;
Server_Name -Test.org www.prüfen.org;
Rückgabe 302 https: // $ server_name $ request_uri;
In der obigen Konfiguration, Rückkehr 302 leitet das HTTP in HTTPS um.
Notiz: Stellen Sie sicher, dass Sie den Test ersetzen.Org mit Ihrem eigenen Domain -Namen. Speichern und schließen Sie nun die Datei.
Schritt 4: Lassen Sie den SSL -Verkehr durch Firewall
Wenn eine Firewall in Ihrem System aktiviert ist, müssen Sie den SSL -Datenverkehr über ihn zulassen. Nginx bietet Ihnen drei verschiedene Profile mit UFW. Sie können sie mit dem folgenden Befehl in Terminal anzeigen:
$ sudo UFW App -Liste
Sie sehen die folgende Ausgabe mit drei Profilen für den Nginx -Verkehr.
Sie müssen das Profil „Nginx voll“ in der Firewall zulassen. Verwenden Sie dazu den folgenden Befehl:
$ sudo ufw erlauben 'nginx full'
Um zu überprüfen, ob das Profil in der Firewall zulässig ist, verwenden Sie den folgenden Befehl:
$ sudo UFW Status
Schritt 5: Testen Sie die NGINX -Konfigurationsdatei
Testen Sie nun die NGINX -Konfigurationsdatei mit dem folgenden Befehl in Terminal:
$ sudo nginx -t
Sie sollten die folgende Ausgabe sehen.
Erstellen Sie nun die symbolische Verbindung zwischen Websites und Websites fähig:
$ ln -s/etc/nginx/seites -verfügbare/test.com/etc/nginx/sites-fähig/
Starten Sie dann den NGINX -Dienst neu, um die Konfigurationsänderungen anzuwenden. Verwenden Sie den Befehl unten, um dies zu tun:
$ sudo systemctl starten nginx neu
Schritt 6: SSL testen
Um die SSL zu testen, navigieren Sie zu der folgenden Adresse:
https: // domain-or-ip-Adresse
Da wir das selbstsignierte Zertifikat eingerichtet haben, werden wir daher eine Warnung sehen, dass die Verbindung nicht sicher ist. Die folgende Seite wird angezeigt, wenn der Mozilla Firefox -Browser verwendet wird.
Drücke den Fortschrittlich Taste.
Klicken Ausnahme hinzufügen.
Dann klick Bestätigen Sie die Sicherheitsausnahme.
Jetzt sehen Sie Ihre HTTPS -Site, aber mit einem Warnschild (Sperren mit einem gelben Warnschild) über die Sicherheit Ihrer Website.
Überprüfen Sie außerdem, ob die Weiterleitung korrekt funktioniert, indem Sie mit HTTP auf Ihre Domäne oder IP -Adresse zugreifen.
http: // domain-or-ip-Adresse
Wenn Ihre Website nun automatisch auf HTTPS weiterleitet, bedeutet dies, dass die Umleitung korrekt funktioniert. Um die Umleitung dauerhaft zu konfigurieren, bearbeiten Sie die Server -Block -Konfigurationsdatei mit dem folgenden Befehl in Terminal:
$ sudo nano/etc/nginx/sites-verfügbare/test.Org
Ändern Sie nun die Rückkehr 302 zurückgeben 301 in der Datei und dann speichern und schließen Sie sie.
So können Sie SSL für Nginx im Debian 10 -System einrichten. Wir haben das selbstsignierte Zertifikat zur Demonstration eingerichtet. Wenn Sie sich in einer Produktionsumgebung befinden, entscheiden Sie sich immer für ein CA -Zertifikat.