Beispielcode zum Konfigurieren von Nginx zur Unterstützung von https

Beispielcode zum Konfigurieren von Nginx zur Unterstützung von https

1. Einleitung

Lassen Sie Ihre Website immer noch ungeschützt im Internet? Hier erstellen wir eine kostenlose Version von HTTPS. Kostenlos, kostenlos, kostenlos. Ich sage es dreimal, weil es wichtig ist.

Das Hypertext Transfer Protocol (HTTP) wird zum Übertragen von Informationen zwischen einem Webbrowser und einem Website-Server verwendet. Das HTTP-Protokoll sendet Inhalte im Klartext und bietet keinerlei Form der Datenverschlüsselung. Wenn ein Angreifer die Übertragungsnachricht zwischen einem Webbrowser und einem Website-Server abfängt, kann er die darin enthaltenen Informationen direkt lesen.

Daher ist das HTTP-Protokoll nicht für die Übertragung einiger vertraulicher Informationen wie Kreditkartennummern, Passwörter und anderer Zahlungsinformationen geeignet.

Um diesen Mangel des HTTP-Protokolls zu beheben, wird ein anderes Protokoll benötigt: Secure Sockets Layer Hypertext Transfer Protocol HTTPS. Zur Sicherheit der Datenübertragung ergänzt HTTPS das SSL-Protokoll auf der Basis von HTTP. SSL verwendet Zertifikate zur Überprüfung der Identität des Servers und verschlüsselt die Kommunikation zwischen Browser und Server.

2. Vorteile von HTTPS

Obwohl HTTPS nicht absolut sicher ist, können Organisationen, die Stammzertifikate und Verschlüsselungsalgorithmen kontrollieren, auch Man-in-the-Middle-Angriffe durchführen. HTTPS ist jedoch unter der aktuellen Architektur immer noch die sicherste Lösung und bietet die folgenden Hauptvorteile:

(1) Durch die Verwendung des HTTPS-Protokolls können Benutzer und Server authentifiziert werden, wodurch sichergestellt wird, dass Daten an den richtigen Client und Server gesendet werden;

(2) Das HTTPS-Protokoll ist ein Netzwerkprotokoll, das auf dem SSL+HTTP-Protokoll basiert und verschlüsselte Übertragungen und Identitätsauthentifizierungen durchführen kann. Es ist sicherer als das http-Protokoll und kann verhindern, dass Daten während der Übertragung gestohlen oder geändert werden, wodurch die Integrität der Daten gewährleistet wird.

(3) HTTPS stellt unter der aktuellen Architektur die sicherste Lösung dar. Obwohl es nicht absolut sicher ist, erhöht es die Kosten von Man-in-the-Middle-Angriffen erheblich.

(4) Google hat im August 2014 seinen Suchmaschinenalgorithmus angepasst und erklärt, dass „Websites, die HTTPS-Verschlüsselung verwenden, in den Suchergebnissen höher eingestuft werden als entsprechende HTTP-Websites.“

3. Nachteile von HTTPS

Obwohl HTTPS große Vorteile bietet, weist es dennoch einige Nachteile auf:

(1) Die Handshake-Phase des HTTPS-Protokolls ist zeitaufwändig, was die Seitenladezeit um fast 50 % verlängert und den Stromverbrauch um 10 bis 20 % erhöht.

(2) Das Zwischenspeichern von HTTPS-Verbindungen ist nicht so effizient wie das von HTTP, was den Datenaufwand und den Stromverbrauch erhöht und sogar bestehende Sicherheitsmaßnahmen beeinträchtigt.

(3) SSL-Zertifikate sind kostenpflichtig. Je leistungsfähiger das Zertifikat, desto höher ist die Gebühr. Private Websites oder kleine Websites müssen sie im Allgemeinen nicht verwenden.

(4) SSL-Zertifikate müssen normalerweise an eine IP-Adresse gebunden sein. Mehrere Domänennamen können nicht an dieselbe IP-Adresse gebunden sein. IPv4-Ressourcen können diese Nutzung nicht unterstützen.

