So implementieren Sie https mit Nginx und OpenSSL

So implementieren Sie https mit Nginx und OpenSSL

Wenn die Serverdaten nicht verschlüsselt und mit einem SSL-Zertifikat authentifiziert sind, werden die Daten des Benutzers im Klartext übertragen. Dadurch ist es möglich, die Kennwortinformationen des Benutzers mithilfe von Paketerfassungstools abzugreifen, was sehr gefährlich ist. Zudem ist eine Überprüfung der Datenkonsistenz und -integrität nicht möglich und es kann nicht sichergestellt werden, dass die Daten während der Übertragung nicht verändert wurden. Wenn die Website wichtige Informationen wie Benutzerkonten enthält, ist es daher normalerweise erforderlich, ein SSL-Zertifikat zu konfigurieren und zu verwenden, um das https-Protokoll zu implementieren.

SSL-Zertifikate in Produktionsumgebungen müssen über eine Zertifizierungsstelle eines Drittanbieters erworben werden. Sie werden in professionelle OV-Zertifikate (der Firmenname wird nicht in der Adressleiste des Browsers angezeigt) und erweiterte EV-Zertifikate (der Firmenname kann angezeigt werden) unterteilt. Die Anzahl der durch das Zertifikat geschützten Domänennamen wirkt sich ebenfalls auf den Preis aus (beispielsweise ist der Preis für die WWW-Zertifizierung und die Wildcard-*-Zertifizierung unterschiedlich) und Domänennamen der dritten Ebene werden nicht unterstützt. Während des Tests können Sie als Zertifizierungsstelle selbst ein Zertifikat erstellen. Der Browser zeigt es in Rot an und zeigt damit an, dass das Zertifikat abgelaufen oder ungültig ist. Wenn es gelb ist, bedeutet dies, dass einige Verbindungen auf der Website immer noch das http-Protokoll verwenden.

Unabhängig davon, welche Methode verwendet wird, ist die Konfiguration von Nginx nach dem Erhalt des Zertifikats dieselbe. Hier finden Sie daher eine vollständige Beschreibung der Einrichtung von OpenSSL und der Erstellung eines Zertifikats.

1. Bereiten Sie die Umgebung vor

1) Nginx-Dienst

2) SSL-Modul

[root@ns3 ~]# systemctl stoppe Firewall
[root@ns3 ~]# iptables -F
[root@ns3 ~]# setenforce 0
[root@ns3 ~]# yum -y installiere pcre zlib pcre-devel zlib-devel
[root@ns3 ~]# tar xf nginx-1.16.0.tar.gz -C /usr/src/
[root@ns3 ~]#cd /usr/src/nginx-1.16.0
[root@ns3 ~]#./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module&&make && make install #Installieren Sie die später benötigten Module auf einmal

3) Überprüfen Sie, ob OpenSSL installiert ist

[root@ns3 ~]# rpm -qa openssl 2 openssl-1.0.1e-42.el7.x86_64

Wenn nicht installiert

[root@ns3 ~]# yum -y installiere openssl openssl-devel

2. Erstellen Sie eine Stammzertifikat-CA

1. Generieren Sie einen privaten CA-Schlüssel

[root@ns3 ~]# cd zhengshu/
[root@ns3 zhengshu]# openssl genrsa -out local.key 2048
Generieren eines privaten RSA-Schlüssels, 2048 Bit langer Modul
.................................................................................................................................................................................................................................................+++
............................................................................................................................................................................................................+++
e ist 65537 (0x10001)
[root@ns3 zhengshu]# ls
lokaler Schlüssel

2. CA-Zertifikatsanforderung generieren

