Schritte zum Einrichten einer HTTPS-Website basierend auf Nginx

Schritte zum Einrichten einer HTTPS-Website basierend auf Nginx

Vorwort:

Lassen Sie mich zunächst kurz erklären, warum wir jetzt das HTTPS-Protokoll verwenden:

Tatsächlich besteht der Hauptgrund für die Verwendung des HTTPS-Protokolls darin, dass das HTTP-Protokoll nicht sicher ist, da die Datenübertragung über HTTP Folgendes ist: Daten werden im Klartext übertragen , d. h. wenn der Client Benutzername und Kennwort eingibt, werden diese angezeigt. Das HTTPS-Protokoll hingegen verwendet Geheimtext zur Datenübertragung , was bedeutet, dass die Daten während der Übertragung verschlüsselt werden.

Die Lösung von HTTPS für das Problem der Datenübertragungssicherheit besteht in der Verwendung von Verschlüsselungsalgorithmen, insbesondere hybriden Verschlüsselungsalgorithmen, also einer Kombination aus symmetrischen und asymmetrischen Verschlüsselungsalgorithmen.

Verschlüsselungsalgorithmus:

  • Symmetrische Verschlüsselung: Für die Verschlüsselung und Entschlüsselung wird derselbe Schlüssel verwendet. Zu den gängigen symmetrischen Verschlüsselungsalgorithmen zählen DES, 3DES und AES.
  • Asymmetrische Verschlüsselung: Für die Verschlüsselung und Entschlüsselung sind zwei unterschiedliche Schlüssel erforderlich, ein öffentlicher und ein privater Schlüssel. Der am häufigsten verwendete asymmetrische Verschlüsselungsalgorithmus ist der RSA-Algorithmus.

1. Einführung in HTTPS

HTTPS besteht eigentlich aus zwei Teilen: HTTP + SSL/TLS, was bedeutet, dass zu HTTP ein Modul zur Verarbeitung verschlüsselter Informationen hinzugefügt wird. Die Informationsübertragung zwischen Server und Client wird per TLS verschlüsselt, die übertragenen Daten sind also verschlüsselte Daten.

HTTPS-Protokollprinzip:

Bildbeschreibung hier einfügen

  • Der Client greift über das HTTPS-Protokoll auf den Port 443 des Servers zu;
  • Der Server antwortet dem Client und sendet das Zertifikat, das den öffentlichen Schlüssel darstellt.
  • Nach Erhalt des Zertifikats fordert der Client die Zertifizierungsstelle auf, festzustellen, ob das Zertifikat gültig ist. Wenn es ungültig ist, gibt der Client eine Warnmeldung aus, die darauf hinweist, dass das Zertifikat nicht sicher ist.
  • Wenn das Zertifikat gültig ist, generiert der Client einen zufälligen Wert.
  • Der Client verwendet das vom Server gesendete Zertifikat, um den Zufallswert zu verschlüsseln und ihn dann an den Server zu senden.
  • Nach dem Empfang verwendet der Server den lokalen privaten Schlüssel zum Entschlüsseln, um den Zufallswert des Clients zu erhalten. Wenn der Server Daten sendet, verwendet er den Zufallswert zum Verschlüsseln der Daten, dh zum Generieren eines öffentlichen Schlüssels, und der Zufallswert ist der private Schlüssel.
  • Der Server sendet verschlüsselte Daten an den Client;
  • Nach dem Empfang der Daten verwendet der Client den Zufallswert zum Entschlüsseln und überträgt die Daten somit erfolgreich.

2. Nginx implementiert HTTPS-Website-Einstellungen

1. Installieren Sie Nginx

