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

Detaillierte Erläuterung der Winkel-Zweiwegebindung

Inhaltsverzeichnis Bidirektionales Bindungsprinzi...

So implementieren Sie eine bidirektionale Bindungsfunktion in vue.js mit reinem JS

Inhaltsverzeichnis Lassen Sie uns zunächst über d...

So geben Sie Parametervariablen extern im Docker an

In diesem Artikel wird hauptsächlich erläutert, w...

Einfaches MySQL-Beispiel zum Sortieren chinesischer Schriftzeichen nach Pinyin

Wenn das Feld, in dem der Name gespeichert ist, d...

Beispielcode für HTML-Framesets

Dieser Artikel stellt ein möglichst einfaches Fra...

Reagieren Sie auf den nativen ScrollView-Pulldown-Aktualisierungseffekt

In diesem Artikel wird der spezifische Code des P...

Einführung in Container-Datenvolumes in Docker

Inhaltsverzeichnis Datenvolumen des Docker-Contai...

MySQL- und SQLYog-Installationstutorial mit Bildern und Text

1. MySQL 1.1 MySQL-Installation mysql-5.5.27-winx...