====== 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 [[infrastructure:services: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: - 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. - 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. - Füge den Host, der das Zertifikat erhalten soll zur ''certbot_hosts'' Gruppe (in ''inventories/hosts.yaml'') hinzu. - 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. - 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. - 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. - 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/'').