Nginx

Nginx SSL-Setup unter Linux

Nginx SSL-Setup unter Linux

SSL (steht für Secure Socket Layer) ist ein Webprotokoll, das den Verkehr zwischen Server und Client durch Verschlüsselung sicher macht. Server und Clients übertragen den Datenverkehr sicher, ohne dass die Kommunikation von Dritten interpretiert wird. Es hilft dem Kunden auch, die Identität der Website zu überprüfen, mit der er kommuniziert verify.

In diesem Beitrag beschreiben wir, wie Sie SSL für Nginx einrichten. Wir demonstrieren das Verfahren anhand des selbstsignierten Zertifikats. Ein selbstsigniertes Zertifikat verschlüsselt nur die Verbindung, validiert 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 der CA (Zertifizierungsstelle) signierten Zertifikate zu verwenden.

Voraussetzungen

Für diesen Beitrag sollten Sie folgende Voraussetzungen mitbringen:

Das hier beschriebene Verfahren wurde durchgeführt am Debian 10 (Buster) Maschine.

Schritt 1: Generieren eines selbstsignierten Zertifikats

Unser erster Schritt besteht darin, ein selbstsigniertes Zertifikat zu generieren. Geben Sie den folgenden Befehl im Terminal aus, um eine CSR (Certificate Signing Request) und einen Schlüssel zu generieren:

$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/selfsigned-nginx.key -out /etc/ssl/certs/selfsigned-nginx.crt

Sie werden aufgefordert, einige Informationen wie Ihren Ländernamen, Bundesstaat, Ort, Ihren allgemeinen Namen (Ihren Domainnamen oder Ihre IP-Adresse) und Ihre E-Mail-Adresse anzugeben.

Im obigen Befehl erstellt OpenSSL die folgenden zwei Dateien:

Erstellen Sie nun die dhparam.pem-Datei mit dem folgenden Befehl:

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Schritt 2: Konfigurieren von Nginx für die Verwendung von SSL

Im vorherigen Schritt haben wir den CSR und den Schlüssel erstellt. In diesem Schritt konfigurieren wir nun Nginx für die Verwendung von SSL configure. Dazu erstellen wir ein Konfigurations-Snippet und fügen Informationen zu unseren SSL-Zertifikatsdateien und Schlüsselstandorten hinzu.

Geben Sie den folgenden Befehl im Terminal aus, um ein neues Konfigurations-Snippet zu erstellen selbstsigniert.conf-Datei in dem /etc/nginx/schnipsel.

$ sudo nano /etc/nginx/snippets/self-signed.conf

Fügen Sie in der Datei die folgenden Zeilen hinzu:

ssl_certificate /etc/ssl/certs/selfsigned-nginx.crt;
ssl_certificate_key /etc/ssl/private/selfsigned-nginx.Schlüssel;

Das SSL-Zertifikatl ist eingestellt auf selbstsigniert-nginx.crt (Zertifikatsdatei) während die ssl_certificate_key ist eingestellt auf selbstsigniert-nginx.Schlüssel (Schlüsseldatei).

Speichern und schließen Sie die selbstsigniert.conf Datei.

Jetzt erstellen wir eine weitere Snippet-Datei SSL-Parameterl.conf und konfigurieren Sie einige grundlegende SSL-Einstellungen. Geben Sie den folgenden Befehl im Terminal aus, um die zu bearbeiten SSL-Parameter.conf Datei:

$ sudo nano /etc/nginx/snippets/ssl-params.conf

Fügen Sie der Datei folgenden Inhalt hinzu:

SSL_Protokolle TLSv1.2;
ssl_prefer_server_chiffren an;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_chiffren ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
ssl_ecdh_curve secp384r1;
ssl_session_timeout 10 m;
ssl_session_cache freigegeben:SSL:10m;
ssl_session_tickets aus;
# ssl_heftung an;
# ssl_stapling_verify an;
Resolver 8.8.8.8 8.8.4.4 gültig=300s;
Auflöser_Zeitüberschreitung 5s;
add_header X-Frame-Optionen VERWEIGERN;
add_header X-Inhaltstyp-Optionen nosniff;
add_header X-XSS-Schutz "1; mode=block";

Da wir kein CA-signiertes Zertifikat verwenden, haben wir die SSL-Stapelung deaktiviert. Wenn Sie ein CA-signiertes Zertifikat verwenden, entkommentieren Sie das ssl_heftung Eintrag.

Schritt 3: Konfigurieren von Nginx für die Verwendung von SSL

Jetzt öffnen wir die Konfigurationsdatei des Nginx-Serverblocks, um einige Konfigurationen vorzunehmen.  In diesem Schritt gehen wir davon aus, dass Sie den Serverblock bereits eingerichtet haben, der ungefähr so ​​​​aussehen wird:

Server
hören 80;
zuhören [::]:80;
root /var/www/test.org/html;
Indexindex.HTML-Index.htm-index.nginx-debian.html;
server_name test.org www.Prüfung.org;
Lage /
try_files $uri $uri/ =404;

Um die Konfigurationsdatei des Nginx-Serverblocks zu öffnen, verwenden Sie den folgenden Befehl:

$ sudo nano /etc/nginx/sites-available/test.org

Ändern Sie nun das vorhandene Server blockieren, damit es so aussieht:

Server
hören 443 ssl;
anhören [::]:443 ssl;
Snippets/selbstsignierte einschließen.conf;
Snippets/ssl-params einschließen.conf;
root /var/www/test.org/html;
Indexindex.HTML-Index.htm-index.nginx-debian.html;
server_name test.org www.Prüfung.org;

In den obigen Konfigurationen haben wir auch die SSL-Snippets hinzugefügt selbstsigniert.conf und SSL-Parameterl.conf die wir zuvor konfiguriert haben.

Als nächstes fügen Sie a . hinzu Zweiter Server Block.

Server
hören 80;
zuhören [::]:80;
server_name test.org www.Prüfung.org;
302 https://$server_name$request_uri zurückgeben;

In der obigen Konfiguration, zurück 302 leitet das HTTP auf HTTPS um.

Hinweis: Stellen Sie sicher, dass Sie den Test ersetzen.org mit Ihrem eigenen Domainnamen. Speichern und schließen Sie nun die Datei.

Schritt 4: SSL-Datenverkehr durch die Firewall zulassen

Wenn auf Ihrem System eine Firewall aktiviert ist, müssen Sie SSL-Verkehr zulassen.  Nginx stellt dir mit ufw drei verschiedene Profile zur Verfügung. Sie können sie mit dem folgenden Befehl im Terminal anzeigen:

$ sudo ufw App-Liste

Sie sehen die folgende Ausgabe mit drei Profilen für den Nginx-Datenverkehr.

Sie müssen das Profil „Nginx Full“ 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 zugelassen wurde, verwenden Sie den folgenden Befehl:

$ sudo ufw-Status

Schritt 5: NGINX-Konfigurationsdatei testen

Testen Sie nun die Nginx-Konfigurationsdatei mit dem folgenden Befehl im Terminal:

$ sudo nginx -t

Sie sollten die folgende Ausgabe sehen.


Erstellen Sie nun den symbolischen Link zwischen verfügbaren Sites und aktivierten Sites:

$ ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/

Starten Sie dann den Nginx-Dienst neu, um die Konfigurationsänderungen zu übernehmen. Verwenden Sie dazu den folgenden Befehl:

$ sudo systemctl nginx neu starten

Schritt 6: SSL testen

Um nun das SSL zu testen, navigieren Sie zu der folgenden Adresse:

https://Domäne-oder-IP-Adresse

Da wir das selbstsignierte Zertifikat eingerichtet haben, sehen wir daher eine Warnung, dass die Verbindung nicht sicher ist. Die folgende Seite wird angezeigt, wenn Sie den Browser Mozilla Firefox verwenden.

Drücke den Fortgeschritten Taste.

Klicken Ausnahme hinzufügen.

Dann klick Sicherheitsausnahme bestätigen.

Jetzt sehen Sie Ihre HTTPS-Site, jedoch mit einem Warnzeichen (Schloss mit gelbem Warnzeichen) über die Sicherheit Ihrer Website.

Überprüfen Sie auch, ob die Weiterleitung korrekt funktioniert, indem Sie mit http . auf Ihre Domain oder IP-Adresse zugreifen.

http://Domäne-oder-IP-Adresse

Wenn Ihre Site nun automatisch auf HTTPS umleitet, bedeutet dies, dass die Umleitung korrekt funktioniert hat. Um die Umleitung dauerhaft zu konfigurieren, bearbeiten Sie die Serverblock-Konfigurationsdatei mit dem folgenden Befehl im Terminal:

$ sudo nano /etc/nginx/sites-available/test.org

Jetzt die Rückgabe ändern 302 zurückgeben 301 in der Datei und dann speichern und schließen.

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, sollten Sie sich immer für ein CA-Zertifikat entscheiden.

Open-Source-Ports kommerzieller Spiele-Engines
Kostenlose, quelloffene und plattformübergreifende Spiel-Engine-Nachbildungen können verwendet werden, um sowohl alte als auch einige der relativ neue...
Beste Befehlszeilenspiele für Linux
Die Befehlszeile ist nicht nur Ihr größter Verbündeter bei der Verwendung von Linux – sie kann auch eine Quelle der Unterhaltung sein, da Sie damit vi...
Beste Gamepad-Mapping-Apps für Linux
Wenn du Spiele unter Linux gerne mit einem Gamepad statt mit einem typischen Tastatur- und Maus-Eingabesystem spielst, gibt es einige nützliche Apps f...