[root@Nginx ~]# yum -y installiere pcre-devel zlib-devel popt-devel openssl-devel openssl
[root@Nginx ~]# wget http://www.nginx.org/download/nginx-1.18.0.tar.gz
[root@Nginx ~]# ls
anaconda-ks.cfg nginx-1.18.0.tar.gz
[root@Nginx ~]# tar zxf nginx-1.18.0.tar.gz -C /usr/src/
[root@Nginx ~]# cd /usr/src/nginx-1.18.0/
[root@Nginx nginx-1.18.0]# useradd -M -s /sbin/nologin nginx
[root@Nginx nginx-1.18.0]# ./konfigurieren \
--prefix=/usr/local/nginx \
--Benutzer=nginx \
--group=nginx \
--mit-Datei-aio \
--mit-http_stub_status_module \
--mit-http_gzip_static_module \
--mit-http_flv_module \
--mit-http_ssl_module \
--with-pcre && make && make install
[root@Nginx nginx-1.18.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@Nginx nginx-1.18.0]# cd
[root@Nginx ~]# nginx
[root@Nginx ~]# netstat -anpt | grep 80

2. Erstellen Sie eine Server-Zertifikatschlüsseldatei

[root@Nginx ~]# openssl genrsa -des3 -out server.key 1024
...
Geben Sie die Passphrase für den Serverschlüssel ein: # Geben Sie das Passwort ein. Überprüfen - Geben Sie die Passphrase für den Serverschlüssel ein: # Bestätigen Sie das Passwort

3. Erstellen Sie eine Anwendungsdatei für das Serverzertifikat

[root@Nginx ~]# openssl req -new -key server.key -out server.csr
Geben Sie die Passphrase für den Serverschlüssel ein: # Geben Sie das zuvor erstellte Passwort ein …
Ländername (2-Buchstaben-Code) [XX]:CN # Ländercode. China gibt CN ein
Name des Staates oder der Provinz (vollständiger Name) []:Peking # Vollständiger Name der Provinz. PinyinOrtsname (z. B. Stadt) [Standard Stadt]:Peking # Vollständiger Name der Stadt. PinyinOrganisationsname (z. B. Unternehmen) [Standard Company Ltd]:Coco # Englischer FirmennameName der Organisationseinheit (z. B. Abschnitt) []: # Sie können es leer lassenAllgemeiner Name (z. B. Ihr Name oder der Hostname Ihres Servers) []:www.Coco.com # DomänennameE-Mail-Adresse []:[email protected] # E-Mail-Adresse. Sie können gerne Folgendes ausfüllen...
Ein Challenge-Passwort []: # Dies ist optional. Ein optionaler Firmenname []: # Dies ist optional.

Sichern einer Server-Schlüsseldatei

[root@Nginx ~]# cp server.key server.key.org

Dateikennwort entfernen

[root@Nginx ~]# openssl rsa -in server.key.org -out server.key
Geben Sie die Passphrase für server.key.org ein: #

4. Zertifikatsdateien generieren

[root@Nginx ~]# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Unterschrift ok
Betreff=/C=CN/ST=Beijing/L=Beijing/O=Coco/CN=www.Coco.com/[email protected]
Privaten Schlüssel abrufen

5. Ändern Sie die Nginx-Hauptkonfigurationsdatei

[root@Nginx ~]# mkdir -p /usr/local/nginx/conf/ssl
[root@Nginx ~]# cp server.crt server.key /usr/local/nginx/conf/ssl/
[root@Nginx ~]# vim /usr/local/nginx/conf/nginx.conf
Server {
    listen 443; # Abhörport SSL ein; # SSL aktivieren
    ssl_certificate ssl/server.crt; # PS: Ich verwende hier einen relativen Pfad. Sie können einen absoluten Pfad verwenden ssl_certificate_key ssl/server.key; # Das System sucht im Verzeichnis /usr/local/nginx/conf/ nach dem Servernamen www.Coco.com; # Der dem Zertifikat entsprechende Domänenname ...
}
[root@Nginx ~]# nginx -s reload # Nginx-Dienst neu starten

nginx: [warn] the "ssl" directive is deprecated, use the "listen ... ssl" : Da die Version höher als 1.15 ist, kann sie normal gestartet werden.

Überprüfung: Besuchen Sie den Domänennamen, den Sie gerade festgelegt haben https://www.Coco.com/

Bildbeschreibung hier einfügen

Implementieren Sie die Umleitung des Client-Zugriffs von http auf https :

Aus diesem Grund müssen wir der Konfigurationsdatei einen server hinzufügen, da http Protokoll Port 80 und https Protokoll Port 443 verwendet.

