Let's Encrypt, Firewalls und Route 53
Mai 19, 2017Let's Encrypt, die kostenlose und automatisierte Zertifizierungsstelle, revolutioniert die Art und Weise, wie SSL/TLS-Zertifikate erhalten und verwaltet werden, weg von teuren und manuellen traditionellen Methoden hin zu einem schlanken und kostenlosen Prozess.
In diesem Artikel wird erläutert, wie Sie ein LE-Zertifikat auf einem RHEL-basierten Server mithilfe der DNS-01-Validierung anhand von TXT-Datensätzen in Amazon Route 53 installieren und automatisch erneuern.
Wo liegt also das Problem?
Wenn Sie bei Google nach Installationsanweisungen suchen, erhalten Sie viele Artikel, in denen erklärt wird, wie Sie ein LE-Zertifikat mit dem Certbot Acme-Client installieren und automatisch erneuern können. Standardmäßig versucht Certbot, Validierungsabfragen für den Server durchzuführen, in den die DNS-Adresse der (Sub-)Domain aufgelöst wird. Diese Methode funktioniert hervorragend, wenn die Server dem Internet ausgesetzt sind, aber wenn die Server hinter einer Firewall gesperrt sind, wird die Abfrage immer fehlschlagen.
Die natürliche Reaktion, zumindest für mich, war, auf der Let's Encrypt-Website nach Dokumentationen über ihren IP-Bereich zu suchen, damit ich sie auf unseren Firewalls auf die Whitelist setzen konnte. Allerdings fand ich in den LE-Foren schnell Beiträge von LE/Certbot-Ingenieuren, die besagen, dass sie aus Sicherheitsgründen keine spezifischen Adressen bekannt geben wollen und dass sich die derzeit verwendeten Adressen ändern können.
Die Lösung...
Glücklicherweise gibt es Tools, mit denen wir LE-Zertifikate validieren können, ohne dass die Herausforderung auf dem Server stattfindet, auf den die DNS-Adresse für das von Ihnen generierte Zertifikat aufgelöst wird.
In diesem Beispiel verwende ich eine Kombination aus dem Shell-Skript Acme Client Dehydrated und dem Ruby-basierten Route 53 DNS-01 Hook
Schritt 1: Exportieren Sie Ihre AWS-Anmeldeinformationen, damit die Skripts einen TXT-Datensatz in Route 53 generieren können. (Stellen Sie sicher, dass Sie diese zu Ihrem Server-Bash-Profil hinzufügen, um sicherzustellen, dass die Details beibehalten werden.)
export AWS_REGION="Region geht hierher" export AWS_ACCESS_KEY_ID="access_key_goes_here" export AWS_SECRET_ACCESS_KEY="secret_key_goes_here"
Schritt 2: Erstellen Sie ein dehydriertes Verzeichnis.
mkdir /etc/dehydrated
Schritt 3: Rufen Sie die Standardkonfigurationsdatei herunter.
cd /etc/dehydred && curl -O https://raw.githubusercontent.com/lukas2511/dehydrated/master/docs/examples/config
Schritt 4: Klonen des dehydrierten Repositorys
Git-Klon https://github.com/lukas2511/dehydrated.git
Schritt 5: Klonen Sie den Route 53 Rubinhaken
cd dehydriert & locken -O https://gist.githubusercontent.com/joshgarnett/02920846fea35f738d3370fd991bb0e0/raw/5412ee600278acf843832cd918455b8e6d50ba5c/lets-encrypt-route53.rb
Schritt 6: Stellen Sie sicher, dass der Ruby-Hook ausführbar ist
chmod +x lets-encrypt-route53.rb
Schritt 7: Installieren des AWS-SDK-Gems
Gem-Installation von AWS-SDK
Schritt 8: Registrieren Sie sich und akzeptieren Sie die Bedingungen
./dehydred --register --accept-terms
Schritt 9: Initiieren der Zertifikatsgenerierung (Ersetzen Sie example.com durch Ihre eigene Domäne)
./dehydred --cron --domain example.com --hook ./lets-encrypt-route53.rb --challenge dns-01
Schritt 10: Fügen Sie den gleichen Befehl zu einem cron/systemd-Job hinzu. Es kann sein, dass Ihr Webserver seine Konfiguration neu laden muss, wenn ein neues Zertifikat erstellt wird, also vergessen Sie nicht, dieses zu Ihrer geplanten Aufgabe hinzuzufügen.
Zum Beispiel auf nginx...
cd /etc/dehydrated/dehydrated && ./dehydrated --cron --domain example.com --hook ./lets-encrypt-route53.rb --challenge dns-01 & dienst nginx reload
Das war's, du bist fertig! Jetzt müssen Sie nur noch Ihren Webserver so konfigurieren, dass er das generierte Zertifikat/den generierten Schlüssel verwendet, und Ihre Tage der manuellen Erneuerung und Bezahlung von Zertifikaten sind vorbei.
Ta am besten!
Abonnieren Sie die
Newsletter
Melden Sie sich jetzt für unseren ganz privaten, spamfreien und gelegentlich aufschlussreichen Newsletter an.