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

Verwendung des MySQL Query Rewrite-Plugins

Plugin zum Umschreiben von Abfragen Ab MySQL 5.7....

Warum wird mir die Zugriffsschnittstelle für Docker Tomcat nicht angezeigt?

Frage: Kann der Ursprungsserver keine Darstellung...

Scrollen von HTML-Marquee-Zeichenfragmenten

Seine Eigenschaften sind wie folgt: Richtung Stell...

CenterOS7 Installations- und Konfigurationsumgebung jdk1.8 Tutorial

1. Deinstallieren Sie zuerst das mit CenterOS gel...

Zusammenfassung der Anwendungsbereiche von Kubernetes

Kubernetes ist aufgrund seiner Anwendungsportabil...

Beheben von Problemen mit hoher MySQL-CPU-Auslastung

Hohe CPU-Last durch MySQL Heute Nachmittag habe i...

JavaScript-Funktion Currying

Inhaltsverzeichnis 1 Was ist Funktions-Currying? ...

Wie füge ich ein Website-Symbol hinzu?

Der erste Schritt besteht darin, eine Software zur...

So verwenden Sie Docker-Compose zum Erstellen eines ELK-Clusters

Auf alle Orchestrierungsdateien und Konfiguration...

50 wunderschöne FLASH-Website-Designbeispiele

Mit Flash konnten Designer und Entwickler umfangr...