(5) Der Verschlüsselungsumfang des HTTPS-Protokolls ist ebenfalls relativ begrenzt und hat nahezu keine Auswirkungen auf Hackerangriffe, Denial-of-Service-Angriffe, Server-Hijacking usw. Das Wichtigste dabei ist, dass das Kreditkettensystem von SSL-Zertifikaten nicht sicher ist. Insbesondere wenn einige Länder die Stammzertifikate der Zertifizierungsstelle kontrollieren, sind Man-in-the-Middle-Angriffe weiterhin möglich.

4. Laden Sie certbot herunter

Verwenden Sie git zum Herunterladen hier. Wenn Sie git noch nicht installiert haben, lesen Sie, wie es installiert wird

Verzeichnis ändern

cd /usr/local

Klonen Sie das Git-Repository

Git-Klon https://github.com/certbot/certbot.git

Nach Abschluss des Klonens wird das Verzeichnis certbot in /usr/loca/ angezeigt.

5. Certbot anzeigen

Wechseln Sie in das Verzeichnis certbot

cd /usr/local/certbot

Wenn das Verzeichnis so aussieht, war die Installation erfolgreich.

Allgemeine Befehle von certbot Offizielle Dokumentation anzeigen

6. Installieren Sie nginx

Siehe das Installationsdokument von nginx

7. Beantragen Sie ein https-Zertifikat

Aktuelle Zertifikate anzeigen

./certbot-auto-Zertifikate

Bei der ersten Ausführung werden einige Abhängigkeiten installiert. Nach der Hälfte des Vorgangs wird eine Bestätigungsaufforderung angezeigt. Geben Sie Y ein.

Beginnen Sie mit der Beantragung eines Zertifikats (das Zertifikat ist 3 Monate gültig und muss nach Ablauf erneut beantragt werden). Methode 1: Verwenden Sie die DNS-Verifizierung. Diese Methode erfordert, dass Sie den Domänennamen konfigurieren können. Mir persönlich gefällt diese Methode./certbot-auto --server https://acme-v02.api.letsencrypt.org/directory -d Ihr Domänenname --manual --preferred-challenges dns-01 certonly Beispiel:

Konfigurieren von Platzhalterdomänennamen

Kopieren Sie den Code wie folgt:
./certbot-auto --server https://acme-v02.api.letsencrypt.org/directory -d *.nl166.com --manual --preferred-challenges dns-01 certonly

Konfigurieren eines bestimmten Domänennamens

Kopieren Sie den Code wie folgt:
./certbot-auto --server https://acme-v02.api.letsencrypt.org/directory -d api.nl166.com --manual --preferred-challenges dns-01 certonly

Konfigurieren eines sekundären Platzhalterdomänennamens

Kopieren Sie den Code wie folgt:
./certbot-auto --server https://acme-v02.api.letsencrypt.org/directory -d *.api.nl166.com --manual --preferred-challenges dns-01 certonly

Wie im Bild oben zu sehen, werden Sie beim ersten Mal aufgefordert, eine E-Mail-Adresse einzugeben. Geben Sie diese einfach wie erforderlich ein. Anschließend wird Ihnen eine E-Mail zugesandt und Sie müssen Ihre E-Mail-Adresse mit einem Klick bestätigen. Geben Sie also unbedingt die echte E-Mail-Adresse ein und bestätigen Sie diese anschließend wie erforderlich. Wenn Sie nicht bestätigen, können Sie nicht fortfahren.

Als Nächstes werden Sie aufgefordert, den Domänennamen zu bestätigen und bei Bedarf einen TXT-Eintrag aufzulösen.

Speichern und bestätigen, dann zur Bestätigung zum Server zurückkehren

Die beiden oben genannten Dateien sind die Zertifikate, die zur Konfiguration von https verwendet werden

Methode 2: Verwenden von Plugins

Schauen wir uns zunächst an, was der Beamte gesagt hat

Hier verwende ich nginx (es wird nginx nach der Anwendung automatisch neu gestartet). Diese Methode kann keine Platzhalterdomänennamen konfigurieren, Sie können sie nur einzeln hinzufügen

