Let’s Encrypt Zertifikate erstellen

Let’s Encrypt hat vor kurzem die öffentliche Beta Phase gestartet. Um das Abholen bzw. Einrichten eines SSL Zertifikates zu erleichtern habe ich dazu mal ein kleines Skript geschrieben. Let’s Encrypt setzt voraus dass eine gültige Domain vorhanden ist!
Die Zertifikate sind kostenlos und werden von allen gängigen Browsern erkannt.

Let’s Encrypt Client installieren

Let’s Encrypt Skript


#!/bin/bash

if [ -z $1 ] ; then
        echo
        echo "Domainname eingeben, z.B. $0 www.domain.de!!! Abbruch!!! "
        echo
        exit 1
        else
        domain=$1
fi

if ! which git > /dev/null ; then
        apt-get update
        apt-get -y install git
fi

cd

if ! [ -d letsencrypt ] ; then
        git clone https://github.com/letsencrypt/letsencrypt

        cd letsencrypt

        ./letsencrypt-auto
        else
        echo
        echo "letsencrypt schon im Root Ordner vorhanden!!!"
        echo
        cd letsencrypt
fi

pfad=usr/share/nginx

echo "Auswahl, bitte Zahl eingeben:"
echo "1 = standalone"
echo "2 = webroot"
echo "3 = manual"

read -p "Eingabe: " OPTION

case $OPTION in
        1)
        ./letsencrypt-auto certonly --standalone -d $domain
        ;;
        2)
        mkdir -p /$pfad/$domain/.well-known/acme-challenge
        ./letsencrypt-auto certonly --webroot -w /$pfad/$domain -d $domain
        ;;
        3)
        ./letsencrypt-auto certonly --manual -d $domain
        ;;
        *)
        echo "Falsche Eingabe!!! Abbruch!!!"
        exit 1
        ;;
esac

Schritt 1: Skript Downloaden

Let’s Encrypt Skript

wget https://download.rootsvr2.de/letsgetencrypt

Schritt 2: Skript ausführbar machen

chmod +x letsgetencrypt

Was macht das Let’s Encrypt Skript?

  • Prüft ob “git” installiert ist, installiert dieses wenn nicht vorhanden.
  • Lädt Let’s Encrypt von github herunter und installiert die benötigten Pakete für Let’s Encrypt.
  • Das Skript setzt ein vorkonfigurierten Webserver Nginx oder Apache voraus!
  • Ggf. muss der Webserver vorher gestoppt werden (Siehe Schritt 5)
  • Der Standardpfad für den Webordner ist im Skript “/usr/share/nginx/$1/”.
  • $1 ist der Übergabeparameter domain.de (Siehe Skript ausführen).

Schritt 3: Let’s Encrypt Einstellung für Nginx Webserver

Im Nginx Virtual Host muss noch eine Einstellung für die jeweilige Domain vorgenommen werden. Standardmäßig verweigert Nginx das Ausführen von Dateien und Verzeichnisse welche mit “Punkt” beginnen!


location ~ /.well-known/acme-challenge/(.*) {
		default_type text/plain;
}

Schritt 4: Let’s Encrypt Skript ausführen

./letsgetencrypt domain.de

“domain.de” durch den gewünschten Domainnamen ersetzen!

Schritt 5: Let’s Encrypt Skript Option wählen

Der Server muss auf Port 80 oder 443 erreichbar sein! Die “manuel” Option kann man z.B. auch Zuhause auf einer Linux Kiste ausführen.

Let's Encrypt Optionen

Auswahl 1: “standalone”

  • Nginx oder Apache müssen gestoppt werden da diese Option ein Programm auf Port 80 oder 443 ausführt, und es dadurch zu Konflikten kommt.
  • Einfachste Option, führt ein eigenständiges Programm aus und erstellt die Zertifikate.

“standalone” Nachteile:

  • Die Domain muss auf die IP des Servers zeigen wo auch diese Option ausgeführt wird.
  • Alle Programme die auf Port 80 o. 443 lauschen müssen gestoppt werden. I.d.R. Apache oder Nginx.

Auswahl 2: “webroot”

  • Nginx oder Apache müssen nicht gestoppt werden!
  • Skript erstellt den erforderlichen Ordner “.well-known/acme-challenge” im Webordner.
  • Das Erstellen des Authentifierungscodes macht Let’s Encrypt hier automatisch.

“webroot” Nachteile:

  • Die Domain muss auf die IP des Servers zeigen wo auch diese Option ausgeführt wird.

Auswahl 3: “manual”

  • Nginx oder Apache müssen nicht gestoppt werden!
  • Die Domain muss nicht auf die IP des Servers zeigen wo auch diese Option ausgeführt wird.
  • Ordner “.well-known/acme-challenge” muss im Webordner auf dem jeweiligen Server erstellt werden wo die Domain liegt.
  • In den Webordner wechseln und mkdir -p .well-known/acme-challenge ausführen.
  • Anschließend kopiert man den kompletten (printf “%s”…>…) von Let’s Encrypt erstellten Code und führt den Befehl im Webordner aus. Nicht “Strg C” drücken, sondern Text markieren, Konsole wechseln und mit rechter Maustaste einfügen.
  • Abschließend nur noch “Enter” drücken.

Ort wo die Zertifikate liegen

Alle erstellten Zertifikate, egal welche Option, werden unter /etc/letsencrypt/live/ abgelegt.

Schritt 6: Let’s Encrypt Zertifikate in den Webserver einbinden

cert.pem

Ist das Server Zertifikat oder auch Public Key.

  • Nginx: Siehe Abschnitt “fullchain.pem”
  • Apache: SSLCertificateFile /pfad/zum/ssl/cert/cert.pem
  • Apache: Ab Version 2.4.8 siehe Abschnitt “fullchain.pem”

privkey.pem

Ist der Private Key und muss geheimgehalten werden!

  • Nginx: ssl_certificate_key /pfad/zum/ssl/cert/privkey.pem
  • Apache: SSLCertificateKeyFile /pfad/zum/ssl/cert/privkey.pem

chain.pem

Ist der Public Key von Let’s Encrypt.

  • Nginx: Entfällt
  • Apache: SSLCertificateChainFile /pfad/zum/ssl/cert/chain.pem
  • Apache: Entfällt ab Version 2.4.8

fullchain.pem

Ist das Server Zertifikat und der Public Key von Let’s Encyrpt zusammen.

  • Nginx: ssl_certificate /pfad/zum/ssl/cert/fullchain.pem
  • Apache: SSLCertificateFile /pfad/zum/ssl/cert/fullchain.pem

Auf die nähere Konfiguration eines Webservers wird hier nicht eingegangen. Das würde sonst den Rahmen des Artikels sprengen.

Check Also

OpenVPN im DualStack Betrieb

Wie man OpenVPN im DualStack IPv4/IPv6 parallel betreibt Mit der OpenVPN Version 2.4 und höher ...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Lars Pilawski hat 4,73 von 5 Sternen 972 Bewertungen auf ProvenExpert.com