Detaillierter Prozess zum Konfigurieren eines HTTPS-Zertifikats unter Nginx

Detaillierter Prozess zum Konfigurieren eines HTTPS-Zertifikats unter Nginx

1. Der Unterschied zwischen HTTP und HTTPS

HTTP: Dies ist das am weitesten verbreitete Netzwerkprotokoll im Internet. Es ist ein Standard für Client- und Serveranforderungen und -antworten (TCP). Es ist ein Übertragungsprotokoll zum Übertragen von Hypertext von WWW-Servern an lokale Browser. Es kann Browser effizienter machen und die Netzwerkübertragung reduzieren.

HTTPS: Dies ist ein HTTP-Kanal mit dem Ziel der Sicherheit. Einfach ausgedrückt handelt es sich um eine sichere Version von HTTP, d. h., unter HTTP wird eine SSL-Schicht hinzugefügt. Die Sicherheitsgrundlage von HTTPS ist SSL, daher ist SSL für verschlüsselte Details erforderlich. Die Hauptfunktionen des HTTPS-Protokolls können in zwei Typen unterteilt werden: Einer besteht darin, einen Informationssicherheitskanal einzurichten, um die Sicherheit der Datenübertragung zu gewährleisten; der andere besteht darin, die Authentizität der Website zu bestätigen.

Die Hauptunterschiede zwischen HTTPS und HTTP sind folgende:

1. Für das https-Protokoll muss ein Zertifikat bei einer Zertifizierungsstelle beantragt werden. Generell gibt es weniger kostenlose Zertifikate, sodass eine bestimmte Gebühr anfällt.

2. HTTP ist das Hypertext-Übertragungsprotokoll und Informationen werden im Klartext übertragen, während HTTPS das sichere SSL-verschlüsselte Übertragungsprotokoll ist.

3. http und https verwenden völlig unterschiedliche Verbindungsmethoden und unterschiedliche Ports. Ersteres ist 80 und letzteres ist 443.

4. Die HTTP-Verbindung ist sehr einfach und zustandslos. 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.

2. Generieren Sie ein Zertifikat mit openssl

OpenSSL ist das beliebteste SSL-Kryptografiebibliothekstool, das eine allgemeine, robuste und voll funktionsfähige Tool-Suite zur Unterstützung der Implementierung des SSL/TLS-Protokolls bietet.

Beispielsweise generiert zu: /usr/local/ssl

openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /usr/local/ssl/nginx.key -out /usr/local/ssl/nginx.crt

Generierungsprozess:

# openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /usr/local/ssl/nginx.key -out /usr/local/ssl/nginx.crt
Generieren eines 2048-Bit-RSA-Privatschlüssels
.................................................................................+ ++
...............+++
neuen privaten Schlüssel in „/usr/local/ssl/nginx.key“ schreiben
-----
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) []:beijing
Ortsname (z. B. Stadt) [Standardstadt]: Peking
Name der Organisation (z. B. Firma) [Standard Company Ltd]: xxxx
Name der Organisationseinheit (z. B. Abschnitt) []:xxxx
Allgemeiner Name (z. B. Ihr Name oder der Hostname Ihres Servers) []:xxxx (normalerweise ein Domänenname)
E-Mail-Adresse []:[email protected]
#ll
insgesamt 8
-rw-r--r--. 1 root root 1391 21. April 13:29 nginx.crt
-rw-r--r--. 1 root root 1704 21. April 13:29 nginx.key

3. Installieren Sie das Modul http_ssl_module in Nginx

Wenn das SSL-Modul in Nginx nicht aktiviert ist, wird beim Konfigurieren von Https eine Fehlermeldung angezeigt.

nginx: [emerg] der Parameter „ssl“ erfordert ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:xxx

Nginx fehlt das Modul http_ssl_module. Fügen Sie beim Kompilieren und Installieren einfach die Konfiguration --with-http_ssl_module hinzu.

In diesem Szenario wurde nginx auf dem Server installiert, aber http_ssl_module wurde nicht installiert.

1. Geben Sie das Quellpaket ein, beispielsweise:

cd /app/download/nginx-1.12.2

2.Konfigurieren:

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

#Benötigt möglicherweise abhängige Pakete yum -y install pcre-devel openssl openssl-devel

3. machen:

machen

4. Es ist nicht notwendig, „make install“ auszuführen, da sonst die Installation überschrieben wird.

5. Sichern Sie das ursprüngliche Nginx, zum Beispiel:

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_bak

6. Überschreiben Sie dann das ursprüngliche Nginx mit dem neu kompilierten Nginx (Nginx muss gestoppt werden).

cp ./objs/nginx /usr/local/nginx/sbin/

7. Überprüfen Sie den Installationsstatus:

