WIP: feat(dns): enable DNS-01 challenges #817
No reviewers
Labels
No labels
awaiting
awaiting-author
awaiting
awaiting-reviewer
bot
deployed
Silenced alert
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
DGNum/infrastructure!817
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/dns-01"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Principalement:
@ -53,2 +52,2 @@notify = attrNames dgnumSecondaries;});# Regular domains"validation.dgnum.eu"Pourquoi transférer la zone aux secondaires ? On ne réduit pas la robustesse du setup si on transfère pas
Je comprends pas: notify c'est pour dire qu'il a eu un changement dans la zone pour qu'ils soient au courant rapidement? Et comme j'inherit le NS des autres zones, ça me paraît cohérent
Et je ne vois pas les désavantages de faire ça?
Juste c'est pas nécessaire de partager la zone entre 3 DNS pour les challenges. On a pas besoin de la redondance. Effectivement il faut virer les NS et les notify
@ -55,0 +59,4 @@){"validation.dgnum.eu" = {acl = mapAttrsToList (domain: _: "dns-01_${domain}") (Une seule règle d'acl nécessaire, cf 0lus bas
@ -55,0 +62,4 @@acl = mapAttrsToList (domain: _: "dns-01_${domain}") (filterAttrs (_: zone: zone.enableACME) meta.dns);file = "/var/lib/knot/zones/validation.dgnum.eu";Je doute de la pertinence du setup. Il me semble on veut plutot https://www.knot-dns.cz/docs/latest/html/operation.html#example-2 avec un script d'init run une fois ou https://www.knot-dns.cz/docs/latest/html/operation.html#example-5
@ -86,0 +99,4 @@acl = mapAttrsToList (domain: _: {id = "dns-01_${domain}";key = "dns-01_${domain}_key";action = "update";Ce serait cool d'avoir des acls plus fines via update-type et update-owner (je pense match la tsig identity sur le domaine est le plus pertinent, l'attr key au dessus sera une liste). Il faudra aussi avoir un cname différent pour chaque domaine.
@ -13,0 +24,4 @@enableACME = mkEnableOption "Enable ACME CNAME records" // {default = defaultACME;};subdomains = mkOption { type = attrsOf (acmeSubdomainType config.enableACME); };Pourquoi récursif ? A priori dns01 sera enable sur un nombre restreint de domaines
Comment ça on veut avoir DNS-01 que sur quelques domaines? https://letsencrypt.org/docs/challenge-types/ DNS-01 me paraît meilleur quand même; et puis ça sert à rien d'écrire une abstraction pour quelques domaines hein, autant le faire à la main, c'est 5-6 lignes
DNS-01 demande de provision des secrets entre le serveur dns et le serveur, ce qui demande un redéploiement chaque fois que tu veux créer un domaine. ça peut être chiant si tu est pas root*. J'arrive pas à voir quels sont les avantages de DNS-01 qui font qu'on le veut à plein d'endroits. HTTP-01 me semble plus polyvalent. En particulier DNS-01 est nécessaire pour:
Une abstraction / un code un peu générique est utile pour ne pas avoir à réinventer la roue à chaque fois mais peut-être juste un attrs similaire à
hosted(meta/dgnum-dns.nix#L74) suffit ? (on perd la partie "générique pour le lab" dans ce cas)@ -13,0 +28,4 @@};config = mkIf (config.enableACME && !hasPrefix "*" name && name != "_acme-challenge") {subdomains._acme-challenge = {CNAME = [ "validation.dgnum.eu" ];Peut-on avoir un cname diffèrent par domaine de sorte à pouvoir appliquer des acls ?
@ -0,0 +27,4 @@default = true;};services.nginx.virtualHosts = mkOption {Perso j'aime pas trop cette abstraction, je préfère qu'on laisse le fait de mettre à nulle le ACMERoot à l'utilisateur
Je trouve ça moins descriptif
acmeRoot = nullGenre si tu lis l'infra et que tu vois soit
acmeRoot = nullouacmeChallenge = "DNS-01", tu comprendras mieux le deuxième@ -0,0 +49,4 @@config = mkIf cfg.enable {security.acme = {acceptTerms = true;defaults = {Perso bof le default avec la meme clef pour tout. Perso je préfèrerais
dgn-acme.dns01.<name>.tsigKey = clef;@ -0,0 +53,4 @@email = "acme@dgnum.eu";dnsProvider = "rfc2136";environmentFile = pkgs.writeText "acme-dns-01-env" ''RFC2136_TSIG_FILE=${config.age.secrets."acme-tsig_file".path}security.acme.certs..credentialFiles est plus adapté. Il utilise loadcredentials sous le capot
@ -152,6 +152,7 @@ inhttp2 = false;enableACME = true;forceSSL = true;acmeChallenge = "DNS-01";On peut pas juste set security.acme.certs ?
euh, bah tu devras set un tas de trucs dans nginx à la main si tu fais ça
ah non tu veux dire virer le nginx et mettre ça que pour radius, ouais peut-être
Oui
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.