Zertifikate

Für die höchstmögliche Kompatibilität mit verschiedenen Betriebssystemen und Programmen, erstellen und verifizieren wir Zertifikate via ACME mit der HTTP-01 Challenge.

Für Services, die direkt ohne weiteren Reverse-Proxy im Netz hängen, ist dies natürlich trivial. Hier muss nur der entsprechende DNS Record korrekt gesetzt werden. Entweder im Authoritative DNS für Domains unter ccchh.net oder im DNS auf dem Chaosknoten für Domains unter hamburg.ccc.de

Zertifikate für Services hinter einem Reverse-Proxy

Für Services, die hinter einem Reverse-Proxy hängen, ist der Prozess ein wenig involvierter. Deswegen hier ein How-To, wie man für Services in Z9 ein Zertifikat unter der ccchh.net Domain, mit Hilfe der vorhandenen Ansible Rollen, erstellt:

  1. Wir haben einen Wildcard DNS Record für *.ccchh.net, welcher auf den Public-Reverse-Proxy bei uns im Club zeigt. Du musst also kein DNS Record für die Domain setzen, für die du ein Zertifikat haben möchtest.
  2. Setze im ccchh-ansible Repo in der acme_challenge.conf vom Public-Reverse-Proxy (playbooks/files/configs/public-reverse-proxy/acme_challenge.conf) ein Mapping von der Domain des Zertifikats auf die IP des Hosts, auf welchem das Zertifikat generiert werden soll.
    • Setze als Port 31820, da Certbot später auf diesen listened.
  3. Füge den Host, der das Zertifikat erhalten soll zur certbot_hosts Gruppe (in inventories/hosts.yaml) hinzu.
  4. Setze für den Host, der das Zertifikat erhalten soll, die Variablen, die die cerbot Ansible Rolle braucht. Am besten in der Config für den Host unter inventories/z9/host_vars/myhost.yaml. Die zu setzenden Variablen sind:
    • certbot__version_spec: Diese Variable kann einfach auf den empty String gesetzt werden “”.
    • certbot__acme_account_email_address: Gebe hier deine E-Mail für den ACME Account an.
    • certbot__certificate_domains: Gebe hier eine List an Namen an, für welche du Zertifikate haben möchtest.
  5. Falls du die Proxmox Firewall für den Host, der das Zertifikat generieren soll, eingeschaltet hast, füge die Security Group pubrp_http hinzu. Diese sorgt dafür, dass incoming HTTP Traffic vom Public-Reverse-Proxy auf Port 80 und 31820 zugelassen wird.
  6. Falls sich der Host, der das Zertifikat generieren soll, in einem anderen VLAN als der Public-Reverse-Proxy befindet, gehe ins OPNsense und füge den Host unter Firewall → Aliases zu PublicRP_HTTP_Cert_Upstreams hinzu, damit der HTTP Traffic vom Public-Reverse-Proxy durch die Firewall kommt.
  7. Nun kannst du das Ansible deploy.yaml Playbook ausführen und du hast unter den standart Certbot Pfaden die Zertifikatsdateien (also unter: /etc/letsencrypt/live/myname.ccchh.net/).