/usr/local/nginx/sbin/nginx -V
Nginx-Version: nginx/1.12.2
erstellt mit gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)
erstellt mit OpenSSL 1.0.2k-fips 26. Januar 2017
TLS SNI-Unterstützung aktiviert
Argumente konfigurieren: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

4. Nginx-Konfiguration https

Fügen Sie einige Konfigurationsinformationen ein:

 Server {

    hören Sie 80;
		Servername www.IhreDomain.com;
	  rewrite ^(.*) https://$server_name$1 permanent; #http Weiterleitung zu https
  }
Server {
	hören Sie 443 SSL;
	Servername www.IhreDomain.com;
	SSL-Zertifikat /usr/local/ssl/nginx.crt;
	SSL-Zertifikatsschlüssel /usr/local/ssl/nginx.key;
	ssl_session_cache geteilt:SSL:1m;
	SSL-Sitzungszeitüberschreitung 5 Min.
	#Deaktivieren Sie die Serverversion im Header, um zu verhindern, dass Hacker Versionsschwachstellen ausnutzen server_tokens off;
	#Wenn die gesamte Site HTTPS ist und HTTP nicht berücksichtigt wird, können Sie HSTS hinzufügen, um Ihrem Browser mitzuteilen, dass die gesamte Site verschlüsselt ist, und den HTTPS-Zugriff zu erzwingen. fastcgi_param HTTPS on;
	fastcgi_param HTTP_SCHEME https;
	Zugriffsprotokoll /usr/local/nginx/logs/httpsaccess.log;
}

Prüfen Sie zunächst, ob die Konfiguration korrekt ist:

/usr/local/nginx/sbin/nginx -t
nginx: die Syntax der Konfigurationsdatei /usr/local/nginx/conf/nginx.conf ist in Ordnung
nginx: Test der Konfigurationsdatei /usr/local/nginx/conf/nginx.conf ist erfolgreich

Starten Sie nginx neu:

/usr/local/nginx/sbin/nginx -s neu laden

Zugang:

Dies ist das Ende dieses Artikels über den detaillierten Prozess der Konfiguration eines HTTPS-Zertifikats unter Nginx. Weitere relevante Inhalte zur Konfiguration eines HTTPS-Zertifikats unter Nginx finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Detailliertes Tutorial zur Konfiguration von Nginx für https-verschlüsselten Zugriff
  • Alibaba Cloud Nginx konfiguriert https, um ein Domänennamen-Zugriffsprojekt zu implementieren (grafisches Tutorial)
  • Detaillierte Erläuterung des Prinzips und des Implementierungsprozesses der Nginx-Konfiguration https
  • Nginx konfiguriert denselben Domänennamen, um sowohl den http- als auch den https-Zugriff zu unterstützen
  • Detaillierte Konfiguration von Nginx, das sowohl Http als auch Https unterstützt
  • Analyse des Konfigurationsprozesses der Nginx-HTTP-Integritätsprüfung
  • So konfigurieren Sie ein SSL-Zertifikat in Nginx, um den HTTPS-Dienst zu implementieren
  • Detaillierte Erläuterung der Frp-erzwungenen Umleitung zur https-Konfiguration unter Nginx
  • So installieren Sie Nginx in Docker und konfigurieren den Zugriff über https
  • Nginx-Konfiguration und -Kompatibilität mit der Codeanalyse der HTTP-Implementierung

<<:  Lösungen für Probleme bei der Leistungsoptimierung von MySQL-Indizes

>>:  Das Vue-Projekt implementiert eine Fortschrittsbalkenfunktion für den Dateidownload

Artikel empfehlen

Navicat: Mehrere Möglichkeiten zum Ändern des MySQL-Datenbankkennworts

Methode 1: Verwenden Sie den Befehl SET PASSWORD ...

Einige allgemeine Eigenschaften von CSS

CSS-Hintergrund: background:#00ffee; //Hintergrund...

MySQL-Triggersyntax und Anwendungsbeispiele

Dieser Artikel veranschaulicht anhand von Beispie...

Lösung für das MySQL IFNULL-Beurteilungsproblem

Problem: Die von mybatis zurückgegebenen Daten vo...

Warum der Befehl „explain“ MySQL-Daten ändern kann

Wenn Sie jemand fragen würde, ob die Ausführung v...

IE8 bietet eine gute Erfahrung: Aktivitäten

Heute habe ich einen kleinen Vorgeschmack auf IE8...

So verwenden Sie den Yum-Befehl

1. Einführung in yum Yum (vollständiger Name Yell...

Analyse des MySQL-Warnprotokolls zu abgebrochenen Verbindungen

Vorwort: Manchmal wird die mit MySQL verbundene S...