GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Erste Schritte mit Lets Encrypt SSL-Zertifikaten auf Ubuntu

Dieses Tutorial führt Sie durch Ihre allererste Konfiguration einer SSL-Website mit Let's Encrypt-Zertifizierung. Let's Encrypt ist eine neue SSL-Autorität, die kostenlose SSL-Zertifikate bereitstellt. Wir werden zwei vorhandene Tutorials verwenden („How to setup an intermediate compatible SSL website with Let’s Encrypt certificate“ und „The Perfect Server – Ubuntu 15.10 (Wily Werewolf) with Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot and ISPConfig 3“).

Das hier beschriebene Setup ist mit jedem Ubuntu LAMP-Server kompatibel, sodass Sie diesen auch als Basis-Setup verwenden können.

Dieses Tutorial zeigt Ihnen, wie Sie Let's Encrypt auf Servern ohne ISPConfig 3 einrichten, da es in Kürze eine direkte Implementierung des Let's Encrypt-Dienstes in der nächsten Version von ISPConfig 3 (Version 3.1) geben wird. Wenn Sie also vorhaben, ISPConfig zu verwenden, warten Sie auf die Version 3.1 und auch auf ein neues Tutorial.

Erstellung der Website

Der erste Schritt besteht darin, die Website-Konfiguration und das Verzeichnis zu erstellen und SSL (Apache mod_ssl) dafür zu aktivieren. Es liegt an Ihnen, ob Sie die Standardkonfiguration für eine Website auf einem Server verwenden oder mehrere vhosts verwenden möchten, um mehr als eine Domain zu hosten. Für eine zuverlässigere und skalierbarere Nutzung erstelle ich eine vhost-Konfiguration für meine „Lab“-Domäne isp1.cloudapp.net von Azure.

Alle vhosts werden unter Ubuntu und Debian standardmäßig im Verzeichnis /etc/apache2/sites-available gespeichert. Führen Sie den folgenden Befehl aus, um eine Liste vorhandener vhost-Konfigurationsdateien abzurufen.

ls -l /etc/apache2/sites-available/

Meine Ausgabe sieht so aus:

[email protected]:/home/falco# ls -l /etc/apache2/sites-available/
-rw-r--r-- 1 root root 1332 May 20 2015 000-default.conf
-rw-r--r-- 1 root root 6437 May 20 2015 default-ssl.conf

Wir können jetzt die "Standard"-Konfigurationsdatei zum Klonen verwenden und bearbeiten, oder wir können unsere eigene Konfiguration verwenden. Ich ziehe es vor, meine eigene Konfiguration zu verwenden, da ich das seit vielen Jahren tue, also erstellen wir einen neuen vhost, indem wir die folgende Datei erstellen:

vi /etc/apache2/sites-available/isp1.cloudapp.net.conf

Fügen Sie in diese Datei folgenden Inhalt ein:

<VirtualHost *:80>
ServerName isp1.cloudapp.net
ServerAlias www.isp1.cloudapp.net

DocumentRoot /home/web/isp1.cloudapp.net/public_html

ErrorLog /home/web/isp1.cloudapp.net/log/habdak.eu_error_log
CustomLog /home/web/isp1.cloudapp.net/log/habdak.eu_access_log combinedScriptAlias /cgi-bin/ /home/web/isp1.cloudapp.net/cgi-bin/
DirectoryIndex index.html index.htm index.php index.php4 index.php5

<Directory /home/web/isp1.cloudapp.net/public_html>
Options -Indexes +IncludesNOEXEC +SymLinksIfOwnerMatch +ExecCGI
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
AddType application/x-httpd-php .php
AddType application/json .json
</Directory>

<Directory /home/web/isp1.cloudapp.net/cgi-bin>
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
</Directory>

RemoveHandler .php
RemoveHandler .php5
php_admin_value engine Off
IPCCommTimeout 301
FcgidMaxRequestLen 1073741824
php_value memory_limit 128M
php_value suhosin.session.encrypt Off

</VirtualHost>

<VirtualHost *:443>

ServerName isp1.cloudapp.net
ServerAlias www.isp1.cloudapp.net
DocumentRoot /home/web/isp1.cloudapp.net/public_html

ErrorLog /home/web/isp1.cloudapp.net/log/habdak.eu_error_log
CustomLog /home/web/isp1.cloudapp.net/log/habdak.eu_access_log combined

ScriptAlias /cgi-bin/ /home/web/isp1.cloudapp.net/cgi-bin/
DirectoryIndex index.html index.htm index.php index.php4 index.php5

<Directory /home/web/isp1.cloudapp.net/public_html >
Options -Indexes +IncludesNOEXEC +SymLinksIfOwnerMatch +ExecCGI
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
AddType application/x-httpd-php .php
AddType application/json .json
</Directory>

<Directory /home/web/isp1.cloudapp.net/cgi-bin >
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
</Directory>

RemoveHandler .php
RemoveHandler .php5
php_admin_value engine Off
IPCCommTimeout 301
FcgidMaxRequestLen 1073741824
php_value memory_limit 128M
php_value suhosin.session.encrypt Off