[root@ns3 zhengshu]# openssl req -new -key local.key -out local.csr
Sie werden nun aufgefordert, Informationen einzugeben, die
in Ihre Zertifikatsanforderung.
Was Sie jetzt eingeben, ist ein sogenannter Distinguished Name oder DN.
Es gibt eine ganze Reihe von Feldern, aber Sie können einige leer lassen
Für einige Felder gibt es einen Standardwert.
Wenn Sie „.“ eingeben, bleibt das Feld leer.
-----
Ländername (2-Buchstaben-Code) [XX]:CN #Staats- oder Provinzname (vollständiger Name) []:BJ #Ortsname (z. B. Stadt) [Standard Stadt]:BJ #Organisationsname (z. B. Firma) [Standard Firma Ltd]:
Name der Organisationseinheit (z. B. Abteilung) []:test #AbteilungAllgemeiner Name (z. B. Ihr Name oder der Hostname Ihres Servers) []:test #HostnameE-Mail-Adresse []:[email protected] #E-MailBitte geben Sie die folgenden „zusätzlichen“ Attribute ein
wird mit Ihrem Zertifikatsantrag mitgeschickt
Ein Challenge-Passwort []:wuminyan #Passwort Ein optionaler Firmenname []:wuminyan #Name [root@ns3 zhengshu]# ls
lokale.csr lokale.schlüssel
req: Dies ist ein umfangreicher Befehl, der die Generierung von Zertifikatsanforderungsdateien, die Überprüfung von Zertifikaten und die Erstellung von Stammzertifizierungsstellen ermöglicht.
 -new: bedeutet, eine neue Zertifikatsanforderung zu generieren -x509: gibt das Zertifikat direkt aus -key: die private Schlüsseldatei, die beim Generieren der Zertifikatsanforderung verwendet wurde -out: Ausgabedatei

3. Generieren Sie ein CA-Stammzertifikat

Dieser Befehl zum Generieren eines CA-Zertifikats ist verwirrend. 1. Generieren Sie eine Zertifikatsanforderungsdatei mit einem geheimen Schlüssel. 2. Generieren Sie das endgültige Zertifikat mit einer Zertifikatsanforderungsdatei. -in Generieren Sie ein Zertifikat mit einer Zertifikatsanforderungsdatei. -signkey gibt den privaten Schlüssel an. Dies ist ein Parameter, den ich noch nicht verstehe. [root@ns3 zhengshu]# openssl x509 -req -in local.csr -extensions v3_ca -signkey local.key -out local.crt
Unterschrift ok
Betreff=/C=CN/ST=BJ/L=BJ/O=Default Company Ltd/OU=Test/CN=Test/[email protected]
Privaten Schlüssel abrufen

3. Erstellen Sie ein Serverzertifikat basierend auf dem CA-Zertifikat

1. Generieren Sie den privaten Serverschlüssel

[root@ns3 zhengshu]# openssl genrsa -out my_server.key 2048
Generieren eines privaten RSA-Schlüssels, 2048 Bit langes Modul
.................................+++
...........................................+++
e ist 65537 (0x10001)
[root@ns3 zhengshu]# ls
local.crt local.csr local.key mein_server.key

2. Server-Zertifikatsanforderung generieren

[root@ns3 zhengshu]# openssl x509 -req -in local.csr -extensions v3_ca -signkey local.key -out local.crt
Unterschrift ok
Betreff=/C=CN/ST=BJ/L=BJ/O=Default Company Ltd/OU=Test/CN=Test/[email protected]
Privaten Schlüssel abrufen
[root@ns3 zhengshu]# openssl genrsa -out my_server.key 2048
Generieren eines privaten RSA-Schlüssels, 2048 Bit langes Modul
.................................+++
...........................................+++
e ist 65537 (0x10001)
[root@ns3 zhengshu]# openssl req -new -key mein_server.key -out mein_server.csr
Sie werden nun aufgefordert, Informationen einzugeben, die
in Ihre Zertifikatsanforderung.
Was Sie jetzt eingeben, ist ein sogenannter Distinguished Name oder DN.
Es gibt eine ganze Reihe von Feldern, aber Sie können einige leer lassen
Für einige Felder gibt es einen Standardwert.
Wenn Sie „.“ eingeben, bleibt das Feld leer.
-----
Ländername (2-Buchstaben-Code) [XX]:CN
Name des Staates oder der Provinz (vollständiger Name) []: BJ
Ortsname (z. B. Stadt) [Standardstadt]: BJ
Name der Organisation (z. B. Firma) [Standard Company Ltd]:
Name der Organisationseinheit (z. B. Abschnitt) []:test
Allgemeiner Name (z. B. Ihr Name oder der Hostname Ihres Servers) []:test
E-Mail-Adresse []:[email protected]

