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

Vue-Anfängerhandbuch: Erstellen des ersten Vue-cli-Scaffolding-Programms

1. Vue – Das erste Vue-CLI-Programm Die Entwicklu...

Tutorial zur Remote-Verbindung mit einer MySQL-Datenbank unter Linux

Vorwort Ich bin kürzlich bei der Arbeit auf diese...

Tutorial zur Installation von MySQL 8.0.11 unter Linux

1. Gehen Sie zur offiziellen Website, um das Inst...

So sperren Sie eine virtuelle Konsolensitzung unter Linux

Wenn Sie an einem gemeinsam genutzten System arbe...

JS erhält Fünf-Sterne-Lob

In diesem Artikel wird der spezifische Code von J...

Eine kurze Diskussion über die VUE Uni-App-Entwicklungsumgebung

Inhaltsverzeichnis 1. Über die visuelle Schnittst...

HTML-Grundlagen HTML-Struktur

Was ist eine HTML-Datei? HTML steht für Hyper Text...

IIS7 IIS8 Reverse-Proxy-Regeln schreiben, installieren und konfigurieren

Zweck: Station A als sekundäres Verzeichnis von S...

Beispiel für die Konfiguration der Timeout-Einstellung für MySQL-Datenbanken

Inhaltsverzeichnis Vorwort 1. JDBC-Timeout-Einste...

Tabellen in HTML aufteilen und zusammenführen (colspan, rowspan)

Der Code demonstriert die horizontale Zusammenfüh...