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.

Das Skript ist abgeleitet von (modifiziert)
https://stackoverflow.com/questions/26759550/wie-erstelle-man-ein-eigenes-Signed-Root-Zertifikat-und-ein-Intermediate-CA-das-man-importieren-kann

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/

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:
  • So konfigurieren Sie den virtuellen Nginx-Host in CentOS 7.3
  • Detaillierte Bereitstellung von Django uwsgi Nginx in der Produktionsumgebung
  • Detaillierte Erklärung des Kommunikationsmechanismus zwischen PHP-FPM und Nginx
  • Detaillierte Erläuterung der Verwendung des Nginx-Reverse-Proxys zur Lösung domänenübergreifender Probleme
  • 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
  • So führen Sie nginx in Docker aus und mounten das lokale Verzeichnis in das Image
  • So konfigurieren Sie https für Nginx in Docker
  • So konfigurieren Sie die bidirektionale Zertifikatsüberprüfung auf dem Nginx-Proxyserver

<<:  jQuery implementiert die Praxis, die Position und Größe von div durch Ziehen der Maus zu ändern

>>:  Zwei Möglichkeiten zum Zurücksetzen des Root-Passworts einer MySQL-Datenbank mit lnmp

Artikel empfehlen

Vier Kategorien von CSS-Selektoren: Basis, Kombination, Attribut, Pseudoklasse

Was ist ein Selektor? Die Rolle des Selektors bes...

W3C Tutorial (6): W3C CSS Aktivitäten

Ein Stylesheet beschreibt, wie ein Dokument angez...

MYSQL Left Join-Optimierung (10 Sekunden bis 20 Millisekunden)

Inhaltsverzeichnis 【Funktionshintergrund】 [Rohes ...

So wird eine Select-Anweisung in MySQL ausgeführt

Inhaltsverzeichnis 1. MySQL aus einer Makroperspe...

So verwenden Sie Xtrabackup zum Sichern und Wiederherstellen von MySQL

Inhaltsverzeichnis 1. Sicherung 1.1 Vollständig v...

Erfahren Sie mehr über die MySQL-Speicher-Engine

Inhaltsverzeichnis Vorwort 1. MySQL-Hauptspeicher...

ThingJS-Partikeleffekte, um Regen- und Schneeeffekte mit einem Klick zu erzielen

Inhaltsverzeichnis 1. Partikeleffekte 2. Laden Si...

Zusammenfassung häufiger Probleme und Anwendungskenntnisse in MySQL

Vorwort Bei der täglichen Entwicklung oder Wartun...

Zusammenfassung mehrerer APIs oder Tipps in HTML5, die Sie nicht verpassen sollten

In früheren Blogbeiträgen habe ich mich auf einige...

Lösung für das Problem des MySQL-Threads beim Öffnen von Tabellen

Problembeschreibung Vor kurzem gab es einen MySQL...