GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

Kostenloses SSL für Nginx auf Centos von Let’s encrypt

Übersicht

Let’s encrypt ist eine Zertifizierungsstelle, die eine einfache Möglichkeit bietet, kostenlos ein SSL/TLS-Zertifikat für Ihre Website zu erhalten, wodurch verschlüsseltes https auf Webservern ermöglicht wird. Let’s Encrypt vereinfacht die Beschaffung und Installation von SSL-Zertifikaten mit einer Software namens CertBot. Dieser Software-Client dient einem vollautomatischen Prozess für Apache-Webserver. Kostenlose SSL-Zertifikate von Let’s Encrypt können jedoch mit einigen internen Anpassungen manuell auf jedem Webserver installiert werden.

In diesem Tutorial demonstrieren wir das Verfahren zur Verwendung von certbot-auto Lassen Sie uns den Client verschlüsseln, um ein kostenloses SSL-Zertifikat zu erhalten und es mit Nginx unter Ubuntu 14.04 zu verwenden. Dieses Tutorial erklärt Ihnen auch, wie Sie Ihr SSL-Zertifikat automatisch erneuern können. Wenn Sie einen anderen Webserver betreiben, folgen Sie einfach der Dokumentation Ihres Webservers, um zu erfahren, wie Sie das Zertifikat mit Ihrer Einrichtung verwenden.

Voraussetzung

  • Nicht-Root-Benutzer mit Sudo-Berechtigungen
  • Sie müssen die Domain besitzen oder die administrative Kontrolle über die Domain haben, für die Sie ein SSL-Zertifikat erwerben möchten.
  • Ein unter dem DNS-Panel erstellter A-Record, der Ihre Domain auf die öffentliche IP-Adresse Ihres Servers verweist. Dies ist erforderlich, da Let’s Encrypt validiert, dass Sie der Eigentümer der Domain sind, für die es ein Zertifikat ausstellt. Zum Beispiel, wenn Sie ein Zertifikat für example.com erhalten möchten , muss diese Domäne zu Ihrem Server aufgelöst werden, damit der Validierungsprozess funktioniert. Unser Setup verwendet example.com und www.example.com wie die Domänennamen, daher sind beide DNS-Einträge erforderlich

Schritt 1 – Let’s Encrypt Client installieren

Zunächst müssen Sie den CertBot-Softwareclient auf Ihren Server herunterladen. Sie können CertBot von der offiziellen EFF-Website herunterladen.

Laden Sie die CertBot-Software in das Verzeichnis /usr/local/sbin directory on your server:

cd /usr/local/sbin
sudo wget https://dl.eff.org/certbot-auto
$ cd /usr/local/sbin   
sudo wget https://dl.eff.org/certbot-auto
[sudo] password for example: 
--2016-11-28 13:26:28--  https://dl.eff.org/certbot-auto
Resolving dl.eff.org... 173.239.79.196
Connecting to dl.eff.org|173.239.79.196|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 44442 (43K) [text/plain]
Saving to: `certbot-auto'

100%[======================================>] 44,442       154K/s   in 0.3s    

2016-11-28 13:26:30 (154 KB/s) - `certbot-auto' saved [44442/44442]

Cert-Bot wird jetzt nach /usr/local/sbin auf Ihren Server heruntergeladen. Machen Sie nun die Datei ausführbar, indem Sie den folgenden Befehl eingeben:

sudo chmod a+x /usr/local/sbin/certbot-auto

Die Cerbot-Auto-Software kann nun installiert werden.

Schritt 2 – Erhalten Sie ein Zertifikat

Es gibt eine Reihe von Möglichkeiten, ein SSL-Zertifikat von Let’s Encrypt über verschiedene Plugins zu erhalten. Sie müssen ein Authenticator-Plug-in erwerben, um ein SSL-Zertifikat zu erwerben. Stellen Sie sicher, dass diese Plugins nur das Zertifikat erhalten und Sie das Zertifikat manuell installieren müssen.

In diesem Tutorial verwenden wir ein Plugin namens Webroot zur Authentifizierung.

Webroot-Plugin