Wenn Sie von http auf https umleiten möchten, müssen Sie zwei virtuelle Hosts (basierend auf unterschiedlichen Ports) konfigurieren und dann rewrite zum Umleiten verwenden.

Fehlkonfiguration:

Es stellt kein logisches Problem dar, mehrere Ports auf demselben server zu öffnen, bei rewrite Konfiguration können jedoch Probleme auftreten.

Problem : Wenn der Client auf http zugreift, springt er, aber beim Zugriff auf https springt er auch, was zu zu vielen Weiterleitungen führt.

Server {
    hören Sie 80;
    hören Sie 443;
    Servername www.Coco.com;
    Stamm-HTML;
    Index Index.html Index.htm;
    schreibe ^(.*)$ https://$host$1 permanent um;
}

Bildbeschreibung hier einfügen

Richtige Konfiguration:

Um Port 80 von Port 443 zu unterscheiden, müssen Sie, vereinfacht ausgedrückt, virtuelle Hosts basierend auf unterschiedlichen Ports konfigurieren.

Auf diese Weise können Zugriffe auf Port 80 umgeleitet werden, während Zugriffe auf Port 443 direkt erfolgen können.

[root@Nginx ~]# vim /usr/local/nginx/conf/nginx.conf
Server {
    hören Sie 80;
    Servername www.Coco.com;
    schreibe ^(.*)$ https://$host$1 permanent um;
    ...
}
Server {
    hören Sie 443;
    SSL aktiviert;
    SSL-Zertifikat ssl/server.crt;
    SSL-Zertifikatsschlüssel ssl/server.key;
    Servername www.Coco.com;
    ...
}
[root@localhost ~]# nginx -s neu laden

Überprüfung: Besuchen Sie http://www.Coco.com

Bildbeschreibung hier einfügen

Damit ist dieser Artikel über die Schritte zum Einrichten einer HTTPS-Website auf Basis von Nginx abgeschlossen. Weitere Informationen zu den HTTPS-Websiteeinstellungen von 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:
  • Detaillierte Erläuterung der Nginx-Implementierung der https-Website-Einstellungen
  • So richten Sie HTTPS in Nginx ein

<<:  Beispielcode zur Implementierung mobiler Expansions- und Collapse-Effekte mit reinem CSS3

>>:  Kennen Sie die häufigsten MySQL-Designfehler?

Artikel empfehlen

Implementierung von 2D- und 3D-Transformationen in CSS3

CSS3 implementiert 2D-Ebenentransformation und vi...

Tutorial zur Verwendung des Multitail-Befehls unter Linux

MultiTail ist eine Software zum gleichzeitigen Üb...

Beispielcode für Nginx zur Erreichung dynamischer und statischer Trennung

1. Einfache Konfiguration der dynamischen und sta...

Lösung für die nicht wirksame Änderung des El-Popover-Stils von ElementUI

Bei der Verwendung von Element-UI gibt es eine hä...

Was Sie über MySQL-Sperren wissen müssen

1. Einleitung MySQL-Sperren können je nach Umfang...

Einfache Installation des vi-Befehls im Docker-Container

Wenn Sie einen Docker-Container verwenden, ist vi...

Grafisches Tutorial zur Installation von MySQL5.7.18 im Windows-System

MySQL-Installationstutorial für Windows-Systeme h...

Detaillierte Konfiguration des mysql8.x-Docker-Remotezugriffs

Inhaltsverzeichnis Umweltbedingungen Aufgetretene...

Der Unterschied und die Verwendung zwischen div und span

Inhaltsverzeichnis 1. Unterschiede und Merkmale z...

So starten und starten Sie nginx unter Linux neu

Nginx (Engine x) ist ein leistungsstarker HTTP- u...

JavaScript implementiert eine Eingabefeldkomponente

In diesem Artikelbeispiel wird der spezifische Co...

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

Front-End-Technologieschicht (Das Bild ist etwas e...

Lösung für das Root-Passwort-Anmeldeproblem in MySQL 5.7

Nachdem ich herausgefunden hatte, dass der vorher...

Detaillierte Erklärung des Vue-Plugins

Zusammenfassen Dieser Artikel endet hier. Ich hof...