Bitte geben Sie die folgenden 'zusätzlichen' Attribute ein
wird mit Ihrem Zertifikatsantrag mitgeschickt
Ein Challenge-Passwort []:wuminyan
Ein optionaler Firmenname []:wuminyan
[root@ns3 zhengshu]# ls
local.crt local.csr local.key mein_server.csr mein_server.key

3. Server-Zertifikat generieren

[root@ns3 zhengshu]# openssl x509 -days 365 -req -in my_server.csr -extensions v3_req -CAkey local.key -CA local.crt -CAcreateserial -out my_server.crt
 Unterschrift ok
 Betreff=/C=CN/ST=BJ/L=BJ/O=Default Company Ltd/OU=Test/CN=Test/[email protected]
 Abrufen des privaten CA-Schlüssels

4. Konfigurieren Sie nginx zur Unterstützung von SSL

[root@ns3 ~]# vim /etc/nginx.cof #Hier wird ein Softlink gesetzt: lln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
Server {
        hören Sie 80;
        listen 443 default ssl; #Auf Port 433 lauschen keepalive_timeout 100; #Keepalive einschalten Keepalive-Langverbindung aktivieren, um die Zahl der Client-Anfragen zu reduzieren ssl_certificate /root/zhengshu/local.crt; #Speicherort des Server-Zertifikats ssl_certificate_key /root/zhengshu/local.key; #Speicherort des privaten Server-Schlüssels ssl_session_cache shared:SSL:10m; #Sitzung zwischenspeichern ssl_session_timeout 10m; #Sitzung läuft in 10 Minuten ab ssl_ciphers HIGH:!aNULL:!MD5;
                   ssl_prefer_server_ciphers ein;

        Servername test.com;
        Zeichensatz UTF-8;

        Standort / {
            Stamm-HTML;
            Index Index.html Index.htm;
        }

    }
}

5. Testen

Geben Sie https://192.168.200.115 ein

Dies ist das Ende dieses Artikels über die Implementierung von https mit nginx in Kombination mit OpenSSL. Weitere relevante Inhalte zur Implementierung von https mit nginx finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • So installieren Sie Nginx unter Linux (pcre und openssl)
  • So passen Sie den Nginx-Server an, um OpenSSL-Sicherheitslücken zu beheben
  • Implementierung der Nginx-Domänennamenweiterleitung für den HTTPS-Zugriff
  • Implementierung von HTTP- und HTTPS-Diensten mit Nginx-Reverse-Proxy für mehrere Domänennamen

<<:  Definieren der Mindesthöhe der Inline-Elementspanne

>>:  Zusammenfassung zur Positionierung in CSS

Artikel empfehlen

Detaillierte Erläuterung der FTP-Umgebungskonfigurationslösung (vsftpd)

1. Installieren Sie die vsftpd-Komponente Install...

So löschen Sie den gesamten Inhalt eines Verzeichnisses mit Ansible

Studierende, die Ansible verwenden, wissen, dass ...

Tutorial zu HTML-Formular-Tags (3): Eingabe-Tag

Tutorial zu HTML-Formular-Tags. In diesem Abschni...

Eine Aufzeichnung der Fallstricke des Lebenszyklus von WeChat-Applet-Komponenten

Der Komponentenlebenszyklus ist normalerweise der...

CSS- und HTML- und Front-End-Technologie-Schichtendiagramm

Die Beziehung zwischen Javascript und DOM ist seh...

So verwenden Sie Spark und Scala zum Analysieren von Apache-Zugriffsprotokollen

Installieren Zuerst müssen Sie Java und Scala ins...

Eine vollständige Liste häufig verwendeter Linux-Befehle (empfohlene Sammlung)

Inhaltsverzeichnis 1. Systeminformationen 2. Shut...

Grundkenntnisse zu MySQL – Lernhinweise

Datenbank anzeigen show databases; Erstellen eine...

So erstellen Sie manuell ein neues Image mit Docker

In diesem Artikel wird die Methode zum manuellen ...

Fünf Möglichkeiten zum Durchlaufen von JavaScript-Arrays

Inhaltsverzeichnis 1. for-Schleife: grundlegend u...