Das Webroot-Plug-in generiert eine exklusive Datei im Verzeichnis /.wellknown innerhalb Ihres Dokumentenstammverzeichnisses, auf die Let's Encrypt über Ihren Webserver zugreifen kann, und dies wird die Validierung abschließen Ihre Autorität über die Domain. Möglicherweise müssen Sie die Berechtigung für die Datei in / .well-known.

konfigurieren

Wenn Sie Ngnix noch nicht installiert haben, verwenden Sie die folgenden Befehle, um es zu installieren:

sudo yum update
sudo yum install ngnix

Um die Datei für certbot-auto zugänglich zu machen, nehmen wir einige erforderliche Änderungen an der Nginx-Konfigurationsdatei vor. Die ngnix-Konfigurationsdatei wird standardmäßig im Verzeichnis /etc/nginx/sites-available/default abgelegt. Lassen Sie uns die Konfigurationsdatei bearbeiten:

sudo vim /etc/nginx/sites-available/default

Fügen Sie den folgenden Standortblock zur Datei hinzu:

Zu SSL-Serverblock hinzufügen
server {
        . . .

        location ~ /.well-known {
                allow all;
        }

        . . .
}

Sie werden auch nachsehen wollen, auf was Ihr Dokumentenstamm eingestellt ist, indem Sie nach root suchen Direktive, da der Pfad für die Verwendung des Webroot-Plugins erforderlich ist. Wenn Sie die Standardkonfigurationsdatei verwenden, ist das Stammverzeichnis /usr/share/nginx/html .

Speichern Sie die Datei, indem Sie Esc gefolgt von :wq drücken! und drücken Sie die Eingabetaste.

Sie können die Konfigurationsdatei auf Syntaxfehler überprüfen:

sudo nginx -t

Wenn Sie feststellen, dass die Konfigurationsdatei frei von Syntaxfehlern ist, starten Sie den ngnix-Dienst neu

sudo service nginx restart

Nun können wir das Webroot-Plugin zur Validierung verwenden, da wir den genauen Speicherort des Webroot-Pfads kennen. Verwenden Sie den folgenden Befehl zum Anfordern eines SSL-Zertifikats mit dem Webroot-Plugin:

certbot-auto certonly -a webroot --webroot-path=/usr/share/nginx/html -d example.com -d www.example.com

Domainnamen müssen mit dem -d angegeben werden Möglichkeit. Wenn Sie möchten, dass ein einzelnes Zertifikat mit mehreren Domainnamen funktioniert (z. B. example.com und www.example.com ), stellen Sie sicher, dass Sie alle einbeziehen, beginnend mit der Domain mit der höchsten Ebene (z. B. example.com ).

Hinweis: Das certbot-auto Software erfordert Superuser-Rechte, daher müssen Sie Ihr Passwort eingeben, wenn Sie sudo nicht verwendet haben vor kurzem.

Wenn certbot-auto initialisiert, werden Sie nach einigen Informationen gefragt. Die genauen Eingabeaufforderungen können je nachdem, ob Sie certbot-auto verwendet haben, variieren Kunde vor. Geben Sie die erforderlichen Informationen ein und wählen Sie am Ende „Zustimmen“ aus.

Output:
IMPORTANT NOTES:
 - If you lose your account credentials, you can recover through
   e-mails sent to [email protected]
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/example.com/fullchain.pem. Your
   cert will expire on 2016-03-15. To obtain a new version of the
   certificate in the future, simply run Let's Encrypt again.
 - Your account credentials have been saved in your Let's Encrypt
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Let's
   Encrypt so making regular backups of this folder is ideal.
 - If like Let's Encrypt, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Notieren Sie den Pfad und das Ablaufdatum aus der Ausgabe.

Firewall-Hinweis: Wenn Sie eine Fehlermeldung wie Failed to connect to host for DVSNI challenge erhalten , muss die Firewall Ihres Servers möglicherweise so konfiguriert werden, dass TCP-Datenverkehr auf Port 80 zugelassen wird und 443 .

Hinweis: Wenn Ihre Domain über einen DNS-Dienst wie CloudFlare weitergeleitet wird, müssen Sie ihn vorübergehend deaktivieren, bis Sie das Zertifikat erhalten haben.

Zertifikatsdateien

