Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:let_s_encrypt_-_wildcard_zertifikat

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
tachtler:let_s_encrypt_-_wildcard_zertifikat [2018/08/30 08:59] klaustachtler:let_s_encrypt_-_wildcard_zertifikat [2018/08/30 12:52] (aktuell) – [Generierung] klaus
Zeile 6: Zeile 6:
 [[https://letsencrypt.org/|Let's Encrypt]] offiziell ein sichereres und die Privatsphäre respektierendes Internet fördern möchte. [[https://letsencrypt.org/|Let's Encrypt]] offiziell ein sichereres und die Privatsphäre respektierendes Internet fördern möchte.
  
-:!: **WICHTIG** - **Das Ausstellen von Wildcard-Zertifikaten durch [[https://letsencrypt.org/|Let's Encrypt]] ist __nur möglich__, wenn Sie __zeitnah DNS-Einträge auf dem für Ihre Domain zuständigen DNS-Server__ durchführen können !!!**+:!: **WICHTIG** - **Das Ausstellen von Wildcard-Zertifikaten durch [[https://letsencrypt.org/|Let's Encrypt]] ist __nur möglich__, wenn** 
 +  * **__zeitnah__ DNS-Einträge** 
 +  * **__auf__ dem für die __Domäne zuständigen DNS-Server__** 
 +**durchgeführt werden können !!!** 
 ===== Vorbereitung ===== ===== Vorbereitung =====
  
Zeile 571: Zeile 575:
  
 Während der Einrichtung und **Test**-Phase, sollte **__nicht__ gegen die Produktiven Systeme** von [[https://letsencrypt.org/|Let's Encrypt]] getestet werden, da hier relativ rasch ein **Resourcen-Limit** von Anfragen in einer bestimmten Zeit greift. Erst wenn das Skript voll funktionsfähig und getestet ist und alle Konfigurationen entsprechend abgeschlossen sind, sollte hier dann das Produktive System von [[https://letsencrypt.org/|Let's Encrypt]] konfiguriert werden! Während der Einrichtung und **Test**-Phase, sollte **__nicht__ gegen die Produktiven Systeme** von [[https://letsencrypt.org/|Let's Encrypt]] getestet werden, da hier relativ rasch ein **Resourcen-Limit** von Anfragen in einer bestimmten Zeit greift. Erst wenn das Skript voll funktionsfähig und getestet ist und alle Konfigurationen entsprechend abgeschlossen sind, sollte hier dann das Produktive System von [[https://letsencrypt.org/|Let's Encrypt]] konfiguriert werden!
 +
 +  * <code bash>CHALLENGETYPE="dns-01"</code>
 +
 +Ändern des **Anforderungstyps** auf ''dns-01'', da nur damit **Wildcard**-Zertifikate angefordert werden können.
  
   * <code bash>   * <code bash>
Zeile 605: Zeile 613:
  
 Anpassung der einzelnen Pfade bzw. Verzeichnisse, in denen die verschiedenen Dateien dann permanent, oder temporär abgelegt werden sollen. Anpassung der einzelnen Pfade bzw. Verzeichnisse, in denen die verschiedenen Dateien dann permanent, oder temporär abgelegt werden sollen.
 +
 +:!: **HINWEIS** - Diese Konfiguration entspricht der zuvor angelegten Verzeichnisstruktur!
 +
 +  * <code bash>HOOK="${SCRIPTDIR}/hook/hook.sh"</code>
 +
 +Ausführung des Skriptes, welche die Änderungen für den **DNS**-Server ausgibt!
  
 :!: **HINWEIS** - Diese Konfiguration entspricht der zuvor angelegten Verzeichnisstruktur! :!: **HINWEIS** - Diese Konfiguration entspricht der zuvor angelegten Verzeichnisstruktur!
Zeile 631: Zeile 645:
  
 Anpassung der einzelnen Pfade bzw. Verzeichnisse, in denen die verschiedenen Dateien dann permanent, oder temporär abgelegt werden sollen. Anpassung der einzelnen Pfade bzw. Verzeichnisse, in denen die verschiedenen Dateien dann permanent, oder temporär abgelegt werden sollen.
 +
 +==== /opt/dehydrated-master/etc/domains.txt ====
 +
 +Nachfolgende Konfigurationsdatei muss mit nachfolgendem Befehl, **neu** angelegt werden und enthält die bis zu **100 Subject Alternative Name (SAN)**, als **Liste** durch **Leerzeichen getrennt**:
 +<code>
 +# touch /opt/dehydrated-master/etc/domains.txt
 +</code>
 +
 +Nachfolgendes Beispiel, zeigt einen möglichen Inhalt der Konfigurationsdatei
 +  * ''/opt/dehydrated-master/etc/domains.txt''
 +<code>
 +tachtler.net *.tachtler.net www.dokuwiki.tachtler.net
 +</code>
 +
 +===== Konfiguration: Web-Server =====
 +
 +==== /etc/httpd/conf.d/ssl.conf ====
 +
 +Um das erstellte **Zertifikate** und den dazugehörigen **Schlüssel** auch in der Web-Server-Konfiguration einzubinden, sind nachfolgende Ergänzungen bzw. Änderungen and er Konfigurationsdatei erforderlich:
 +
 +**(Nur relevanter Ausschnitt)**:
 +
 +<code apache>
 +...
 +#   Server Certificate:
 +#   Point SSLCertificateFile at a PEM encoded certificate.  If
 +#   the certificate is encrypted, then you will be prompted for a
 +#   pass phrase.  Note that a kill -HUP will prompt again.  A new
 +#   certificate can be generated using the genkey(1) command.
 +# Tachtler
 +#default: # SSLCertificateFile /etc/pki/tls/certs/localhost.crt
 +SSLCertificateFile /opt/dehydrated-master/certs/tachtler.net/cert.pem
 +
 +#   Server Private Key:
 +#   If the key is not combined with the certificate, use this
 +#   directive to point at the key file.  Keep in mind that if
 +#   you've both a RSA and a DSA private key you can configure
 +#   both in parallel (to also allow the use of DSA ciphers, etc.)
 +# Tachtler
 +#default: # SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
 +SSLCertificateKeyFile /opt/dehydrated-master/certs/tachtler.net/privkey.pem
 +
 +#   Server Certificate Chain:
 +#   Point SSLCertificateChainFile at a file containing the
 +#   concatenation of PEM encoded CA certificates which form the
 +#   certificate chain for the server certificate. Alternatively
 +#   the referenced file can be the same as SSLCertificateFile
 +#   when the CA certificates are directly appended to the server
 +#   certificate for convinience.
 +# Tachtler
 +#default: #SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt
 +SSLCertificateChainFile /opt/dehydrated-master/certs/tachtler.net/chain.pem
 +
 +#   Certificate Authority (CA):
 +#   Set the CA certificate verification path where to find CA
 +#   certificates for client authentication or alternatively one
 +#   huge file containing all of them (file must be PEM encoded)
 +# Tachtler
 +#default: #SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt
 +SSLCACertificateFile /opt/dehydrated-master/certs/tachtler.net/fullchain.pem
 +...
 +</code>
 +
 +Abschließend ist ein Neustart des Web-Servers, hier [[http://www.apache.org|Apache HTTPD Server]] mit nachfolgendem Befehl erfordelrich:
 +<code>
 +# systemctl restart httpd.service
 +</code>
 +
 +===== Generierung: Test =====
 +
 +Durch nachfolgenden Befehl, wird die Erstellung eines
 +  * **privaten Schlüssels** 
 +  * **Zertifikast-Requests**
 +  * **Zertifikats**
 +und einer
 +  * **einfachen Zertifikatskette**
 +  * **vollständigen Zertifikatskette**
 +für die Verwendung mit einem Web-Server durchgeführt werden.
 +
 +:!: **WICHTIG** - Während der Einrichtung und **Test**-Phase, sollte **__nicht__ gegen die Produktiven Systeme** von [[https://letsencrypt.org/|Let's Encrypt]] getestet werden, da hier relativ rasch ein **Resourcen-Limit** von Anfragen in einer bestimmten Zeit greift. Erst wenn das Skript voll funktionsfähig und getestet ist und alle Konfigurationen entsprechend abgeschlossen sind, sollte hier dann das Produktive System von [[https://letsencrypt.org/|Let's Encrypt]] konfiguriert werden!
 +
 +Deshalb sollte in der Konfigurationsdatei
 +  * ''/opt/dehydrated-master/etc/config''
 +nachfolgende Einstellung **erst geändert werden, wenn die Test-Phase erfolgreich abgeschlossen ist!**
 +  * <code bash># Tachtler
 +# default: #CA="https://acme-v02.api.letsencrypt.org/directory"
 +#CA="https://acme-v02.api.letsencrypt.org/directory"
 +# Tachtler - TESTING without LIMITATION - IMPORTANT !!!
 +CA="https://acme-staging-v02.api.letsencrypt.org/directory"</code>
 +
 +<code>
 +# /opt/dehydrated-master/dehydrated -c --config /opt/dehydrated-master/etc/config
 +</code>
 +
 +Hier die Ausgaben, welche durch den Skript lauf erzeugt werden:
 +<code>
 +# /opt/dehydrated-master/dehydrated -c --config /opt/dehydrated-master/etc/config
 +# INFO: Using main config file /opt/dehydrated-master/etc/config
 +Processing tachtler.net with alternative names: *.tachtler.net www.dokuwiki.tachtler.net
 + + Checking domain name(s) of existing cert... changed!
 + + Domain name(s) are not matching!
 + + Names in old certificate: tachtler.net www.tachtler.net dokuwiki.tachtler.net
 + + Configured names: *.tachtler.net tachtler.net www.dokuwiki.tachtler.net
 + + Forcing renew.
 + + Checking expire date of existing cert...
 + + Valid till Oct  2 12:21:13 2018 GMT (Less than 90 days). Renewing!
 + + Signing domains...
 + + Generating signing request...
 + + Requesting new certificate order from CA...
 + + Received 3 authorizations URLs from the CA
 + + Handling authorization for tachtler.net
 + + Handling authorization for tachtler.net
 + + Handling authorization for www.dokuwiki.tachtler.net
 + + 3 pending challenge(s)
 + + Deploying challenge tokens...
 +
 +Add the following to the zone definition of tachtler.net:
 +_acme-challenge.tachtler.net. 60 IN TXT "qlJ_4P5MjybB21jpBpOgL3-VJdCCX4N53iKw43P-DTZ"
 +
 +Press enter to continue...
 +
 +
 +Add the following to the zone definition of tachtler.net:
 +_acme-challenge.tachtler.net. 60 IN TXT "g5L1vwzebrHBehTadd_2M_Y3Kg5eB43wc7dxb53q8CwI"
 +
 +Press enter to continue...
 +
 +
 +Add the following to the zone definition of www.dokuwiki.tachtler.net:
 +_acme-challenge.www.dokuwiki.tachtler.net. 60 IN TXT "zkE-SIfzeWpkQD9G_Uv9bnf6HwtGjo_jrTRuoNgs-tk2"
 +
 +Press enter to continue...
 +
 + + Responding to challenge for tachtler.net authorization...
 + + Challenge is valid!
 + + Responding to challenge for tachtler.net authorization...
 + + Challenge is valid!
 + + Responding to challenge for www.dokuwiki.tachtler.net authorization...
 + + Challenge is valid!
 + + Cleaning challenge tokens...
 +
 +Now you can remove the following from the zone definition of tachtler.net:
 +_acme-challenge.tachtler.net. 60 IN TXT "qlJ_4P5MjybB21jpBpOgL3-VJdCCX4N53iKw43P-DTZ"
 +
 +Press enter to continue...
 +
 +
 +Now you can remove the following from the zone definition of tachtler.net:
 +_acme-challenge.tachtler.net. 60 IN TXT "g5L1vwzebrHBehTadd_2M_Y3Kg5eB43wc7dxb53q8CwI"
 +
 +Press enter to continue...
 +
 +
 +Now you can remove the following from the zone definition of www.dokuwiki.tachtler.net:
 +_acme-challenge.www.dokuwiki.tachtler.net. 60 IN TXT "zkE-SIfzeWpkQD9G_Uv9bnf6HwtGjo_jrTRuoNgs-tk2"
 +
 +Press enter to continue...
 +
 + + Requesting certificate...
 + + Checking certificate...
 + + Done!
 + + Creating fullchain.pem...
 + + Done!
 +</code>
 +
 +^   :!: **WICHTIG** :!:   ^
 +| **__Immer__** wenn während der **Ausführung des Skripts** nachfolgender Text erscheint:\\ \\ <code>Add the following to the zone definition of ...</code>ist **__zeitnah__** der darunter **aufgelistete DNS-Eintrag** auf dem entsprechenden **DNS-Server**, in der **jeweiligen DNS-Zone(ndatei)** zu setzen !!! |
 +
 +Anschließend kann mit nachfolgendem Befehl überprüft werden, ob alle benötigten Komponenten, wie:
 +  * **privaten Schlüssels** 
 +  * **Zertifikast-Requests**
 +  * **Zertifikat**
 +  * **einfachen Zertifikatskette**
 +  * **vollständigen Zertifikatskette**
 +erzeugt worden sind:
 +<code>
 +# ls -l /opt/dehydrated-master/certs/*
 +/opt/dehydrated-master/certs/tachtler.net:
 +total 24
 +-rw------- 1 root root 1704 Aug 30 09:12 cert-1535613155.csr
 +-rw------- 1 root root 2508 Aug 30 09:12 cert-1535613155.pem
 +lrwxrwxrwx 1 root root   19 Aug 30 09:12 cert.csr -> cert-1535613155.csr
 +lrwxrwxrwx 1 root root   19 Aug 30 09:12 cert.pem -> cert-1535613155.pem
 +-rw------- 1 root root 1680 Aug 30 09:12 chain-1535613155.pem
 +lrwxrwxrwx 1 root root   20 Aug 30 09:12 chain.pem -> chain-1535613155.pem
 +-rw------- 1 root root 4188 Aug 30 09:12 fullchain-1535613155.pem
 +lrwxrwxrwx 1 root root   24 Aug 30 09:12 fullchain.pem -> fullchain-1535613155.pem
 +-rw------- 1 root root 3243 Aug 30 09:12 privkey-1535613155.pem
 +lrwxrwxrwx 1 root root   22 Aug 30 09:12 privkey.pem -> privkey-1535613155.pem
 +</code>
 +
 +:!: **HINWEIS** - Hier ist ebenfalls schön zu sehen, da jeweils **symbolische Links** erstellt wurden, was bei einer erneuten Generierung **__keine__** Konfiguration in den Web-Server Konfigurationsdateien nach sich zieht, da nur die symblischen Links angepasst werden!
 +
 +===== Generierung =====
 +
 +Wie auch bei der Generierung des Zertifikas gegen die [[https://letsencrypt.org/|Let's Encrypt]]-Server, ist Vorgehensweise exakt die gleiche.
 +
 +:!: **WICHTIG** - Während der Einrichtung und **Test**-Phase, sollte **__nicht__ gegen die Produktiven Systeme** von [[https://letsencrypt.org/|Let's Encrypt]] getestet werden, da hier relativ rasch ein **Resourcen-Limit** von Anfragen in einer bestimmten Zeit greift. Erst wenn das Skript voll funktionsfähig und getestet ist und alle Konfigurationen entsprechend abgeschlossen sind, sollte hier dann das Produktive System von [[https://letsencrypt.org/|Let's Encrypt]] konfiguriert werden!
 +
 +Deshalb sollte in der Konfigurationsdatei
 +  * ''/opt/dehydrated-master/etc/config''
 +nachfolgende Einstellung **jetzt geändert werden, wenn die Test-Phase erfolgreich abgeschlossen ist!**
 +  * <code bash># Tachtler
 +# default: #CA="https://acme-v02.api.letsencrypt.org/directory"
 +CA="https://acme-v02.api.letsencrypt.org/directory"
 +# Tachtler - TESTING without LIMITATION - IMPORTANT !!!
 +#CA="https://acme-staging-v02.api.letsencrypt.org/directory"</code>
 +
 +<code>
 +# /opt/dehydrated-master/dehydrated -c --config /opt/dehydrated-master/etc/config
 +</code>
 +
 +Nach dem ersten Versuch die Erstellung des Zertifikats durchzuführen, kommt nachfolgende **Meldung**:
 +<code>
 +# /opt/dehydrated-master/dehydrated -c --config /opt/dehydrated-master/etc/config
 +# INFO: Using main config file /opt/dehydrated-master/etc/config
 +
 +To use dehydrated with this certificate authority you have to agree to their terms of service which you can find here: https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf
 +
 +To accept these terms of service run `/opt/dehydrated-master/dehydrated --register --accept-terms`.
 +</code>
 +
 +Hier ist, wie angegeben die **Registrierung** und das Akzeptieren der **Bedingungen** von [[https://letsencrypt.org/|Let's Encrypt]] noch ausstehend, was beides mich nachfolgendem Befehl durchgeführt werden kann:
 +<code>
 +# /opt/dehydrated-master/dehydrated --register --accept-terms
 +</code>  
 +
tachtler/let_s_encrypt_-_wildcard_zertifikat.1535612385.txt.gz · Zuletzt geändert: 2018/08/30 08:59 von klaus