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:
Die Bedeutung der entsprechenden Felder des obigen Befehls ist wie folgt:
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:
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:
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:
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:
|
<<: Implementierung einer Fuzzy-Abfrage wie %% in MySQL
>>: Tutorial zur HTML-Tabellenauszeichnung (4): Rahmenfarbenattribut BORDERCOLOR
Hintergrund Während der Entwicklung benötigen wir...
Inhaltsverzeichnis 1. Hash-Tabellenprinzip 2. Das...
Verwenden Sie den folgenden Befehl, um zu überprü...
Studiennotizen zu HTML-Entwurfsmustern Diese Woch...
Durch die Verwendung von iFrames können problemlo...
Tatsächlich haben wir in letzter Zeit viel über W...
Inhaltsverzeichnis 1. Einleitung 2. Aggregation v...
Hallo zusammen, ich frage mich, ob ihr die gleich...
Das <canvas>-Element ist für clientseitige ...
Mit dem Tag <tbody> wird der Stil des Tabel...
Hat jemand von Ihnen nach dem Nationalfeiertag fe...
Inhaltsverzeichnis Vorwort 1. Aktuelle gcc-Versio...
In diesem Artikel wird der spezifische Code von j...
Bei der Entwicklung für Mobilgeräte tritt häufig ...
Wenn ich irgendwelche unklaren Fragen habe, gehe ...