Nachdem Sie das Zertifikat erhalten haben, haben Sie die folgenden PEM-codierten Dateien:

  • cert.pem: Das Zertifikat Ihrer Domain
  • chain.pem: Das Kettenzertifikat von Let’s Encrypt
  • fullchain.pem:cert.pem und chain.pem kombiniert
  • privkey.pem: Der private Schlüssel Ihres Zertifikats

Sie können überprüfen, ob die Dateien existieren, indem Sie diesen Befehl ausführen (indem Sie Ihren Domänennamen ersetzen):

sudo ls -l /etc/letsencrypt/live/your_domain_name

Die Ausgabe sollte die vier zuvor erwähnten Zertifikatsdateien sein. Gleich werden Sie Ihren Webserver für die Verwendung von fullchain.pem konfigurieren als Zertifikatsdatei und privkey.pem als Zertifikatschlüsseldatei.

Erzeugen Sie eine starke Diffie-Hellman-Gruppe

Um die Sicherheit weiter zu erhöhen, generieren Sie eine starke Diffie-Hellman-Gruppe mit dem folgenden Befehl:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Der Pfad der DH-Gruppe wäre /etc/ssl/certs/dhparam.pem 2048

Schritt 3 – Konfigurieren Sie TLS/SSL auf dem Webserver (Nginx)

Jetzt müssen Sie Ihren Nginx-Webserver konfigurieren, um ihn zu verwenden. Bearbeiten Sie die Nginx-Konfiguration, die Ihren Serverblock enthält:

sudo nano /etc/nginx/sites-available/default

Suchen Sie den server Block. Auskommentieren oder löschen die Zeilen, die diesen Serverblock so konfigurieren, dass er auf Port 80 lauscht. In der Standardkonfiguration sollten diese beiden Zeilen gelöscht werden:

Nginx-Konfigurationslöschungen
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