./certbot-auto --nginx -d api2.nl166.com 

Um den obigen Fehler zu beheben, beachten Sie bitte, dass /usr/local/nginx durch den tatsächlichen Installationsort Ihres nginx ersetzt werden sollte, um LNMP zu installieren

ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

ln -s /usr/local/nginx/conf/ /etc/nginx

Führen Sie die Anwendung erneut aus

Sie werden gefragt, ob der HTTP-Verkehr auf HTTPS umgeleitet und der HTTP-Zugriff gelöscht werden soll. Sie können entsprechend Ihren Anforderungen auswählen. Ich breche die Auswahl hier ab (tatsächlich kann dieser Schritt direkt ignoriert werden. Nach dem Testen kann auf die URL https zugegriffen werden, bevor dieser Schritt ausgewählt wird.)

Wenn Sie den Abfrageschritt überspringen möchten, können Sie certonly hinzufügen. Diese Methode generiert nur ein Zertifikat, ohne andere Vorgänge auszuführen. Die Zertifikatskonfiguration muss wie folgt manuell hinzugefügt werden:

./certbot-auto certonly --nginx -d api2.nl166.com 

Wie in der obigen Abbildung gezeigt, findet ein Server, der Port 443 abhört, automatisch die Konfigurationsdatei für den entsprechenden Domänennamen und fügt die folgenden zwei Zeilen hinzu. Dadurch wird auch mein Format durcheinandergebracht, und die Einrückung der }-Nummer entspricht nicht der Einrückung des { oben, aber dies hat keinen Einfluss auf die Funktion. Ich weiß nicht, ob je nach Version von Nginx SSL hinzugefügt wird.

Da meine Version von Nginx dies nicht erfordert, muss bei niedrigeren Versionen SSL hinzugefügt werden, um den HTTPS-Zugriff zu ermöglichen.

Wenn der Port 443 des Domänennamens nicht überwacht wird, werden die Informationen an folgender Stelle hinzugefügt

Bitte erkunden Sie selbst andere Methoden

8. Konfigurieren Sie nginx zur Unterstützung von https

# HTTPS-Server
 #
 Server {
 hören Sie 443 SSL;
 Servername api2.nl166.com;
 Stammverzeichnis /data/web/im.nl166.com;

 Standort / {
 Indexierung index.php;
 }

 #auth_basic "Hallo Welt";
 #auth_basic_user_file /usr/local/nginx/conf/auth/nl166.auth;

 Standort ~ \.php$ {
 fastcgi_params einschließen;
 fastcgi_pass unix:/tmp/php-fcgi.sock;
 fastcgi_index index.php;
 fastcgi_param SCRIPT_FILENAME $Dokumentstammsatz$fastcgi_script_name;
 }
 Standort ~ .*.(svn|git|cvs) {
 alles leugnen;
 }

 ssl_certificate /etc/letsencrypt/live/api2.nl166.com/fullchain.pem; # verwaltet von Certbot
 ssl_certificate_key /etc/letsencrypt/live/api2.nl166.com/privkey.pem; # verwaltet von Certbot
 }

Bei früheren Versionen müssen Sie SSL hinzufügen, um den https-Zugriff zu aktivieren.

9. Verwenden Sie Shell-Skripte und geplante Aufgaben, um Zertifikate regelmäßig zu erneuern

Hinweis: Um die Begrenzung der Anzahl der Vorgänge zu umgehen, fügen Sie den Parameter --dry-run hinzu. Nachdem die Ausführung korrekt war, entfernen Sie ihn und führen Sie den eigentlichen Erneuerungsvorgang aus. Erneuerung nach Methode 1

Der Domänenname lautet ****.conf im Verzeichnis /etc/letsencrypt/renewal/. **** ist der Domänenname, den Sie eingeben möchten. Als ich ihn beispielsweise generiert habe, war er *.nl166.com, aber als er tatsächlich generiert wurde, war kein * vorhanden.

/home/certbot-sh/au.sh Ersetzen Sie es durch Ihr eigenes Skript zum Aktualisieren von DNS

wie folgt:

Kopieren Sie den Code wie folgt:
./certbot-auto erneuern --cert-name nl166.com --manual-auth-hook /data/shell/crontab/auto_update_httpscert.sh --dry-run

Den Update-Befehl schreibst du in eine Datei. Ich habe sie in /data/shell/crontab/auto_update_httpscert.sh abgelegt. Der Inhalt ist wie folgt. Die ursprüngliche auto_update_httpscert.sh wird in /data/shell/cnl_update_httpscert.sh geändert.

Geplante Systemaufgaben hinzufügen

crontab -e

#Aktualisieren Sie das https-Zertifikat jeden Sonntag um 5:00 Uhr

0 5 * * 0 sh /data/shell/crontab/auto_update_httpscert.sh

Das Erneuerungsverfahren für Methode 2 ist wie folgt:

./certbot-auto certonly --renew-by-default --nginx -d api2.nl166.com --dry-run 

Referenzmethode 1 zum Hinzufügen von geplanten Systemaufgabenvorgängen

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:
  • Detaillierte Konfiguration von Nginx, das sowohl Http als auch Https unterstützt
  • Nexus verwendet Nginx-Proxy zur Unterstützung des HTTPS-Protokolls
  • Verwenden Sie nginx + sekundären Domänennamen + https-Unterstützung
  • Detaillierte Erläuterung der SSL-Modulkonfiguration von Nginx zur Unterstützung des HTTPS-Zugriffs
  • So erstellen und konfigurieren Sie Nginx zur Unterstützung von HTTPS
  • So konfigurieren Sie Nginx mithilfe des SSL-Moduls für die Unterstützung des HTTPS-Zugriffs
  • Detaillierte Erklärung zur Verwendung des SSL-Moduls zum Konfigurieren der HTTPS-Unterstützung in Nginx
  • CentOS7-Konfiguration Nginx-Unterstützung HTTPS-Zugriff Implementierungslösung
  • Nginx konfiguriert denselben Domänennamen, um sowohl den http- als auch den https-Zugriff zu unterstützen

<<:  Detailliertes Beispiel zum Abrufen des Maximalwerts jeder Gruppe nach der Gruppierung in MySQL

>>:  Detaillierte Erläuterung der Nest.js-Parametervalidierung und des benutzerdefinierten Rückgabedatenformats

Artikel empfehlen

Linux-Fernsteuerungsprogramm für Windows-System (drei Methoden)

Manchmal müssen wir Programme auf dem Windows-Sys...

Einführung in Docker-Container

Docker-Übersicht Docker ist eine Open-Source-Lösu...

Grafisches Tutorial zur kostenlosen Installationsversion von MySQL 5.7.17 winx64

Aktuelle Erfahrungen mit der Installation der kos...

Verwenden von Textschatten- und Elementschatteneffekten in CSS

Einführung in Textschatten Verwenden Sie in CSS d...

Detaillierte Schritte zur Entwicklung von WeChat-Miniprogrammen mit Typescript

Auf die Vorteile von Typescript müssen wir nicht ...

C# implementiert MySQL-Befehlszeilensicherung und -wiederherstellung

Es gibt viele Tools zum Sichern von MySQL-Datenba...

MySQL 8.0.16 Installations- und Konfigurations-Tutorial unter CentOS7

Deinstallieren Sie die alte MySQL-Version (übersp...

10 Gründe, warum Linux immer beliebter wird

Linux wird von immer mehr Benutzern geliebt. Waru...

Docker+Selenium-Methode zur Realisierung automatischer Gesundheitsberichte

In diesem Artikel wird das Gesundheitsmeldesystem...

Konfigurationsschritte für die MySQL-Gruppenreplikation (empfohlen)

MySQL-Group-Replication ist eine neue Funktion, d...

Installieren des Ping-Tools in einem von Docker erstellten Container

Denn die von Docker abgerufenen Basisimages wie C...

Detaillierte Erklärung des Befehls mkdir beim Linux-Lernen

Inhaltsverzeichnis Vorwort 1. Grundkenntnisse zu ...

Vue.js implementiert eine Bildwechselfunktion

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