So konfigurieren Sie die bidirektionale Zertifikatsüberprüfung auf dem Nginx-Proxyserver

So konfigurieren Sie die bidirektionale Zertifikatsüberprüfung auf dem Nginx-Proxyserver

Generieren einer Zertifikatskette

Verwenden Sie das Skript, um ein Stammzertifikat, ein Zwischenzertifikat und drei Client-Zertifikate zu generieren.

Der Domänenname des Zwischenzertifikats ist localhost.

#!/bin/bash -x
setze -e
für C in „echo root-ca intermediate“;
 mkdir $C
 CD $C
 mkdir certs crl newcerts privat
 CD ..
 echo 1000 > $C/seriell
 berühren Sie $C/index.txt $C/index.txt.attr
 Echo '
[ ca ]
default_ca = CA_Standard
[ CA_Standard ]
dir = '$C' # Wo alles aufbewahrt wird
certs = $dir/certs # Wo die ausgestellten Zertifikate aufbewahrt werden
crl_dir = $dir/crl # Wo die ausgestellten CRLs aufbewahrt werden
Datenbank = $dir/index.txt # Datenbankindexdatei.
new_certs_dir = $dir/newcerts # Standardspeicherort für neue Zertifikate.
certificate = $dir/cacert.pem # Das CA-Zertifikat
serial = $dir/serial # Die aktuelle Seriennummer
crl = $dir/crl.pem # Die aktuelle CRL
private_key = $dir/private/ca.key.pem # Der private Schlüssel
RANDFILE = $dir/.rnd # private Zufallszahlendatei
nameopt = default_ca
certopt = default_ca
Richtlinie = Richtlinienübereinstimmung
Standardtage = 365
Standardmd = sha256
[ Richtlinienübereinstimmung ]
countryName = optional
stateOrProvinceName = optional
Organisationsname = optional
organizationalUnitName = optional
commonName = angegeben
E-Mail-Adresse = optional
[Anforderung]
req_extensions = v3_req
Distinguished_Name = erforderlicher Distinguished_Name
[erforderlicher_Name]
[v3_erforderlich]
Grundeinschränkungen = CA:TRUE
' > $C/openssl.conf
Erledigt
openssl genrsa -out root-ca/private/ca.key 2048
openssl req -config root-ca/openssl.conf -new -x509 -days 3650 -key root-ca/private/ca.key -sha256 -extensions v3_req -out root-ca/certs/ca.crt -subj '/CN=Root-ca'
openssl genrsa -out Zwischen-/Privat-/Zwischenschlüssel 2048
openssl req -config intermediate/openssl.conf -sha256 -new -key intermediate/private/intermediate.key -out intermediate/certs/intermediate.csr -subj '/CN=localhost.'
openssl ca -batch -config root-ca/openssl.conf -keyfile root-ca/private/ca.key -cert root-ca/certs/ca.crt -extensions v3_req -notext -md sha256 -in intermediate/certs/intermediate.csr -out intermediate/certs/intermediate.crt
mkdir aus
für I in `seq 1 3`; mache
 openssl req -new -keyout out/$I.key -out out/$I.request -days 365 -nodes -subj "/CN=$I.example.com" -newkey rsa:2048
 openssl ca -batch -config root-ca/openssl.conf -keyfile intermediate/private/intermediate.key -cert intermediate/certs/intermediate.crt -out out/$I.crt -infiles out/$I.request
Erledigt

Server

Nginx-Konfiguration

Arbeiterprozesse 1;
Ereignisse {
  Arbeiterverbindungen 1024;
}
Strom{
  Upstream-Backend{
    Server 127.0.0.1:8080;
  }
  Server {
    hören Sie 8888 SSL;
    Proxy_Pass-Backend;
    ssl_zertifikat zwischengeschaltet.crt;
    ssl_zertifikatsschlüssel Zwischenschlüssel;
    ssl_überprüfen_tiefe 2;
    ssl_client_zertifikat root.crt;
    ssl_verify_client optional_no_ca;
  }
}

Kunde

Locke \
 -ICH \
 -vv \
 -x https://localhost:8888/ \
 --proxy-cert client1.crt \
 --proxy-key client1.key \
 --proxy-cacert ca.crt \
 https://www.baidu.com/

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an

Das könnte Sie auch interessieren:
  • So konfigurieren Sie nginx+php+mysql in Docker
  • Lösung für ungültige Nginx-Cross-Domain-Einstellung Access-Control-Allow-Origin
  • Beispielmethode zum Bereitstellen eines React-Projekts auf Nginx
  • Verwenden Sie das Tool nginx.vim zur Syntaxhervorhebung und Formatierung der Konfigurationsdatei nginx.conf
  • Detaillierte Erläuterung der Fallstricke von add_header im Nginx-Konfigurationstutorial
  • Lösung für das Problem des Informationsverlusts mit "_" im Header bei Verwendung des Nginx-Proxys
  • Shell-Skript Nginx-Automatisierungsskript
  • So erstellen Sie einen Nginx-Server mit Docker
  • Eine kurze Erläuterung, warum Daemon Off beim Ausführen von Nginx in Docker verwendet wird
  • Einführung in das Batch-Cache-Löschskript von nginx proxy_cache

<<:  Das WeChat-Applet implementiert einen einfachen Rechner

>>:  Detaillierte Erklärung der Rolle des Schlüssels in React

Artikel empfehlen

Zusammenfassung von 6 Lösungen zur Implementierung des Singleton-Modus in JS

Vorwort Heute habe ich das Erzeugungsmuster im En...

Die Fallstricke bei der Beurteilung von NULL-Werten in MySQL

Inhaltsverzeichnis Vorwort MySQL-Fall mit Syntax:...

So konfigurieren Sie die MySQL Master-Slave-Replikation unter Windows

Die MySQL Master-Slave-Replikation ermöglicht die...

So verwenden Sie Axios, um Netzwerkanforderungen in React Native zu stellen

In der Front-End-Entwicklung gibt es viele Möglic...

Bringen Sie Ihnen kostenlos bei, wie Sie AWS-Serverressourcen nutzen

AWS – Amazons Cloud-Computing-Serviceplattform Ic...

Vue.js verwendet Element-ui, um das Navigationsmenü zu implementieren

In diesem Artikel wird der spezifische Code zur I...

So bereinigen Sie den von Docker belegten Speicherplatz

Docker nimmt viel Platz ein. Immer wenn wir Conta...

WeChat-Miniprogramme implementieren Sternebewertung

In diesem Artikel wird der spezifische Code für d...

Zwei Möglichkeiten zum Erstellen von Docker-Images

Inhaltsverzeichnis Aktualisieren Sie das Bild von...

So schreiben Sie den Nofollow-Tag und verwenden ihn

Das „nofollow“-Tag wurde vor einigen Jahren von G...

6 Möglichkeiten, die von Linux-Prozessen belegten Portnummern anzuzeigen

Für Linux-Systemadministratoren ist es von entsch...

MySQL-Abfrage gibt an, dass das Feld keine Zahl und kein Komma SQL ist

Grundlegende SQL-Anweisungen MySQL-Abfrageanweisu...

Beschreibung der HTML-Meta-Viewport-Attribute

Was ist ein Ansichtsfenster? Mobile Browser platz...

Ausführliche Erläuterung der Vue-Komponente „Multi-Select-Liste“

Eine Mehrfachauswahl ist ein Benutzeroberflächene...