Detaillierte Erläuterung des Prinzips und des Implementierungsprozesses der Nginx-Konfiguration https

Detaillierte Erläuterung des Prinzips und des Implementierungsprozesses der Nginx-Konfiguration https

Verwenden Sie das Linux-Dienstprogramm certbot, um https-Zertifikate zu generieren

Dieses Tool generiert ein Let’s Encrypt-Zertifikat.

Let's Encrypt ist eine Zertifizierungsstelle für digitale Zertifikate. Let's Encrypt ist ein Dienst der Internet Security Research Group (ISRG, eine gemeinnützige Organisation).

Kostenlose SSL/TLS-Zertifikate werden bereitgestellt

Am 3. Dezember 2015 trat der Dienst in die öffentliche Betaphase ein und wurde offiziell der Öffentlichkeit vorgestellt.

Am 12. April 2016 verließ das Projekt offiziell die Beta-Phase.

Bis zum 9. September 2016 hat Let’s Encrypt 10 Millionen Zertifikate ausgestellt.

Daher ist es für die meisten kleinen und mittelgroßen Websites eine Option, die es zu erwägen lohnt.

Schritte zur https-Konfiguration

1Öffnen Sie https://certbot.eff.org/ und wählen Sie das entsprechende Betriebssystem und den entsprechenden Webserver aus

Hier wähle ich den Nginx-Server auf dem CentOS7-Server

2Führen Sie den Befehl aus und ändern Sie die entsprechenden Domänennamenparameter nach Bedarf.

Certbot muss über yum installiert werden. Certbot ist in der Epel-Quelle enthalten.

Installieren und starten Sie die Epel-Bibliothek, installieren Sie den Epel-Quellcode-View-Link

https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F

Starten Sie die Epel-Quelle. Sie können Epel manuell oder mit dem Befehl yum-config-manager starten.

Installieren Sie yum-config-manager

yum -y installiere yum-utils

Start epel

yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional

3 Certbot installieren

sudo yum installiere certbot python2-certbot-nginx

Zwei Möglichkeiten zum Erhalt von Zertifikaten: Authenticator und Installer

Verwenden Sie zur Installation das WebRoot-Plugin. Dies erfordert, dass Port 80 Ihres Servers normal erreichbar ist (dieser Domänenname gehört Ihnen).

Das WebRoot-Plugin übergibt certonly und --webroot (oder -w) an die Befehlszeile.

certbot certonly -w /var/www/beispiel -d www.beispiel.com

certbot certonly -w Webroot-Verzeichnis, auf das über http zugegriffen werden kann -d Domänenname zum Konfigurieren von https

Das obige Beispiel /var/www/ stellt den Stammpfad dar, auf den der Stammknoten in der nginx-Konfigurationsdatei zeigt

Das Webroot-Plugin funktioniert, indem es für jede angeforderte Domäne eine temporäre Datei ${webroot-path}/.well-known/acme-challenge erstellt.

Der Validierungsserver von Let’s Encrypt stellt dann HTTP-Anfragen, um zu überprüfen, ob der DNS jeder angeforderten Domäne auf den Server aufgelöst wird, auf dem certbot ausgeführt wird.

Der Zugangsantrag lautet wie folgt

66.133.109.36 - - [05/Jan/2016:20:11:24 -0500] "GET /.well-known/acme-challenge/HGr8U1IeTW4kY_Z6UIyaakzOkyQgPr_7ArlLgtZE8SX HTTP/1.1" 200 87 "-" "Mozilla/5.0 (kompatibel; Let’s Encrypt-Validierungsserver; +https://www.letsencrypt.org)"

Unser Server muss also den Zugriffspfad .well-known/acme-challenge öffnen

Zum Beispiel,

Server
  {
    hören Sie 80;
    Servername www.example.com; 
    Index index.html;
    root /var/www/beispiel;
  
    . . .
  
    Standort ~ /.well-known {
      alles erlauben;
    }
  }

Spezifische HTTP-Konfigurationsdatei

Server
  {
    hören Sie 80;
    Servername www.example.com; 
    indizierung indizierung.html;
    Wurzel /var/www/www.beispiel.com;


    Standort / {
      Proxy_Redirect aus;
      Proxy-Passwort http://localhost:8080;
      Proxy_Set_Header Host $host;
      Proxy_Set_Header X-Real-IP $Remote_Addr;
      proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for;
    }

    #Fehlerseite 404 /404.html;

    Standort /nginx_status
    {
      #stub_status ein;
      #access_log off;
    }

    Standort ~ /.well-known {
      alles erlauben;
    }

    Standort ~ /\.
    {
      alles leugnen;
    }
Zugriffsprotokoll /data/log/nginx//var/www/www.example.com/-access.log;
    Fehlerprotokoll /data/log/nginx//var/www/www.example.com/-error.log;
}

Nach der Ausführung des Befehls wird das https-Zertifikat im Verzeichnis /etc/letsencrypt/live generiert

certbot certonly -w /var/www/example -d www.example.com

Beispielsweise generiert der obige Befehl das Zertifikat /etc/letsencrypt/live/www.example.com/fullchain.pem

Generieren Sie die Zertifikatsschlüsseldatei /etc/letsencrypt/live/www.example.com/privkey.pem

