<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">%
% certs_dehydrated.tex
% Last Update: $Id$
%
%%%%%%%%%%%%%%%%%%%%%%%% Kapitel Certs_dehydrated %%%%%%%%%%%%%%%%%%%%%%%%%
%
% Achtung: Dateien muessen mit latin1-Encoding gespeichert werden!
% Attention: Files must be saved using latin1 encoding!
%

\chapter{Das Certs\_dehydrated-Paket}

\section{Die Einleitung}

   Dieses Paket stellt eine Funktionen zur Verf"ugung um automatisiert
   Let's Encrypt\texttrademark\ Zertifikate erstellen und verwalten zu
   k"onnen.

   Let's Encrypt\texttrademark\ ist eine freie, automatisierte, und
   offene Zertifizierungsstelle (CA), welche zum "offentlichen Wohl
   von der Internet Security Research Group (ISRG) betrieben wird.

   \hinweis{Let's Encrypt\texttrademark\ hat sich der Transparenz verpflichtet
       und ver"offentlicht deshalb regelm"a"sig detaillierte Informationen f"ur
       welche Domains Zertifikate ausgestellt wurden. Siehe hierzu den
       Google\texttrademark\ Transparenzreport:\\

       \url{https://transparencyreport.google.com/https/certificates}}
\section{Die Funktionen}

   Das Certs\_dehydrated-Paket besteht aus folgenden Komponenten:

   \begin{itemize}
       \item dehydrated - Ein ACME-Dienstprogramm welches zur Abfrage
            von signierten TLS-Zertifikaten von einem Let's Encrypt\texttrademark\
            ACME-Server genutzt wird.\\
            (\url{https://github.com/dehydrated-io/dehydrated/})
   \end{itemize}

\section{Die Voraussetzungen}

   Ein lauff"ahiger \eisfair-Server mit installierten apache2- und
   certs-Paket.

\section{Die Installation}

   Das Certs\_dehydrated-Paket wird "uber das Setup-Men"u installiert.
   Wird eine "altere Paketversion vorgefunden, so wird diese deinstalliert
   bevor die neuen Programmdateien installiert werden.


\section{Das Men"u im Setup-Programm}

   Das Men"u im Setup-Programm ist wie folgt aufgebaut:

    \begin{itemize}
        \item Certs Service
        \begin{itemize}
            \item ...
            \item Goto certs modules
            \begin{itemize}
                \item Let's Encrypt Certificate administration
                \begin{itemize}
                    \item View documentation: Anzeigen der Dokumentation
                    \item Edit configuration: Bearbeiten der Konfiguration
                    \item Show certificate validity: G"ultigkeit der
                          Zertifikate anzeigen
                    \item Check certificate chain: Pr"ufen der Zertifikatskette
                    \item Send test email to administrator: E-Mail-Versand pruefen
                    \item Request certificate update: Manuelle
                          Zertifikatsaktualisierung ansto"sen
                    \item Archive unused certificates: Unbenutzte bzw. abgelaufene
                          Zertifikate archivieren
                    \item View log file: Logdatei anzeigen
                    \item Return: Untermen"u verlassen
                \end{itemize}
            \end{itemize}
        \end{itemize}
    \end{itemize}

   Die Men"upunkte d"urften selbsterkl"arend sein, da sie keinerlei weitere
   Eingaben erwarten. Aus diesem Grund wird auf deren Funktion nicht n"aher
   eingegangen.


\section{Die "Anderung der Konfiguration}

    Die Konfiguration kann "uber den Men"upunkt 'Edit configuration'
    ge"andert werden. Standardm"a"sig wird der Editor aufgerufen, der in
    der Environment-Konfiguration "uber die Variable 'EDITOR' festgelegt
    wurde. Nachdem der Editor beendet wurde wird abgefragt, ob die
    Konfiguration aktiviert werden soll.  Wird dies best"atigt, werden
    "uber ein Skript die Anpassungen umgehend wirksam gemacht.


\section{Die Konfigurationsdatei}

    In der Konfigurationsdatei, die "uber das Men"u zug"anglich ist, sind
    folgende Parameter vorhanden; wer sie von Hand editieren will findet
    sie unter  \texttt{/etc/config.d/certs\_dehydrated}.

\section{Die Parameter}

\begin{description}
%%  JED - show this description only in the help file
 %  \config{DEHYDRATED\_DO\_DEBUG (Optionaler Parameter)}{DEHYDRATED\_DO\_DEBUG}{DEHYDRATEDDODEBUG}
 %      Um den Debug-Modus zu aktivieren muss diese Variable lediglich auf
 %      den Wert `yes' gestellt werden, die Einstellung `no' deaktiviert
 %      den Debug-Modus.
 %
 %      G"ultige Werte: yes, no
 %
 %      Standardeinstellung: \texttt{DEHYDRATED\_DO\_DEBUG='no'}

    \config{START\_DEHYDRATED}{START\_DEHYDRATED}{STARTDEHYDRATED}
        F"ur die Aktivierung des Certs\_dehydrated-Paketes muss dieser
        Parameter lediglich auf den Wert 'yes' gestellt werden. Die
        Einstellung 'no' deaktiviert das Paket.

        G"ultige Werte: yes, no

        Standardeinstellung: \texttt{START\_DEHYDRATED='no'}

    \config{DEHYDRATED\_API\_VERSION (Optionaler Parameter)}{DEHYDRATED\_API\_VERSION}{DEHYDRATEDAPIVERSION}
        "Uber diesen Parameter kann die zu verwendende Version des
        ACME Protokolls festgelegt werden. Wird dieser Parameter
        nicht gesetzt, so wird das zu verwendenden ACME Protokoll
        automatisch ermittelt.

        G"ultige Werte: auto, 1, 2

        Standardeinstellung: \texttt{DEHYDRATED\_API\_VERSION=$''$}

    \config{DEHYDRATED\_CA}{DEHYDRATED\_CA}{DEHYDRATEDCA}
        "Uber diesen Parameter wird festgelegt welche CA fuer das
        Ausstellen von Zertifikaten verwendet werden soll. Folgt
        dem CA-Namen ein '-test', so handelt es sich um die jeweilige
        Staging-, ansonsten um die Produktivumgebung.

        \achtung{Bei Verwendung einer Staging-Umgebung wird nur ein
        Testzertifikat erstellt, dessen Pr"ufung immer einen Fehler
        in der Zertifikatskette ergeben wird. Nur bei Verwendung einer
        Produktivumgebung wird ein voll funktionierendes Zertifikat
        erzeugt, dessen Zertifikatskette fehlerfrei ist!\\
        In einem ersten Schritt sollte man trotzdem \textbf{immer}
        erst einen Zertifikatsabruf "uber eine Staging-Umgebung
        durchf"uhren und erst nach einem fehlerfreien Durchlauf auf
        eine Produktivumgebung wechseln.}

        Gueltige Werte: letsencrypt, letsencrypt-test, buypass,
                        buypass-test, google, google-test, zerossl

        Standardeinstellung: \\texttt{DEHYDRATED\_CA='letsencrypt-test'}

    \config{DEHYDRATED\_CHALLENGE\_TYPE (Optionaler Parameter)}{DEHYDRATED\_CHALLENGE\_TYPE}{DEHYDRATEDCHALLENGETYPE}
        "Uber diesen Parameter kann auf Wunsch der zu verwendende
        Challenge-Typ eingestellt werden, welchen das dehydrated-Programm
        standardm"a"sig zur Anforderung eines Zertifikates verwenden
        soll. Wird dieser Parameter nicht gesetzt, so wird standardm"a"sig
        der Challenge-Typ 'http-01' verwendet.

        \hinweis{Weitere Informationen zur Verwendung der verschiedenen
            Challenge-Typen finden sich im Absatz `Welchen Challenge-Typ
            soll man wann verwenden?'}

        G"ultige Werte: http-01, dns-01, tls-alpn-01

        Standardeinstellung: \texttt{DEHYDRATED\_CHALLENGE\_TYPE=$''$}

    \config{DEHYDRATED\_EMAIL}{DEHYDRATED\_EMAIL}{DEHYDRATEDEMAIL}
        "Uber diesen Parameter wird die E-Mail-Adresse festgelegt, die
        bei der Zertifikatserstellung als Kontaktadresse f"ur z.B. den
        Widerruf von Zertifikat verwendet werden soll.

        G"ultige Werte: g"ultige E-Mail-Adresse

        Standardeinstellung: \texttt{DEHYDRATED\_EMAIL='root@domain.com'}

    \config{DEHYDRATED\_IP\_VERSION (Optionaler Parameter)}{DEHYDRATED\_IP\_VERSION}{DEHYDRATEDIPVERSION}
        "Uber diesen Parameter kann auf Wunsch die verwendete IP-Version
        eingestellt werden, welche das dehydrated-Programm standardm"a"sig
        zur Anforderung eines Zertifikates verwenden soll. Hierbei ist zu
        beachten, dass Let's Encrypt\texttrademark\ bei der Pr"ufung der
        in der Zertifikatsanfrage angegebenen, prim"aren Domain auch
        pr"uft, ob die IP-Adresse des abfragenden Servers mit der per DNS
        aufgel"osten IP-Adresse "ubereinstimmt. Falls nicht, schl"agt die
        Pr"ufung fehl.

        G"ultige Werte: 4, 6

        Standardeinstellung: \texttt{DEHYDRATED\_IP\_VERSION='4'}

    \config{DEHYDRATED\_PRIVATE\_KEY\_RENEW}{DEHYDRATED\_PRIVATE\_KEY\_RENEW}{DEHYDRATEDPRIVATEKEYRENEW}
        "Uber diesen Parameter wird festgelegt, ob bei der Anforderung
        eines TLS-Zertifikats auch immer ein neuer privater Schl"ussel
        zum Signieren erstellt werden soll oder nicht.
        Falls der Wert`nein' gew"ahlt wird, muss "uber den Parameter\\
        \texttt{DEHYDRATED\_PRIVATE\_KEY\_FILE} der vollst"andige
        Pfad zu einer privaten Schl"usseldatei angegeben werden.  Die
        gleiche  Schl"usseldatei zu verwenden kann von Vorteil sein,
        wenn man z.B. h"aufiger ein Zertifikat widerrufen muss.

        G"ultige Werte: yes, no

        Standardeinstellung: \texttt{DEHYDRATED\_PRIVATE\_KEY\_RENEW='yes'}

    \config{DEHYDRATED\_PRIVATE\_KEY\_FILE}{DEHYDRATED\_PRIVATE\_KEY\_FILE}{DEHYDRATEDPRIVATEKEYFILE}
        "Uber diesen Parameter kann der vollst"andige Pfad zu einer
        private Schl"usseldatei angegeben werden, welche bei der
        Anforderung eines TLS-Zertifikates zum Signieren verwendet
        werden soll. Diese Parameter wird nur dann ausgewertet, wenn\\
        \texttt{DEHYDRATED\_PRIVATE\_KEY\_RENEW='no'} gesetzt
        wurde.

        G"ultige Werte: Dateiname mit absoluter Pfadangabe

        Standardeinstellung: \texttt{DEHYDRATED\_PRIVATE\_KEY\_FILE='/full/path/to/key-file.key'}

    \config{DEHYDRATED\_PRIVATE\_KEY\_ALGO}{DEHYDRATED\_PRIVATE\_KEY\_ALGO}{DEHYDRATEDPRIVATEKEYALGO}
        "Uber diesen Parameter kann der zu verwendende Schl"usselalgorithmus
        festgelegt werden, welcher zum Signieren verwendet werden soll.
        Da sowohl `secp384r1' als auch `prime256v1' auf elliptischen Kurven
        basieren und somit als sicherer eingestuft werden, sind diese `rsa'
        vorzuziehen, welcher jedoch weiter verbreitet ist.

        G"ultige Werte: secp384r1, prime256v1, rsa

        Standardeinstellung: \texttt{DEHYDRATED\_PRIVATE\_KEY\_ALGO='secp384r1'}

    \config{DEHYDRATED\_PRIVATE\_KEY\_BITS (Optionaler Parameter)}{DEHYDRATED\_PRIVATE\_KEY\_BITS}{DEHYDRATEDPRIVATEKEYBITS}
        "Uber diesen Parameter kann auf Wunsch eine vom Standard
        abweichende RSA-Schl"usselst"arke eingestellt werden.

        G"ultige Werte: 1024, 2048, 4096, 8192

        Standardeinstellung: \texttt{DEHYDRATED\_PRIVATE\_KEY\_BITS='2048'}

    \config{DEHYDRATED\_PREF\_CHAIN (Optionaler Parameter)}{DEHYDRATED\_PREF\_CHAIN}{DEHYDRATEDPREFCHAIN}
        "Uber diesen Parameter kann auf Wunsch eine vom Standard
        abweichende Zertifikatskette eingestellt werden.

        Beispiel:
        \begin{itemize}
            \item default: Verwendet derzeit die dst-root-ca-x3-Zertifikatskette
            \item dst-root-ca-x3: Server Zertifikat $&gt;$ R3 $&gt;$ ISRG Root X1
            \item isrg-root-x1: Server Zertifikat  $&gt;$ R3 $&gt;$ DST Root CA X3
        \end{itemize}

         G"ultige Werte: default, dst-root-ca-x3, isrg-root-x1

         Standardeinstellung: \texttt{DEHYDRATED\_PREF\_CHAIN='default'}

    \config{DEHYDRATED\_DOCUMENT\_ROOT (Optionaler Parameter)}{DEHYDRATED\_DOCUMENT\_ROOT}{DEHYDRATEDDOCUMENTROOT}
        "Uber diesen Parameter kann ein vom Standard abweichendes
        Dokumentenstammverzeichnis festgelegt werden. Wird dieser
        Parameter nicht gesetzt, so wird der folgende Verzeichnispfad
        verwendet: \texttt{/var/www/htdocs/certs\_dehydrated}.

        G"ultige Werte: absolute Pfadangabe

        Standardeinstellung: \texttt{DEHYDRATED\_DOCUMENT\_ROOT='/var/www/htdocs/certs\_dehydrated'}

    \config{DEHYDRATED\_DATA\_PATH (Optionaler Parameter)}{DEHYDRATED\_DATA\_PATH}{DEHYDRATEDDATAPATH}
        "Uber diesen Parameter kann ein vom Standard abweichendes
        Datenverzeichnis festgelegt werden in welchem die Zertifikats-
        und Konfigurationsdateien abgelegt werden sollen. Wird dieser
        Parameter nicht gesetzt, so wird der folgende Verzeichnispfad
        verwendet: \texttt{/var/certs/dehydrated}

        G"ultige Werte: absolute Pfadangabe

        Standardeinstellung: \texttt{DEHYDRATED\_DATA\_PATH='/var/certs/dehydrated'}

    \config{DEHYDRATED\_ACCOUNT\_PATH (Optionaler Parameter)}{DEHYDRATED\_ACCOUNT\_PATH}{DEHYDRATEDACCOUNTPATH}
        "Uber diesen Parameter kann ein vom Standard abweichendes
        Account-Verzeichnis festgelegt werden in welchem die Account-
        Schl"ussel und Registrierungsinformationen abgelegt werden
        sollen. Wird dieser Parameter nicht gesetzt, so wird der
        folgende Verzeichnispfad verwendet:
        \texttt{/var/certs/dehydrated/accounts}

        G"ultige Werte: absolute Pfadangabe

        Standardeinstellung: \texttt{DEHYDRATED\_ACCOUNT\_PATH='/var/certs/dehydrated/accounts'}

    \config{DEHYDRATED\_APACHE2\_PREFIX (Optionaler Parameter)}{DEHYDRATED\_APACHE2\_PREFIX}{DEHYDRATEDAPACHE2PREFIX}
        "Uber diesen Parameter kann auf Wunsch ein Dateinamensprefix
        f"ur die Apache2- Konfigurationsdatei festgelegt werden, um
        so die Ladereihenfolge der virtuellen Hostkonfigurationen zu
        beeinflussen.

        G"ultige Werte: Text, bestehend aus den Zeichen a-z, 0-9, -, \_, .

        Standardeinstellung: \texttt{DEHYDRATED\_APACHE2\_PREFIX=$''$}

    \config{DEHYDRATED\_ALPN\_LISTEN\_PORT (Optionaler Parameter)}{DEHYDRATED\_ALPN\_LISTEN\_PORT}{DEHYDRATEDALPNLISTENPORT}
        Falls der Wert des Parameters \jump{DEHYDRATEDCHALLENGETYPE}{DEHYDRATED\_CHALLENGE\_TYPE}
        auf `tls-alpn-01' gesetzt wurde, kann "uber diesen Parameter
        auf Wunsch ein vom Standard abweichender TCP-Port f"ur den
        ALPN Responder angegeben werden. Wird dieser Parameter nicht
        gesetzt, so wird standardm"a"sig der TCP-Port 443 verwendet.

        G"ultige Werte: Zahl

        Standardeinstellung: \texttt{DEHYDRATED\_ALPN\_LISTEN\_PORT=$''$}

    \config{DEHYDRATED\_ACCEPT\_AGREEMENT}{DEHYDRATED\_ACCEPT\_AGREEMENT}{DEHYDRATEDACCEPTAGREEMENT}
        Durch Setzen dieses Parameters best"atigt man das Let's
        Encrypt\texttrademark\ Subscriber Agreement gelesen und
        akzeptiert zu haben, welches "uber die Adresse
        \url{https://acme-v01.api.letsencrypt.org/terms}
        abgerufen werden kann.

        G"ultige Werte: no oder 'i accept the agreement' in Gro"sbuchstaben

        Standardeinstellung: \texttt{DEHYDRATED\_ACCEPT\_AGREEMENT='no'}

    \config{DEHYDRATED\_DOMAIN\_N}{DEHYDRATED\_DOMAIN\_N}{DEHYDRATEDDOMAINN}
        "Uber diesen Parameter wird die Anzahl der Domains festgelegt f"ur
        die separate Let's Encrypt\texttrademark\ Zertifikate angefordert
        werden sollen.

        G"ultige Werte: Zahl

        Standardeinstellung: \texttt{DEHYDRATED\_DOMAIN\_N='1'}

    \config{DEHYDRATED\_DOMAIN\_x\_ACTIVE}{DEHYDRATED\_DOMAIN\_x\_ACTIVE}{DEHYDRATEDDOMAINxACTIVE}
        Wird dieser Parameter auf den Wert `yes' gesetzt, so wird der
        zugeh"orige Datensatz aktiviert, `no' deaktiviert ihn.

        G"ultige Werte: yes oder no

        Standardeinstellung: \texttt{DEHYDRATED\_DOMAIN\_1\_ACTIVE='yes'}

    \config{DEHYDRATED\_DOMAIN\_x\_NAME}{DEHYDRATED\_DOMAIN\_x\_NAME}{DEHYDRATEDDOMAINxNAME}
        "Uber diesen Parameter k"onnen eine oder mehrere FQDN-Namen
        (Fully Qualified Domain Name), getrennt durch einen Doppelpunkt,
        angegeben werden welche in ein TLS-Zertifikat einflie"sen sollen.
        Die erste Domain ist die Hauptdomain eines Zertifikates, alle
        folgenden, optionalen Eintr"age stellen alternative Domainnamen
        dar.

        \achtung{Es ist zu beachten, dass Let's Encrypt\texttrademark\ in Zertifikaten
            weder die Verwendung von IP-Adressen noch von inoffiziellen,
            selbst erstellten Domains wie .lan oder .local, etc. zul"asst.}

        G"ultige Werte: FQDN

        Beispiel: \texttt{DEHYDRATED\_DOMAIN\_1\_NAME='meine.domain.com'}

    \config{DEHYDRATED\_DOMAIN\_x\_USAGE}{DEHYDRATED\_DOMAIN\_x\_USAGE}{DEHYDRATEDDOMAINxUSAGE}
        "Uber diesen Parameter k"onnen eine oder mehrere, durch einen
        Doppelpunkt voneinander getrennte \eisfair-Paketnamen angegeben
        werden f"ur welche dieses Zertifikat verwendet werden soll.
        So diese Pakete reservierte Zertifikatsnamen verwenden, werden
        automatisch die erforderlichen symbolischen Links auf das
        konfigurierte Let's Encrypt\texttrademark-Zertifikat erstellt.

        G"ultige Werte: all oder apache2, ldapserver, mail, mini\_httpd, partimg, pure-ftpd, ssmtp

        Beispiel: \texttt{DEHYDRATED\_DOMAIN\_1\_USAGE='apache2:mail'}

    \config{DEHYDRATED\_HOOK\_CHAIN}{DEHYDRATED\_HOOK\_CHAIN}{DEHYDRATEDHOOKCHAIN}
        Wird dieser Parameter auf den Wert `yes' gesetzt, so wird ein
        Ereignis (Hook) nur einmal pro Zertifikat und nicht f"ur jeden
        Domainnamen in einem Zertifikat aufgerufen.

        G"ultige Werte: yes oder no

        Standardeinstellung: \texttt{DEHYDRATED\_HOOK\_CHAIN='no'}

    \config{DEHYDRATED\_HOOK\_CMD\_N}{DEHYDRATED\_HOOK\_CMD\_N}{DEHYDRATEDHOOKCMDN}
        "Uber diesen Parameter wird die Anzahl der auszuf"uhrenden Befehle
        festgelegt, welche bei Auftreten von Ereignissen ausgef"uhrt werden
        sollen.

        G"ultige Werte: Zahl

        Standardeinstellung: \texttt{DEHYDRATED\_HOOK\_CMD\_N='2'}

    \config{DEHYDRATED\_HOOK\_CMD\_x\_ACTIVE}{DEHYDRATED\_HOOK\_CMD\_x\_ACTIVE}{DEHYDRATEDHOOKCMDxACTIVE}
        Wird dieser Parameter auf den Wert `yes' gesetzt, so wird der
        zugeh"orige Datensatz aktiviert, `no' deaktiviert ihn.

        G"ultige Werte: yes oder no

        Standardeinstellung:\\
        \texttt{DEHYDRATED\_HOOK\_CMD\_1\_ACTIVE='yes'\\
                DEHYDRATED\_HOOK\_CMD\_2\_ACTIVE='yes'}

    \config{DEHYDRATED\_HOOK\_CMD\_x\_TYPE}{DEHYDRATED\_HOOK\_CMD\_x\_TYPE}{DEHYDRATEDHOOKCMDxTYPE}
        "Uber diesen Parameter wird das Ereignis ausgew"ahlt bei welchem
        der Befehl ausgef"uhrt werden soll.

        G"ultige Werte: clean\_challenge, deploy\_cert, deploy\_challenge,
                        deploy\_ocsp, invalid\_challenge, request\_failure,
                        unchanged\_cert

        Standardeinstellung:\\
        \texttt{DEHYDRATED\_HOOK\_CMD\_1\_TYPE='deploy\_cert'\\
                DEHYDRATED\_HOOK\_CMD\_2\_TYPE='deploy\_cert'\\
                DEHYDRATED\_HOOK\_CMD\_3\_TYPE='invalid\_challenge'}

    \config{DEHYDRATED\_HOOK\_CMD\_x\_EXEC}{DEHYDRATED\_HOOK\_CMD\_x\_EXEC}{DEHYDRATEDHOOKCMDxEXEC}
        "Uber diesen Parameter wird der Befehl festgelegt, welcher beim
        Auftreten eines Ereignisses ausgef"uhrt werden soll.

        G"ultige Werte: absoluter Pfad zu einem ausf"uhrbaren Befehl

        Standardeinstellung:\\
        \texttt{DEHYDRATED\_HOOK\_CMD\_1\_EXEC='/var/install/config.d/certs\_dehydrated.sh'\\
                DEHYDRATED\_HOOK\_CMD\_2\_EXEC='/var/install/config.d/certs\_dehydrated.sh'\\
                DEHYDRATED\_HOOK\_CMD\_3\_EXEC='/var/install/config.d/certs\_dehydrated.sh'}

    \config{DEHYDRATED\_HOOK\_CMD\_x\_OPTIONS}{DEHYDRATED\_HOOK\_CMD\_x\_OPTIONS}{DEHYDRATEDHOOKCMDxOPTIONS}
        "Uber diesen Parameter werden die Optionen festgelegt, welche an
        den definierten Befehl "ubergeben werden sollen.

        G"ultige Werte: g"ultige Programmoption

        Standardeinstellung:\\
        \texttt{DEHYDRATED\_HOOK\_CMD\_1\_OPTIONS='--create-eisfair-cert'\\
                DEHYDRATED\_HOOK\_CMD\_2\_OPTIONS='--cleanup-certs'\\
                DEHYDRATED\_HOOK\_CMD\_3\_OPTIONS='--send-challenge-warning'}

    \config{DEHYDRATED\_CHECK\_ON\_START}{DEHYDRATED\_CHECK\_ON\_START}{DEHYDRATEDCHECKONSTART}
        "Uber diesen Parameter wird festgelegt, ob nach einem Neustart
        des \eisfair-Servers eine Zertifikatspr"ufung durchgef"uhrt
        werden soll. Dies kann z.B. f"ur Rechner interessant sein, die
        nicht dauerhaft betrieben werden.

        G"ultige Werte: yes, no

        Standardeinstellung: \texttt{DEHYDRATED\_CHECK\_ON\_START='no'}

    \config{DEHYDRATED\_CHECK\_CRON}{DEHYDRATED\_CHECK\_CRON}{DEHYDRATEDCHECKCRON}
        Wird dieser Parameter auf 'yes' gestellt, so wird regelm"a"sig
        gepr"uft, ob Let's Encrypt\texttrademark-Zertifikate f"ur die
        konfigurierten Domains aktualisiert werden m"ussen, die
        Einstellung 'no' deaktiviert diese Funktion.\\
        "Uber den Parameter \jump{DEHYDRATEDCHECKCRONSCHEDULE}{DEHYDRATED\_CHECK\_CRON\_SCHEDULE}
        wird dabei der Zeitintervall vorgegeben, in welchem eine Pr"ufung
        durchgef"uhrt wird.

        G"ultige Werte: yes, no

        Standardeinstellung: \texttt{DEHYDRATED\_CHECK\_CRON='yes'}

    \config{DEHYDRATED\_CHECK\_CRON\_SCHEDULE}{DEHYDRATED\_CHECK\_CRON\_SCHEDULE}{DEHYDRATEDCHECKCRONSCHEDULE}
        "Uber diesen Parameter wird festgelegt zu welchem Zeitpunkt bzw.
        in welchem Intervall eine automatisierte Pr"ufung der
        konfigurierten Let's Encrypt\texttrademark-Zertifikate erfolgen
        soll. Die f"unf Teilparameter haben dabei folgende Bedeutung:\\

        1 - Minuten, 2 - Stunden, 3 - Tag des Monats, 4 - Monat, 5 - Wochentag.\\

        D.h. bei Verwendung der Standardeinstellung wird sonnt"aglich um
        00:13h eine Aktualisierung durchgef"uhrt. Wer N"aheres "uber die
        verwendete Befehlssyntax erfahren m"ochte, sollte "uber eine
        Internet-Suchmaschine nach 'man' und 'crontab' suchen.

        G"ultige Werte: Crontab-spezifischer Parametereintrag

        Standardeinstellung: \texttt{DEHYDRATED\_CRL\_CRON\_SCHEDULE='13 0 * * 0'}

    \config{DEHYDRATED\_LOG\_COUNT}{DEHYDRATED\_LOG\_COUNT}{DEHYDRATEDLOGCOUNT}
        "Uber diesen Parameter wird eingestellt, wie viele Logdateien
        vorgehalten werden sollen. Wird dieser Wert "uberschritten, so
        wird die "alteste Logdatei gel"oscht.

        G"ultige Werte: Zahl

        Standardeinstellung: \texttt{DEHYDRATED\_LOG\_COUNT='6'}

    \config{DEHYDRATED\_LOG\_INTERVAL}{DEHYDRATED\_LOG\_INTERVAL}{DEHYDRATEDLOGINTERVAL}
        Dieser Parameter bestimmt in welchen Intervallen die Logdateien
        archiviert werden sollen. Zur Auswahl stehen die Schl"usselw"orter
        `daily' - t"aglich, `weekly' - w"ochentlich und `monthly' - monatlich.

        G"ultige Werte: daily, weekly, monthly

        Standardeinstellung: \texttt{DEHYDRATED\_LOG\_INTERVAL='weekly'}
\end{description}

\section{Der Aufruf von Ereignisskripten}

    \subsection{Die Ereignisse}

        Bei der Anforderung eines Let's Encrypt\texttrademark-Zertifikates
        k"onnen beim Auftreten verschiedener Ereignisse (Hooks), auf Wunsch
        eigene Skripte aufgerufen werden um bestimmte Aktionen zu veranlassen.
        Werden mehrere Skriptaufrufe f"uer ein dediziertes Ereignis definiert,
        so werden diese in der Reihenfolge der Definition ausgef"uhrt.

        Folgende Ereignisse existieren:

        \begin{itemize}
            \item clean\_challenge: Dieses Ereignis tritt einmal nach dem
                Versuch der Pr"ufung eines Domainnamens ein, unabh"angig
                davon ob diese erfolgreich war oder nicht. Hier k"onnen
                z.B. Dateien oder DNS-Eintr"age gel"oscht werden welche
                nicht l"anger ben"otigt werden.
            \item deploy\_cert: Dieses Ereignis tritt einmal f"ur jedes
                erzeugte Zertifikat ein. Hier kann man z.B. neue
                Zertifikatsdateien in ein anderes Verzeichnis kopieren,
                einen Service neu starten oder die Zertifikats Hashes
                neu erzeugen lassen.
            \item deploy\_challenge: Dieses Ereignis tritt pro Domainname,
                eingeschlossen aller angegebenen alternativer Domainnamen,
                einmal nach Erzeugen des Best"atigungs-Token und vor Abruf
                des Zertifikates ein.
            \item deploy\_ocsp: Dieses Ereignis tritt einmal f"ur jede
                erzeugte OCSP-Stapeldatei ein.
            \item exit\_hook: Dieses Ereignis tritt einmal nach dem Aufruf
                des cron-Befehls auf. Hier k"onnen zum Beispiel finale
                Bereinigungen oder anders geartete Aufgaben ausgef"uhrt
                werden.
            \item generate\_csr: Dieses Ereignis tritt vor jeder
                Zertifikatsignieroperation auf. Es kann dazu verwendet
                werden um z.B. eine Zertifikatsanforderung mit Hilfe
                eines externen Werkzeugs zu erzeugen. Es wird einzig die
                Ausgabe der Zertifikatsanforderung im PEM-Format erwartet.
            \item invalid\_challenge: Dieses Ereignis tritt einmal nach
                dem erfolglosen Versuch einen Domainnamens zu pr"ufen ein.
                Hier kann zum Beispiel ein Administrator "uber einen
                fehlgeschlagenen Aktualisierungsversuch informiert werden.
            \item request\_failure: Dies Ereignis tritt bei einer fehlgeschlagenen
                HTTP-Anfrage ein (HTTP-Fehlerkode ungleich 2xx). Hier kann
                zum Beispiel ein Administrator "uber einen fehlgeschlagenen
                Verbindungsversuch per E-Mail informiert werden.
            \item startup\_hook: Dieses Ereignis tritt einmal vor dem Aufruf
                des cron-Befehls auf. Hier k"onnen zum initiale Befehle, wie
                z.B. das Starten eines Webservers, ausgef"uhrt werden.
            \item unchanged\_cert: Dies Ereignis tritt einmal f"ur jedes
                noch g"ultige Zertifikat ein, welches somit nicht erneuert
                wurde.
        \end{itemize}

    \subsection{Die Umgebungsvariablen}

        Beim Aufruf eines Ereignisskriptes stehen eine begrenzte Anzahl
        von Umgebungsvariablen zur Verf"ugung auf welche aus den Skripten
        zugegriffen werden kann. Folgende Umgebungsvariablen existieren:

        \begin{itemize}
            \item ALPNCERTDIR: Das Verzeichnis indem ALPN-Zertifikate zwischen
                gespeichert werden.\\
                Standardeinstellung: \texttt{/var/certs/dehydrated/alpn-certs} .
            \item BASEDIR: Das Basisverzeichnis unter welchem sich die
                Verzeichnisse mit den erzeugten Zertifikatsdateien
                befinden.\\
                Standardeinstellung: \texttt{/var/certs/dehydrated} .
            \item CERTFILE: Der absolute Pfad zu der Datei die das
                signierte Zertifikat enth"alt.\\
                Beispiel: \texttt{/var/certs/dehydrated/certs/meine.domain.de/cert.pem}
            \item CHAINFILE: Der absolute Pfad zu der Datei die das
                Zwischenzertifikat enth"alt.\\
                Beispiel: \texttt{/var/certs/dehydrated/certs/meine.domain.de/chain.pem}
            \item DOMAIN: Der Domainname (CN oder alternative Domainname)
                welcher aktuell bearbeitet wird.\\
                Beispiel: \texttt{meine.domain.de}
            \item FULLCHAINFILE: Der absolute Pfad zu der Datei die
                die vollst"andige Zertifikatskette enth"alt.\\
                Beispiel: \texttt{/var/certs/dehydrated/certs/meine.domain.de/fullchain.pem}
            \item KEYFILE: Der absolute Pfad zu der Datei die den privaten
                Schl"ussel f"ur das Signieren der Zertifikatsanfrage
                enth"alt.\\
                Beispiel: \texttt{/var/certs/dehydrated/certs/meine.domain.de/privkey.pem}
            \item TIMESTAMP: Der Zeitstempel zu dem das angegebene
                Zertifikat ausgestellt wurde in Sekunden seit dem
                1970-01-01 00:00:00 UTC.\\
                Beispiel: \texttt{1472909429} (-&gt; Sat Sep  3 15:30:29 CEST 2016)
            \item TOKEN\_FILENAME: Der Dateiname welche den Token enth"alt
                der zur Zertifikatspr"ufung "uber HTTP bereit gestellt
                werden muss. Der Token wird "ublicherweise "uber folgende
                URL bereit gestellt:
                \texttt{/.well-known/acme-challenge/\$\{TOKEN\_FILENAME\}}.
            \item TOKEN\_VALUE: Der Token der zur Zertifikatspr"ufung
                "uber den \_acme-challenge TXT-Eintrag im DNS bereit
                gestellt werden muss. Bei einer Pr"ufung "uber HTTP
                ist dieser in der "uber die Umgebungsvariable
                \texttt{\$\{TOKEN\_FILENAME\}} angegebenen Datei
                enthalten.
            \item WELLKNOWN: Das Dokumentenstammverzeichnis des Webserver
                in welchem bei einer Zertifikatspr"ufung "uber HTTP die
                Tokendatei bereitgestellt wird.\\
                Standardeinstellung: \texttt{/var/www/htdocs/certs\_dehydrated} .
        \end{itemize}

    \subsection{Die Zuordnung der Umgebungsvariablen zu den Ereignissen}

        Folgende Umgebungsvariablen stehen beim Auftreten der angegebenen
        Ereignisses zur Verf"ugung:

        \begin{itemize}
            \item clean\_challenge: DOMAIN, TOKEN\_FILENAME, TOKEN\_VALUE
            \item deploy\_cert: DOMAIN, KEYFILE, CERTFILE, FULLCHAINFILE,\\
                                CHAINFILE, TIMESTAMP
            \item deploy\_challenge: DOMAIN, TOKEN\_FILENAME, TOKEN\_VALUE
            \item deploy\_ocsp: DOMAIN, OCSPFILE, TIMESTAMP
            \item exit\_hook: keine Umgebungsvariablen verf"ugbar.
            \item generate\_csr: DOMAIN, CERTDIR, ALTNAMES
            \item invalid\_challenge: DOMAIN, RESULT
            \item request\_failure: STATUSCODE, REASON, REQTYPE, HEADERS
            \item startup\_hook: keine Umgebungsvariablen verf"ugbar.
            \item unchanged\_cert: DOMAIN, KEYFILE, CERTFILE, FULLCHAINFILE,\\
                                   CHAINFILE
        \end{itemize}

    \subsection{Die standarm"a"sig eingerichteten Ereignisskripte}

        In der Konfiguration des Paketes sind standardm"a"sig bereits vier
        Skriptaufrufe aktiviert, die f"ur die korrekte Funktion des Paketes
        erforderlich sind.

    \subsubsection{/var/install/config.d/certs\_dehydrated.sh --create-eisfair-cert}

        Dieser Skriptaufruf erzeugt aus den von Let's Encrypt\texttrademark\
        bereit gestellten Dateien die von \eisfair ben"otigten
        Zertifikatsdateien (Server- und Zwischenzertifikat) und
        erforderliche, paketspezifische symbolische Links in der
        \eisfair-Verzeichnisstruktur.

    \subsubsection{/var/install/config.d/certs\_dehydrated.sh --cleanup-certs}

        Dieser Skriptaufruf archiviert nicht mehr ben"otigte Let's
        Encrypt\texttrademark\ Dateien im Unterverzeichnis
        \texttt{/var/certs/dehydrated/archive},
        die sich sonst bei einer Zertifikatserneuerung im Verzeichnis
        \texttt{/var/certs/dehydrated/certs} ansammeln w"urden.

    \subsubsection{/var/install/config.d/certs\_dehydrated.sh --send-challenge-warning}

        Dieser Skriptaufruf versendet eine Warnnachricht an den
        'Postmaster', wenn es bei dem Abruf eines von Let's Encrypt\texttrademark
        angeforderten Zertifikates zu einem Fehler bei der Pr"ufung
        der ausgehandelten Challenge gekommen und der Abruf somit
        fehlgeschlagen ist.

    \subsubsection{/var/install/config.d/certs\_dehydrated.sh --restart-eisfair-services-on-request}

        Dieser Skriptaufruf startet bei Bedarf \eisfair-Dienste neu,
        deren Zertifikate zuvor erneuert wurden. Welcher Dienst f"ur
        welches Zertifikat neu gestartet werden soll, wird "uber die
        \jump{DEHYDRATEDDOMAINxUSAGE}{DEHYDRATED\_DOMAIN\_x\_USAGE}
        Parameter festgelegt.

    \subsection{Weitere Funktionen, die bei Bedarf zur Verf"ugung stehen}

        Folgende Skriptaufrufe stehen dar"uber hinaus bei Bedarf zur Verf"ugung:
        \begin{verbatim}
/etc/init.d/certs_dehydrated --start-alpn-server - start alpn responder
/etc/init.d/certs_dehydrated --stop-alpn-server  - stop alpn responder
        \end{verbatim}

\section{Verschiedenes}

    \subsection{Den Serverzugriff von extern pr"ufen}

        Damit die mit einem automatischen Let's Encrypt\texttrademark\
        Zertifikatsabruf einhergehende Pr"ufung der in einem Zertifikat
        verwendeten Domain funktioniert, wenn der Challenge-Typ `http-01'
        verwendet wird, muss die folgende URL "uber das Internet erreichbar
        sein:
        \url{http://meine.domain.dom/.well-known/acme-challenge}

        Der erfolgreiche Zugriff wird durch die Anzeige des folgenden
        Textes best"atigt:

        \textbf{Let's Encrypt rocks!}

        \hinweis{Da f"ur die Anzeige des genannten Textes eine Datei
            namens index.html verwendet wird, ist es erforderlich,
            dass der Parameter \texttt{APACHE2\_DIRECTORY\_INDEX}
            auch diesen Dateinamen enth"alt!}

        Bei Verwendung des Challenge-Typ `tls-alpn-01' ist sicher zu
        stellen, dass der TCP-Port 443 bzw. den "uber den Parameter
        \jump{DEHYDRATEDALPNLISTENPORT}{DEHYDRATED\_ALPN\_LISTEN\_PORT}
        definierte Port, korrekt an den ALPN-Responder-Dienst weiter
        geleitet wird.

    \subsection{Welchen Challenge-Typ soll man wann verwenden?}
        Wie in der Beschreibung des optionalen Parameters
        \jump{DEHYDRATEDCHALLENGETYPE}{DEHYDRATED\_CHALLENGE\_TYPE}
        erw"ahnt, unterst"utzt Let's Encrypt\texttrademark\ die folgenden
        Challenge-Typen um zu verifizieren, dass man im Besitz der Domain
        ist f"ur die eine Zertifikatsanfrage gestellt wird:

        \begin{itemize}
            \item dns-01: Dieser Challenge-Typ ist zu w"ahlen, wenn man
                Zugriff auf den "offentlichen DNS-Eintrag seiner Domain
                hat und man dort automatisiert einen TXT-Eintrag mit
                der bei der Verifizierung generierten Challenge erstellen
                will.

            \item http-01: (Standardauswahl) Dieser Challenge-Typ ist zu
                w"ahlen, wenn man die bei der Verifizierung generierte
                Challenge "uber den eigenen Webserver, "uber den Port
                80/tcp, bereitstellen will.

            \item tls-alpn-01: Dieser Challenge-Typ ist zu w"ahlen, wenn
                man die bei der Verifizierung generierte Challenge "uber
                den eigenen Webserver, "uber den verschl"usselten Port
                443/tcp, bereitstellen will.

                \achtung{Der Challenge-Typ `tls-apn-01' kann nur f"uer die
                    Verifizierung gew"ahlt werden, wenn der Server zuvor
                    bereits "uber das https-Protokoll erreicht werden
                    kann. Falls dies nicht der Fall ist, muss f"uer den
                    erstmaligen Zertifikatsabruf die Einstellung `http-01'
                    verwendet werden}
        \end{itemize}

        Wird dieser Parameter nicht gesetzt, so wird standardm"a"sig mittels
        des Challenge-Typ `http-01' eine Pr"ufung "uber den Port 80/tcp
        duchgef"uhrt.

    \subsection{Eine TCP-Portfreischaltung nur f"ur die Zertifikatspr"ufung zulassen}

        Wie zuvor beschrieben, muss f"ur einen automatischen Let's
        Encrypt\texttrademark\ Zertifikatsabruf die Pr"ufung der in einem
        Zertifikat verwendeten Domain "uber einen HTTP-/HTTPS-Zugriff "uber
        das Internet erm"oglicht werden. Da nicht jeder nur f"ur diese
        Pr"ufung dauerhaft einen "uber das Internet zug"anglichen Webserver
        betreiben m"ochte, kann man bei Bedarf "uber die Ereignisse
        'startup\_hook' und 'exit\_hook' eine tempor"are
        TCP-Portfreischaltung auf seinem Internet-Router aktivieren,
        so dieser dies skriptgesteuert zul"asst.

        Wer eine AVM-FRITZ!Box\texttrademark\ sein Eigen nennt kann sich
        gl"ucklich sch"atzen und hierf"ur das fbtr64toolbox-Paket von
        Marcus Roeckrath installieren.
        Mit dem im Paket enthaltenen Skript `fbtr64toolbox.sh' k"onnen
        auf komfortable Weise Parameter "uber SOAP-Aufrufe gesetzt oder
        gel"oscht werden. Voraussetzung f"ur die korrekte Funktion des
        Skriptes ist, dass in der Router-Konfiguration, unter `Heimnetz -&gt;
        Heimnetz"ubersicht -&gt; Netzwerkeinstellungen -&gt; Heimnetzfreigaben'
        der Parameter `Zugriff f"ur Anwendungen zulassen' aktiviert wird.
        Mittels der folgenden Konfigurationsparameter kann man anschlie"send
        im Paket automatisiert TCP-Portfreigabe in der AVM-FRITZ!Box\texttrademark\
        aktivieren bzw. deaktivieren lassen:

        \begin{verbatim}
DEHYDRATED_HOOK_CMD_1_ACTIVE  = 'yes'
DEHYDRATED_HOOK_CMD_1_TYPE    = 'startup_hook'
DEHYDRATED_HOOK_CMD_1_EXEC    = '/usr/bin/fbtr64toolbox.sh'
DEHYDRATED_HOOK_CMD_1_OPTIONS = 'add --extport 80 --protocol TCP
                                 --intclient 192.168.178.3 --intport 80
                                 --description "my port forward" --active'

DEHYDRATED_HOOK_CMD_2_ACTIVE  = 'yes'
DEHYDRATED_HOOK_CMD_2_TYPE    = 'exit_hook'
DEHYDRATED_HOOK_CMD_2_EXEC    = '/usr/bin/fbtr64toolbox.sh'
DEHYDRATED_HOOK_CMD_2_OPTIONS = 'add --extport 80 --protocol TCP
                                 --intclient 192.168.178.3 --intport 80
                                 --description "my port forward" --inactive'
        \end{verbatim}

        Wer die eingerichtete TCP-Portfreischaltung lieber jedes Mal wieder
        vollst"andig l"oschen m"ochte kann dies z.B. "uber den folgenden
        Befehlsaufruf bewerkstelligen:

        \begin{verbatim}
DEHYDRATED_HOOK_CMD_2_EXEC    = '/usr/bin/fbtr64toolbox.sh'
DEHYDRATED_HOOK_CMD_2_OPTIONS = 'del --extport 80 --protocol TCP'
        \end{verbatim}

    \subsection{Let's Encrypts\texttrademark\ Limitierung der abrufbaren Zertifikate (Rate Limit)}

        Let's Encrypt\texttrademark\ limitiert die Anzahl der abrufbaren
        Zertifikate pro Zeiteinheit um eine faire Nutzung f"ur so viele
        Personen wie m"oglich zu gew"ahrleisten. Die gesetzten Grenzwerte
        sollten f"ur die meisten Personen nicht erreicht werden. Auch
        f"uhrt das Erneuern von Zertifikaten grunds"atzlich nicht zu
        einem Erreichen eines Grenzwertes. So k"onnen selbst gr"o"sere
        Organisationen eine hohe Anzahl von Zertifikaten abrufen, ohne
        dass Let's Encrypt\texttrademark\ eingreifen bzw. t"atig werden
        muss.

        \hinweis{Wegen der genannten Grenzwerte sollten initiale Tests
            eines Zertifikatsabrufes immer gegen die Staging-Umgebung
            durchgef"uhrt werden.}

        Zum Zeitpunkt der Erstellung dieser Dokumentation galten folgende
        Grenzwerte, welche man jederzeit unter folgender Webadresse
        nachschlagen kann: \url{https://letsencrypt.org/docs/rate-limits/}

        \begin{verbatim}
Anzahl doppelter Zertifikate ..................: 5/Woche
Anzahl der Zertifikate pro registrierter Domain: 20/Woche
Anzahl der Domain-Namen pro Zertifikat ........: 100
Anzahl der Zertifikatsanfragen pro IP-Adresse .: 500
Anzahl ausstehender Zertifikatsautorisierungen.: 300
        \end{verbatim}

    \subsection{Die manuelle Erstellung eines privaten Zertifikatsschl"ussels}

        M"ochte man bei der Anforderung von Let's Encrypt\texttrademark-Zertifikaten
        eine eigene, feste Schl"usseldatei verwenden, so muss diese vor der
        der Verwendung manuell erstellt werden. Der Kommandozeilenbefehl um
        eine private Schl"usseldatei mit einer Gr"o"se von 4096 Byte zu
        erstellen lautet:

        \begin{verbatim}
openssl genrsa -out /path/to/store/private.key 4096
        \end{verbatim}

    \subsection{Meldungen eines Aktualisierungslaufs}

        \begin{verbatim}
Processing server-1.domain.com
 + Checking domain name(s) of existing cert... changed!
 + Domain name(s) are not matching!
 + Names in old certificate: server-1.domain.com server-1-alt.domain.com
 + Configured names: server-1.domain.com
 + Forcing renew.
 + Checking expire date of existing cert...
 + Valid till Dec 31 07:30:56 2017 GMT (Longer than 30 days).
   Ignoring because renew was forced!
 + Signing domains...
 + Generating private key...
 + Generating signing request...
 + Requesting challenge for server-1.domain.com...
-&gt; Executing hook script 'deploy_challenge' ...
 + Responding to challenge for server-1.domain.com...
 + Challenge is valid!
-&gt; Executing hook script 'clean_challenge' ...
 + Requesting certificate...
 + Checking certificate...
 + Done!
 + Creating fullchain.pem...
 + Using cached chain!
-&gt; Executing hook script 'deploy_cert' ...
creating files/links required by eisfair ...
+ domain 'server-1.domain.com':
  - link '/usr/local/ssl/csr/server-1.domain.com.csr' created/updated.
  - link '/usr/local/ssl/private/server-1.domain.com.key' created/updated.
  - link '/usr/local/ssl/newcerts/server-1.domain.com.crt' created/updated.
  - file '/usr/local/ssl/newcerts/server-1.domain.com.dh' exists.
  - file '/usr/local/ssl/certs/server-1.domain.com.pem' created.
+ domain 'server-1-alt.domain.com':
  - skipped.
checking symbolic links to certificate ...
+ domain 'server-1.domain.com':
  - link 'exim.pem' ok.
  - link 'imapd.pem' ok.
  - link 'ipop3d.pem' ok.
restarting eisfair services ...

+ package 'mail' restarted.
# INFO: Using main config file /etc/dehydrated/config
Moving unused file to archive directory: server-1.domain.com/cert-1506933030.csr
Moving unused file to archive directory: server-1.domain.com/cert-1506933030.pem
Moving unused file to archive directory: server-1.domain.com/chain-1506933030.pem
Moving unused file to archive directory: server-1.domain.com/fullchain-1506933030.pem
Moving unused file to archive directory: server-1.domain.com/privkey-1506933030.pem
 + Done!
Processing server-2.domain.com
 + Signing domains...
 + Creating new directory /var/certs/dehydrated/certs/server-2.domain.com ...
 + Generating private key...
 + Generating signing request...
 + Requesting challenge for server-2.domain.com...
-&gt; Executing hook script 'deploy_challenge' ...
 + Responding to challenge for server-2.domain.com...
 + Challenge is valid!
-&gt; Executing hook script 'clean_challenge' ...
 + Requesting certificate...
 + Checking certificate...
 + Done!
 + Creating fullchain.pem...
 + Using cached chain!
-&gt; Executing hook script 'deploy_cert' ...
creating files/links required by eisfair ...
+ domain 'server-1.domain.com':
  - link '/usr/local/ssl/csr/server-1.domain.com.csr' created/updated.
  - link '/usr/local/ssl/private/server-1.domain.com.key' created/updated.
  - link '/usr/local/ssl/newcerts/server-1.domain.com.crt' created/updated.
  - file '/usr/local/ssl/newcerts/server-1.domain.com.dh' exists.
  - file '/usr/local/ssl/certs/server-1.domain.com.pem' created.
+ domain 'server-2.domain.com':
  - link '/usr/local/ssl/csr/server-2.domain.com.csr' created/updated.
  - link '/usr/local/ssl/private/server-2.domain.com.key' created/updated.
  - link '/usr/local/ssl/newcerts/server-2.domain.com.crt' created/updated.
  - file '/usr/local/ssl/newcerts/server-2.domain.com.dh' exists.
  - file '/usr/local/ssl/certs/server-2.domain.com.pem' created.
checking symbolic links to certificate ...
+ domain 'server-1.domain.com':
  - link 'exim.pem' ok.
  - link 'imapd.pem' ok.
  - link 'ipop3d.pem' ok.
restarting eisfair services ...
+ package 'mail' restarted.
# INFO: Using main config file /etc/dehydrated/config
 + Done!
finished.
        \end{verbatim}

\section{Das Glossar}

   \begin{itemize}
       \item ACME - Automatic Certificate Management Environment
       \item ALPN - Application-Layer Protocol Negotiation
       \item CA   - Certificate Authority (Zertifizierungsstelle)
       \item FQDN - Fully Qualified Domain Name
       \item ISRG - Internet Security Research Group
       \item RSA  - Rivest-Shamir-Adleman cryptosystem
       \item SOAP - Simple Object Access Protocol
       \item TCP  - Transmission Control Protocol
       \item TLS  - Transport Layer Security
       \item TM   - Trademark
       \item URL  - Uniform Resource Locator
   \end{itemize}

</pre></body></html>