Files
argocd/helm/certificates/ops/docs/CERTIFICAT-WILDCARD.md
2026-01-21 00:54:28 +01:00

4.5 KiB

Certificat Wildcard avec DNS-01 Challenge

Vue d'ensemble

Le certificat wildcard *.dev.gkdomaine.fr permet de couvrir tous les sous-domaines de l'environnement DEV avec un seul certificat Let's Encrypt.

Configuration

1. ClusterIssuer DNS-01

Le ClusterIssuer letsencrypt-dns01-prod utilise le DNS-01 challenge pour valider le domaine via DNS au lieu de HTTP.

Important : Vous devez configurer votre fournisseur DNS dans cluster-issuer-letsencrypt-dns01.yaml.

2. Certificat Wildcard

Le certificat wildcard-dev-tls couvre :

  • *.dev.gkdomaine.fr (tous les sous-domaines)
  • dev.gkdomaine.fr (le domaine racine)

Configuration du Fournisseur DNS

Cloudflare (Recommandé)

  1. Créez un token API dans Cloudflare :

    • Allez dans "My Profile" > "API Tokens"
    • Créez un token avec les permissions : Zone DNS:Edit, Zone:Read
  2. Créez le Secret Kubernetes :

kubectl create secret generic cloudflare-api-key \
  --from-literal=api-key=VOTRE_TOKEN_CLOUDFLARE \
  -n certificates-ops
  1. Décommentez la section Cloudflare dans cluster-issuer-letsencrypt-dns01.yaml :
solvers:
- dns01:
    cloudflare:
      email: gkpoubelle78@gmail.com
      apiKeySecretRef:
        name: cloudflare-api-key
        key: api-key

Route53 (AWS)

  1. Créez un utilisateur IAM avec les permissions Route53
  2. Configurez les credentials AWS (via IAM Role ou Secret)
  3. Décommentez la section Route53 dans le ClusterIssuer

OVH

  1. Créez une application API dans OVH
  2. Créez un Secret avec les credentials :
kubectl create secret generic ovh-credentials \
  --from-literal=application-secret=VOTRE_SECRET \
  -n certificates-ops
  1. Décommentez la section OVH dans le ClusterIssuer

Autres Fournisseurs

Consultez la documentation cert-manager pour votre fournisseur DNS.

Utilisation du Certificat Wildcard

Pour une nouvelle application

Au lieu de créer un certificat spécifique, utilisez directement le secret wildcard-dev-tls dans votre Ingress :

ingress:
  enabled: true
  className: traefik
  host: monapp.dev.gkdomaine.fr
  tls:
    enabled: true
    secretName: wildcard-dev-tls  # Utilise le certificat wildcard

Migration des certificats existants

Les applications existantes peuvent être migrées pour utiliser le certificat wildcard :

  1. Supprimez le certificat spécifique (ex: homarr-dev-tls)
  2. Mettez à jour l'Ingress pour utiliser wildcard-dev-tls
  3. Le secret sera synchronisé automatiquement vers le cluster DEV

Avantages

  • Un seul certificat pour tous les sous-domaines DEV
  • Certificat Let's Encrypt valide (pas d'avertissement navigateur)
  • Renouvellement automatique par cert-manager
  • Fonctionne pour les serveurs internes (validation via DNS uniquement)

Inconvénients

  • ⚠️ Nécessite un fournisseur DNS compatible avec DNS-01
  • ⚠️ Nécessite des credentials API pour votre DNS
  • ⚠️ Si le certificat est compromis, tous les sous-domaines le sont aussi

Vérification

# Vérifier le ClusterIssuer
kubectl get clusterissuer letsencrypt-dns01-prod

# Vérifier le certificat wildcard
kubectl get certificate wildcard-dev-tls -n certificates-ops

# Vérifier le secret TLS généré
kubectl get secret wildcard-dev-tls -n certificates-ops

# Voir les détails du certificat
kubectl describe certificate wildcard-dev-tls -n certificates-ops

# Vérifier les challenges DNS
kubectl get challenges -n certificates-ops

Troubleshooting

Le certificat ne se génère pas

  1. Vérifiez que le ClusterIssuer est configuré correctement :
kubectl describe clusterissuer letsencrypt-dns01-prod
  1. Vérifiez que le Secret DNS existe :
kubectl get secret cloudflare-api-key -n certificates-ops
  1. Vérifiez les logs de cert-manager :
kubectl logs -n cert-manager -l app.kubernetes.io/name=cert-manager

Le challenge DNS échoue

  1. Vérifiez que le domaine est résolvable publiquement :
dig _acme-challenge.dev.gkdomaine.fr TXT
  1. Vérifiez que les permissions API sont correctes
  2. Vérifiez les logs des challenges :
kubectl describe challenge -n certificates-ops

Notes Importantes

  • Le domaine dev.gkdomaine.fr doit être résolvable publiquement via DNS
  • Les serveurs peuvent rester internes (pas besoin d'accès HTTP depuis Internet)
  • Le certificat wildcard couvre tous les sous-domaines de dev.gkdomaine.fr
  • Le secret wildcard-dev-tls sera synchronisé automatiquement vers le cluster DEV