Dann müssen wir nur noch die https-Konfiguration für den Domänennamen hinzufügen, und unser nginx vervollständigt die https-Konfiguration

https entspricht Port 443

Spezifische https-Konfigurationsdatei

Server
  {
    hören Sie 443 SSL http2;
    #listen [::]:443 ssl http2;
    Servername www.example.com;
    index index.html index.htm index.php standardmäßig.html standardmäßig.htm standardmäßig.php;
    Wurzel /var/www/www.example.com/;
    
    SSL aktiviert;
    SSL-Zertifikat /etc/letsencrypt/live/www.example.com/fullchain.pem;
    SSL-Zertifikatsschlüssel /etc/letsencrypt/live/www.example.com/privkey.pem;
    
   Standort / {
      Proxy_Redirect aus;
      Proxy-Passwort http://localhost:8080;
      Proxy_Set_Header Host $host;
      Proxy_Set_Header X-Real-IP $Remote_Addr;
      proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for;
    }

    #Fehlerseite 404 /404.html;

    Fügen Sie enable-php-pathinfo.conf hinzu.

    Standort ~ /.well-known {
      alles erlauben;
    }

    Standort ~ /\.
    {
      alles leugnen;
    }

    Zugriffsprotokoll /data/log/nginx/www.example.com-ssl-access.log;
    Fehlerprotokoll /data/log/nginx/www.example.com-ssl-error.logs;  
}

Sehen Sie sich das Produktionszertifikat an

Baum /etc/letsencrypt/live/

Zertifikatserneuerung

Das von Let's Encrypt generierte kostenlose Zertifikat ist 3 Monate gültig, wir können das Zertifikat jedoch unbegrenzt oft erneuern

Certbot erneuern

Verwenden Sie einen Timer, um Zertifikate automatisch neu zu generieren

0 0,12 * * * python -c 'import random; import time; Zeit.Schlaf(random.random() * 3600)' und Certbot erneuern

CentOS 6 verwenden

1 Holen Sie sich den Certbot-Client

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto

2 Stoppen Sie nginx

Dienst Nginx stoppen

3 Zertifikat generieren

./certbot-auto certonly --standalone --email „Ihre E-Mail-Adresse“ -d „Ihre Domänenname-Adresse“

Wenn die aktuelle Website mehrere Domänennamen hat, müssen Sie diese am Ende hinzufügen, zum Beispiel

./certbot-auto certonly --standalone --email `Ihre E-Mail-Adresse` -d `Ihr Domänenname 1` -d `Ihr Domänenname 2`

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:
  • Beispiel für die Konfiguration von nginx zur Implementierung von SSL
  • Nginx implementiert ein Codebeispiel für die https-Websitekonfiguration
  • Detailliertes Tutorial zur Konfiguration von Nginx für https-verschlüsselten Zugriff
  • Implementierung der Nginx-Domänennamenweiterleitung für den HTTPS-Zugriff
  • Alibaba Cloud Nginx konfiguriert https, um ein Domänennamen-Zugriffsprojekt zu implementieren (grafisches Tutorial)
  • 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
  • Implementierung von HTTP- und HTTPS-Diensten mit Nginx-Reverse-Proxy für mehrere Domänennamen
  • Beispielcode für die Verwendung von Nginx zur Implementierung einer 301-Weiterleitung zum https-Stammdomänennamen
  • So ändern Sie in Nginx die über http aufgerufene Website in https

<<:  So überspringen Sie Fehler bei der MySQL-Master-Slave-Replikation

>>:  Vue realisiert den Produktlupeneffekt

Artikel empfehlen

Eine kurze Analyse von Linux resolv.conf

1. Einleitung resolv.conf ist die Konfigurationsd...

So löschen Sie den MySQL 8.0-Dienst vollständig unter Linux

Bevor Sie diesen Artikel lesen, sollten Sie sich ...

So führen Sie einen Befehl zu einem bestimmten Zeitpunkt in Linux aus

Neulich habe ich rsync verwendet, um eine große D...

Eine kurze Diskussion zur Auftragsrekonstruktion: MySQL-Sharding

Inhaltsverzeichnis 1. Ziele 2. Umweltvorbereitung...

Best Practices zum Teilen von React-Code

Wenn ein Projekt eine gewisse Komplexität erreich...

Zusammenfassung der Probleme mit der Mysql-connector-java-Treiberversion

Problem mit der Mysql-Connector-Java-Treiberversi...

JS realisiert einfachen Bildkarusselleffekt

In diesem Artikel wird der spezifische JS-Code zu...

Node+Socket realisiert einfache Chatroom-Funktion

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

Detaillierte Schritte zum Starten des Django-Projekts mit nginx+uwsgi

Wenn wir ein Webprojekt mit Django entwickeln, wi...

JS+Canvas zeichnet ein Glücksrad

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

jQuery realisiert die volle Funktion des Einkaufswagens

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

Zusammenfassung gängiger Toolbeispiele in MySQL (empfohlen)

Vorwort Dieser Artikel stellt hauptsächlich die r...

JavaScript entfernt unnötige Eigenschaften eines Objekts

Inhaltsverzeichnis Beispiel Methode 1: Löschen Me...