So mal wieder ein kleiner Blogeintrag. Ist ja schon ein bisschen her, aber mit neuem Job und drei Kiddies bleibt fürs bloggen nicht viel Zeit.
Ich hatte letztens ein kleines Problem mit meinem Home Server dem ich ein neues SSL Zertifikat von Lets Encrypt verpassen wollte. Normalerweise ist das via Certbot ja kein großes Problem, ausser man hat spezielle Anforderungen.
Mein Server ist z.B. ausschließlich über Port 443 erreichbar, einen Redirect von Port 80 gibt es nicht. Das hat mehrere Gründe. So kann ich weder die Standalone noch die Webroot Methode nutzen.
Zum Glück bietet Lets Encrypt seit einiger Zeit eine weitere Methode an, die DNS Challange Validation. Kurz gesagt erstellt man einen speziellen DNS Record der dann von den Lets Encrypt Servern geprüft wird um zu beweisen das man die Kontrolle über die Domain hat. So kann man z.B. auch einen anderen Rechner die Validierung für einen anderen Server durchführen lassen um dann z.B. die Zertifikate per SSH auf den Server zu pushen.
Das ganze hört sich ziemlich easy an, jedoch hat es mich auch ne ziemliche Zeit gekostet um hier den richtigen weg zu finden.
Normalerweise nutze ich Certbot um meine Zertifikate zu erneuern, dafür gibt es auch einen Hook um die DNS Challenge mit den OVH Domains zu nutzen, leider funktionierte das ganze nicht richtig und die Fehlermeldung war jetzt auch nicht aussagekräftig.
Der nächste Versuch erfolgte mit dem Acme Client Dehydrated, auch hier gibt es einen passenden Hook, nur leider funktionierte der auch nicht. Beide Hooks sind in Python geschrieben und greifen auf das Python OVH Client Modul zu, scheinbar passt da zur Zeit etwas nicht. Ich hatte jetzt aber weder Lust noch Zeit nach dem Fehler zu suchen.
Im nächsten Schritt bin ich auf den Acme Client acme.sh gestoßen und eine super Anleitung von Florian Effenberger.
Ist der Client installiert muss man sich daran machen passenden Infos für die OVH DNS Api einzutragen.
Besorgt euch die passenden Zugangsdaten hier: https://api.ovh.com/createToken/?GET=/domain/zone/*&POST=/domain/zone/*&PUT=/domain/zone/*&DELETE=/domain/zone/*/record/*
Denkt dran die Validity an eure Bedürfnisse anzupassen.
Wenn Ihr acme.sh nach der Anleitung installiert habt tragt Ihr nun Application Key, Application Secret und Consumer Key in die Datei /opt/acme.sh/dnsapi/dns_ovh ein.
Im acme.sh Wiki wird empfohlen diese Angaben per Umgebungsvariable zu setzen, das hat bei mir nicht funktioniert.
Nun könnt Ihr das ganze ausprobieren
acme.sh --issue --staging -d meine.domain.com --dns dns_ovh --cert-file /etc/nginx/ssl/meine.domain.com.cert.pem --key-file /etc/nginx/ssl/meine.domain.com.key.pem --ca-file /etc/nginx/ssl/meine.domain.com.ca.pem --fullchain-file /etc/nginx/ssl/meine.domain.com.chain.pem
Unter umständen müsst Ihr die Pfade etc. noch anpassen. Funktioniert alles könnt Ihr den Parameter –staging weg lassen und Ihr die richtigen Zertifikate besorgen.
Viel Spass