Nginx-Konfiguration und -Kompatibilität mit der Codeanalyse der HTTP-Implementierung

Nginx-Konfiguration und -Kompatibilität mit der Codeanalyse der HTTP-Implementierung

Generieren Sie SSL-Schlüssel und CSR-Datei mit OpenSSL

Um HTTPS zu konfigurieren, benötigen Sie die Datei example.key des privaten Schlüssels und die Datei example.crt des Zertifikats. Wenn Sie eine Zertifikatsdatei beantragen, benötigen Sie die Datei example.csr. Der Befehl OpenSSL kann die Datei example.key und die Datei example.csr des Zertifikats generieren.

CSR: Certificate Signing Request, eine Zertifikatsignieranforderungsdatei, die den DN (Distinguished Name) und die öffentlichen Schlüsselinformationen des Antragstellers enthält und angegeben werden muss, wenn eine Zertifizierungsstelle eines Drittanbieters ein Zertifikat signiert. Nach Erhalt des CSR verwendet die Zertifizierungsstelle ihren privaten Stammzertifikatsschlüssel, um das Zertifikat zu verschlüsseln und eine CRT-Zertifikatsdatei zu generieren, die die Zertifikatsverschlüsselungsinformationen sowie den DN und die öffentlichen Schlüsselinformationen des Antragstellers enthält.

Schlüssel: Die private Schlüsseldatei des Zertifikatsantragstellers, die zusammen mit dem öffentlichen Schlüssel im Zertifikat verwendet wird. Im HTTPS-Kommunikationsprozess „Handshake“ wird der private Schlüssel benötigt, um die vom Client gesendeten Zufallszahleninformationen zu entschlüsseln, die mit dem öffentlichen Schlüssel des Zertifikats verschlüsselt sind. Dies ist eine sehr wichtige Datei im verschlüsselten HTTPS-Kommunikationsprozess und wird bei der Konfiguration von HTTPS verwendet.

Verwenden Sie den OpenSSl-Befehl, um die Dateien example.key und example.csr im aktuellen Verzeichnis des Systems zu generieren:

openssl req -new -newkey rsa:2048 -sha256 -nodes -out example_com.csr -keyout example_com.key -subj "/C=CN/ST=ShenZhen/L=ShenZhen/O=Example Inc./OU=Web Security/CN=example.com"

Die Bedeutung der entsprechenden Felder des obigen Befehls ist wie folgt:

  • C: Land, das Land, in dem sich die Einheit befindet. Es handelt sich um eine zweistellige Länderabkürzung, z. B.: CN ist China
  • ST-Feld: Staat/Provinz, der Staat oder die Provinz, in der sich die Einheit befindet
  • L-Feld: Ort, die Stadt und/oder der Landkreis, in dem sich die Einheit befindet
  • O-Feld: Organisation, der Name der Organisation dieser Website;
  • OU-Feld: Organisationseinheit, der Name der untergeordneten Abteilung; wird häufig auch verwendet, um andere zertifikatsbezogene Informationen anzuzeigen, wie etwa Zertifikatstyp, Zertifikatsproduktname oder Authentifizierungstyp bzw. Verifizierungsinhalt;
  • CN-Feld: Common Name, der Domänenname der Website;

Nachdem Sie die CSR-Datei generiert haben, stellen Sie sie der CA-Organisation zur Verfügung. Nach erfolgreicher Signierung erhalten Sie eine example.crt-Zertifikatsdatei. Nachdem Sie die SSL-Zertifikatsdatei erhalten haben, können Sie HTTPS in der Nginx-Konfigurationsdatei konfigurieren.

HTTPS konfigurieren

Grundkonfiguration

Um den HTTPS-Dienst zu aktivieren, müssen Sie im Informationsblock der Konfigurationsdatei (Serverblock) den SSL-Parameter des Listen-Befehls verwenden und die Server-Zertifikatsdatei und die private Schlüsseldatei wie unten gezeigt definieren:

	
Server {
  #SSL-Parameter listen 443 SSL;
  Servername Beispiel.com;
  #Zertifikatsdatei ssl_certificate example.com.crt;
  #Private Schlüsseldatei ssl_certificate_key example.com.key;
  SSL-Protokolle TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers HOCH:!aNULL:!MD5;
  #...
}

Die Zertifikatsdatei wird als öffentliche Entität an jeden mit dem Server verbundenen Client gesendet. Die private Schlüsseldatei sollte als Sicherheitsentität in einer Verzeichnisdatei mit bestimmten Berechtigungsbeschränkungen gespeichert werden und sicherstellen, dass der Nginx-Hauptprozess über Zugriffsberechtigungen verfügt.

Die private Schlüsseldatei kann auch in derselben Datei wie die Zertifikatsdatei abgelegt werden, wie unten gezeigt:

SSL-Zertifikat www.example.com.cert;
ssl_zertifikatsschlüssel www.example.com.cert;

In diesem Fall sollte auch die Leseberechtigung der Zertifikatsdatei eingeschränkt werden, sodass, obwohl Zertifikat und privater Schlüssel in derselben Datei gespeichert sind, nur das Zertifikat an den Client gesendet wird.

Mit den Befehlen ssl_protocols und ssl_ciphers können Verbindungen auf die Verwendung erweiterter Versionen und Algorithmen von SSL/TLS beschränkt werden. Die Standardwerte sind wie folgt:

SSL-Protokolle TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HOCH:!aNULL:!MD5;

Da sich die Standardwerte dieser beiden Befehle mehrmals geändert haben, wird nicht empfohlen, sie explizit zu definieren, es sei denn, es müssen zusätzliche Werte definiert werden, z. B. die Definition des DH-Algorithmus:

#DH-Datei verwenden
ssl_dhparam /etc/ssl/certs/dhparam.pem;
SSL-Protokolle TLSv1 TLSv1.1 TLSv1.2;
#Definieren Sie den Algorithmus
ssl_ciphers „EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4“;
#...

Erzwingen Sie HTTP zu HTTPS

Konfigurieren Sie außerdem einen Serverblock, hören Sie Port 80 ab und fügen Sie Rewrite hinzu.

Server { 
  hören Sie 80;
  Servername Server-IP;   
  rewrite ^(.*)$ https://$host$1 permanent; #Erzwinge http zu https
}

Serverkonfigurationsreferenz

Server { 
  hören Sie 80;
  Servername Server-IP;   
  rewrite ^(.*)$ https://$host$1 permanent; #Erzwinge http zu https
}
Server {
  Zeichensatz UTF-8; #Serverkodierung abhören 443 SSL; #Abhöradresse Servername Server-IP; #Domänenname der an das Zertifikat gebundenen Website Server-Tokens aus; #Nginx-Versionsnummer verbergen #SSL-Konfiguration SSL-Zertifikat /etc/ssl/certs/nginx-selfsigned.crt; #öffentlicher Schlüssel des Zertifikats SSL-Zertifikatschlüssel /etc/ssl/private/nginx-selfsigned.key; #privater Schlüssel des Zertifikats SSL-Sitzungstimeout 5 m;
  SSL-Verschlüsselung SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
  SSL-Protokolle TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers aus;
  ssl_dhparam /etc/nginx/dhparams.pem;  

  #Anforderungsheader add_header Strict-Transport-Security max-age=63072000;
  add_header X-Frame-Optionen SAMEORIGIN;
  add_header Content-Security-Policy "default-src ‚self‘ http: https: data: blob: ‚unsafe-inline‘" immer;
  add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; Modus=Block";
  add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
  Fügt dem Cookie eine neue Adresse hinzu.
  add_header Set-Cookie "Sicher";
  
  #Einschränkungen für Anforderungsmethoden## Erlauben Sie nur diese Anforderungsmethoden ##
   wenn ($Anfragemethode !~ ^(GET|POST|DELETE|PUT|PATCH)$ ) {
     Rückgabe 444;
   }
  
  #Zugriffspfad passend zum Standort / {
    root /usr/share/nginx/html; #Site-Verzeichnisindex index.html index.htm;
  }
  Standort /test/ {
     proxy_pass http://127.0.0.1:8100/; #Lokalen Port 8100 weiterleiten
  }
 
  #Zugriff auf den Pfad verbieten# location /dirdeny {
  # alles ablehnen;
  # Rückgabe 403;
  #}

  #Fehlerseitenkonfiguration error_page 502 503 504 /error502.html;
    Standort = /error502.html{
    root /usr/share/nginx/html;
  }
  Fehlerseite 500 /error.html;
   Standort = /error.html{
      root /usr/share/nginx/html;
    }
  Fehlerseite 404 /notfind.html;
   Standort = /notfind.html{
      root /usr/share/nginx/html;
    }
}

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Nginx-Grundlagen-Tutorial
  • Nginx-Konfiguration – Erste Schritte
  • Erste Schritte mit dem nginx HTTP Server unter Windows
  • Was ist Nginx-Lastausgleich und wie wird er konfiguriert?
  • So implementieren Sie die Komprimierung von Webseiten im Nginx-Optimierungsdienst
  • Sechs Methoden zur Nginx-Optimierung
  • Detaillierte Erklärung, wie Nginx das Problem des domänenübergreifenden Zugriffs auf Front-End-Ressourcen löst
  • Lösen Sie das Problem, dass Nginx nach der Konfiguration von proxy_pass 404 zurückgibt
  • Begrenzung der Anzahl kurzfristiger Zugriffe auf eine bestimmte IP basierend auf Nginx
  • Schnellstart-Tutorial zum Nginx-Dienst

<<:  Implementierung einer Fuzzy-Abfrage wie %% in MySQL

>>:  Tutorial zur HTML-Tabellenauszeichnung (4): Rahmenfarbenattribut BORDERCOLOR

Artikel empfehlen

So verwenden Sie Shell-Skripte in Node

Hintergrund Während der Entwicklung benötigen wir...

Detaillierte Erläuterung der JavaScript-Implementierung der Hash-Tabelle

Inhaltsverzeichnis 1. Hash-Tabellenprinzip 2. Das...

Installation von mysql-community-server.5.7.18-1.el6 unter centos 6.5

Verwenden Sie den folgenden Befehl, um zu überprü...

Tägliche Studiennotizen im HTML-Designmuster

Studiennotizen zu HTML-Entwurfsmustern Diese Woch...

Einige Tipps zum Website-Design

Tatsächlich haben wir in letzter Zeit viel über W...

jQuery verwendet das Canvas-Tag, um den Bestätigungscode zu zeichnen

Das <canvas>-Element ist für clientseitige ...

HTML-Tabellen-Tag-Tutorial (45): Tabellen-Body-Tag

Mit dem Tag <tbody> wird der Stil des Tabel...

Lösung für VMware Workstation Pro, das unter Windows nicht läuft

Hat jemand von Ihnen nach dem Nationalfeiertag fe...

Super detaillierter GCC-Upgrade-Prozess unter Linux

Inhaltsverzeichnis Vorwort 1. Aktuelle gcc-Versio...

js realisiert die Lupenfunktion der Shopping-Website

In diesem Artikel wird der spezifische Code von j...

Der beste Weg, um den 1px-Rand auf Mobilgeräten zu lösen (empfohlen)

Bei der Entwicklung für Mobilgeräte tritt häufig ...