SSLEngine on
SSLCertificateFile /home/web/isp1.cloudapp.net /ssl.cert
SSLCertificateKeyFile /home/web/isp1.cloudapp.net /ssl.key
SSLCACertificateFile /home/web/isp1.cloudapp.net /ssl.ca
SSLCipherSuite 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:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-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:!KRB5-DES-CBC3-SHA
SSLProtocol All -SSLv2 -SSLv3
SSLCompression off
SSLHonorCipherOrder On

</VirtualHost>

Ersetzen Sie den Domänennamen durch Ihre Domäne, wo immer er vorkommt, und speichern Sie die Datei. Um die Konfiguration zu aktivieren, führen Sie Folgendes aus:

a2ensite isp1.cloudapp.net.conf

Erstellen Sie nun die Ordner für die Website:

mkdir /home/web
mkdir /home/web/isp1.cloudapp.net
mkdir /home/web/isp1.cloudapp.net/public_html
mkdir /home/web/isp1.cloudapp.net/cgi-bin
mkdir /home/web/isp1.cloudapp.net/logs

Starten Sie Apache neu, um die neue Konfiguration zu übernehmen:

sudo service apache2 restart

Jetzt müssen wir die Zertifikatsdateien generieren.

Installieren Sie Let's Encrypt und generieren Sie Ihr erstes SSL-Zertifikat

  Ich ziehe es vor, das Root-Login für die Verwaltung zu verwenden, anstatt sudo vor jedem Befehl auszuführen, also lass uns su zum Root-Benutzer:

sudo su

Navigieren Sie zu Ihrem Root-Home-Verzeichnis:

cd ~root

Installieren Sie git zum Abrufen der Git-Repository-Dateien von Let's Encrypt:

apt-get install git

Klonen Sie nun das Git-Repository von Let's Encrypt:

git clone https://github.com/letsencrypt/letsencrypt.git letsencrypt

Navigieren Sie zu Ihrem neuen letsencrypt-Ordner:

cd letsencrypt

Und fordern Sie Ihr SSL-Zertifikat an:

./letsencrypt-auto certonly --webroot -w /home/web/isp1.cloudapp.net/public_html -d isp1.cloudapp.net

Wenn Sie ein Zertifikat für die Masterdomäne anfordern (Domäne der ersten Ebene, auch bekannt als cloudapp.net), verwenden Sie den Parameter -d zweimal. Mit und ohne www-Präfix wie folgt:

 ./letsencrypt-auto certonly --webroot -w /home/web/cloudapp.net/public_html -d cloudapp.net -d www.cloudapp.net

Andernfalls ist das Zertifikat für Besucher, die Ihre Website mit dem Präfix www öffnen, nicht gültig.

Sie können einem Zertifikat auch andere Subdomains hinzufügen. Wenn beispielsweise Ihre Subdomain admin.cloudapp.net mit derselben Website (demselben Ordner auf dem Server) übereinstimmt, sollten Sie sie auch zu diesem Zertifikat hinzufügen. Leider können Sie bei let's encrypt keine Platzhalter wie (*.cloudapp.net) verwenden.

Let's Encrypt aktualisiert automatisch alle Abhängigkeiten und führt Sie durch die Einrichtung. Alles, was Sie tun müssen, ist auf das Aufforderungsfenster zu warten, in dem Sie nach Ihrer E-Mail-Adresse gefragt werden. Diese Adresse wird nur zum Wiederherstellen verlorener Daten verwendet.

Ihre neuen Schlüssel werden jetzt standardmäßig in /etc/letsencrypt/ gespeichert. Wir werden sie mit unserem Website-Verzeichnis verknüpfen, damit wir die Schlüssel später verwalten können.

ln -s /etc/letsencrypt/archive/isp1.cloudapp.net/cert1.pem /home/web/isp1.cloudapp.net/ssl.cert
ln -s /etc/letsencrypt/archive/isp1.cloudapp.net/chain1.pem /home/web/isp1.cloudapp.net/ssl.ca
ln -s /etc/letsencrypt/archive/isp1.cloudapp.net/privkey1.pem /home/web/isp1.cloudapp.net/ssl.key

Jetzt sollten Sie mit SSL auf Ihre Website zugreifen können. Let's Encrypt informiert Sie automatisch rechtzeitig über ablaufende Zertifikate per E-Mail an die Adresse, die Sie bei der Installation von Let's Encrypt angegeben haben.


Ubuntu
  1. Erste Schritte mit LXD-Containern unter Ubuntu 16.04

  2. Sichern Sie Nginx mit Lets Encrypt auf Ubuntu 20.04

  3. Sichern Sie Apache mit Lets Encrypt auf Ubuntu 20.04

  4. So richten Sie Apache Subversion mit Lets encrypt SSL unter Ubuntu 18.04 ein

  5. Erste Schritte mit acme.sh Lets Encrypt SSL-Client

So installieren Sie ProjectSend mit Apache und Lets Encrypt SSL unter Ubuntu 20.04

So installieren Sie Moodle mit Nginx und Lets Encrypt SSL unter Ubuntu 20.04

So installieren Sie MediaWiki mit Nginx und Lets Encrypt SSL unter Ubuntu 20.04

So installieren Sie Gitea mit Nginx und kostenlosem Lets Encrypt SSL unter Ubuntu 20.04

So installieren Sie SSL-Zertifikate von Lets Encrypt unter Ubuntu 18.04

Erste Schritte mit dem ZFS-Dateisystem unter Ubuntu 19.10