Wir werden diesen Serverblock so konfigurieren, dass er stattdessen auf Port 443 mit aktiviertem SSL lauscht. Innerhalb Ihres server { Block, fügen Sie die folgenden Zeilen hinzu, aber ersetzen Sie alle Instanzen von example.com mit eigener Domain:

Nginx-Konfigurationsergänzungen – 1 von 3
        listen 443 ssl;

        server_name example.com www.example.com;

        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

Dies ermöglicht Ihrem Server, SSL zu verwenden, und weist ihn an, das SSL-Zertifikat von Let’s Encrypt zu verwenden, das wir zuvor erhalten haben.

Um nur die sichersten SSL-Protokolle und -Chiffren zuzulassen und die von uns generierte starke Diffie-Hellman-Gruppe zu verwenden, fügen Sie demselben Serverblock die folgenden Zeilen hinzu:

Nginx-Konfigurationsergänzungen – 2 von 3
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_dhparam /etc/ssl/certs/dhparam.pem;
        ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
        ssl_session_timeout 1d;
        ssl_session_cache shared:SSL:50m;
        ssl_stapling on;
        ssl_stapling_verify on;
        add_header Strict-Transport-Security max-age=15768000;

Zuletzt fügen Sie außerhalb des ursprünglichen Serverblocks (der auf HTTPS, Port 443 lauscht) diesen Serverblock hinzu, um HTTP (Port 80) auf HTTPS umzuleiten.

Nginx-Konfigurationsergänzungen – 3 von 3
server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

Speichern und beenden.

Testen Sie die Konfigurationsdatei auf Syntaxfehler, indem Sie Folgendes eingeben:

sudo nginx -t

Sobald Sie überprüft haben, dass keine Syntaxfehler vorliegen, setzen Sie die Änderungen in Kraft, indem Sie Nginx neu starten:

sudo service nginx restart

Das TLS/SSL-Zertifikat von Let’s Encrypt ist jetzt vorhanden. An dieser Stelle sollten Sie testen, ob das TLS/SSL-Zertifikat funktioniert, indem Sie Ihre Domain über HTTPS in einem Webbrowser aufrufen.

Sie können den Qualys SSL Labs-Bericht verwenden, um zu sehen, wie Ihre Serverkonfiguration abschneidet:

In einem Webbrowser:
https://www.ssllabs.com/ssltest/analyze.html?d=example.com

Dieses SSL-Setup sollte ein A+ melden Bewertung.

Schritt 4 – Richten Sie die automatische Verlängerung ein

Let’s Encrypt-Zertifikate sind 90 Tage lang gültig, aber es wird empfohlen, dass Sie die Zertifikate alle 60 Tage erneuern, um eine Fehlerspanne zuzulassen. Zum Zeitpunkt des Verfassens dieses Artikels ist die automatische Verlängerung noch nicht als Funktion des Clients selbst verfügbar, aber Sie können Ihre Zertifikate manuell erneuern, indem Sie certbot-auto ausführen Client mit dem renew Option.

Führen Sie diesen Befehl aus, um den Erneuerungsprozess für alle installierten Domänen auszulösen:

certbot-auto renew

Da wir das Zertifikat kürzlich installiert haben, prüft der Befehl nur das Ablaufdatum und gibt eine Nachricht aus, die darüber informiert, dass das Zertifikat noch nicht erneuert werden muss. Die Ausgabe sollte etwa so aussehen:

Ausgabe:
Checking for new version...
Requesting root privileges to run letsencrypt...
   /home/sammy/.local/share/letsencrypt/bin/letsencrypt renew
Processing /etc/letsencrypt/renewal/example.com.conf

The following certs are not due for renewal yet:
  /etc/letsencrypt/live/example.com/fullchain.pem (skipped)
No renewals were attempted.

Beachten Sie, dass, wenn Sie ein gebündeltes Zertifikat mit mehreren Domänen erstellt haben, nur der Basisdomänenname in der Ausgabe angezeigt wird, aber die Verlängerung für alle in diesem Zertifikat enthaltenen Domänen gültig sein sollte .

Ein praktischer Weg, um sicherzustellen, dass Ihre Zertifikate nicht veraltet sind, besteht darin, einen Cron-Job zu erstellen, der den automatischen Verlängerungsbefehl regelmäßig für Sie ausführt. Da die Verlängerung zuerst das Ablaufdatum prüft und die Verlängerung nur dann ausführt, wenn das Zertifikat in weniger als 30 Tagen abläuft, ist es sicher, einen Cron-Job zu erstellen, der beispielsweise jede Woche oder sogar jeden Tag ausgeführt wird.

Lassen Sie uns die crontab bearbeiten, um einen neuen Job zu erstellen, der den Erneuerungsbefehl jede Woche ausführt. Um die Crontab für den Root-Benutzer zu bearbeiten, führen Sie Folgendes aus:

sudo crontab -e

Fügen Sie die folgenden Zeilen hinzu:

crontab-Eintrag
30 2 * * 1 /usr/local/sbin/certbot-auto renew >> /var/log/le-renew.log
35 2 * * 1 /etc/init.d/nginx reload

Speichern und beenden. Dadurch wird ein neuer Cron-Job erstellt, der certbot-auto renew ausführt Befehl jeden Montag um 2:30 Uhr und laden Sie Nginx um 2:35 Uhr neu (damit das erneuerte Zertifikat verwendet wird). Die vom Befehl erzeugte Ausgabe wird an eine Protokolldatei weitergeleitet, die sich unter /var/log/le-renewal.log befindet .


Cent OS
  1. So installieren Sie das SSL-Zertifikat auf Apache für CentOS 7

  2. Sichern von ISPConfig 3.1 mit einem kostenlosen SSL-Zertifikat von Lets Encrypt

  3. Let’s Encrypt:Holen Sie sich ein kostenloses SSL-Zertifikat mit Certbot

  4. Sichern Sie Apache mit Let's Encrypt auf CentOS 7 - Schritt-für-Schritt-Prozess?

  5. So erhalten Sie ein kostenloses SSL-Zertifikat mit SSL It! und Let’s Encrypt auf Plesk

So installieren Sie ein kostenloses SSL-Zertifikat für Apache unter CentOS 8

So installieren Sie ein kostenloses SSL-Zertifikat für Nginx unter CentOS 8

Wie aktiviere ich das kostenlose SSL-Zertifikat von Let’s encrypt für meine Domain in Plesk?

Sichern Sie Nginx mit Let’s Encrypt SSL-Zertifikat auf Ubuntu 18.04

So sichern Sie Nginx mit dem Let’s Encrypt SSL-Zertifikat

So sichern Sie Nginx mit Let’s Encrypt unter CentOS 8