# Configuration DNS-01 Challenge pour Certificat Wildcard ## Étapes de Configuration ### 1. Choisir votre Fournisseur DNS Le ClusterIssuer `letsencrypt-dns01-prod` doit être configuré selon votre fournisseur DNS. ### 2. Configuration Cloudflare (Recommandé) #### Étape 1 : Créer un Token API Cloudflare 1. Connectez-vous à [Cloudflare](https://dash.cloudflare.com/) 2. Allez dans "My Profile" > "API Tokens" 3. Cliquez sur "Create Token" 4. Utilisez le template "Edit zone DNS" ou créez un token personnalisé avec : - Permissions : `Zone` > `DNS` > `Edit` - Zone Resources : `Include` > `Specific zone` > `gkdomaine.fr` #### Étape 2 : Créer le Secret Kubernetes ```bash kubectl create secret generic cloudflare-api-key \ --from-literal=api-key=VOTRE_TOKEN_CLOUDFLARE \ -n certificates-ops \ --context=cluster-ops ``` #### Étape 3 : Activer la Configuration dans le ClusterIssuer Éditez `helm/certificates/ops/templates/cluster-issuer-letsencrypt-dns01.yaml` et décommentez la section Cloudflare : ```yaml solvers: - dns01: cloudflare: email: gkpoubelle78@gmail.com apiKeySecretRef: name: cloudflare-api-key key: api-key ``` ### 3. Configuration Route53 (AWS) #### Étape 1 : Créer un Utilisateur IAM Créez un utilisateur IAM avec la politique `AmazonRoute53FullAccess` ou une politique personnalisée. #### Étape 2 : Créer le Secret Kubernetes ```bash kubectl create secret generic route53-credentials \ --from-literal=access-key-id=VOTRE_ACCESS_KEY \ --from-literal=secret-access-key=VOTRE_SECRET_KEY \ -n certificates-ops \ --context=cluster-ops ``` #### Étape 3 : Activer la Configuration dans le ClusterIssuer ```yaml solvers: - dns01: route53: region: eu-west-1 accessKeyIDSecretRef: name: route53-credentials key: access-key-id secretAccessKeySecretRef: name: route53-credentials key: secret-access-key ``` ### 4. Configuration OVH #### Étape 1 : Créer une Application API OVH 1. Connectez-vous à [OVH API](https://eu.api.ovh.com/) 2. Créez une application API 3. Notez l'Application Key et l'Application Secret 4. Générez un Consumer Key #### Étape 2 : Créer le Secret Kubernetes ```bash kubectl create secret generic ovh-credentials \ --from-literal=application-secret=VOTRE_APPLICATION_SECRET \ -n certificates-ops \ --context=cluster-ops ``` #### Étape 3 : Activer la Configuration dans le ClusterIssuer ```yaml solvers: - dns01: ovh: applicationKey: "VOTRE_APPLICATION_KEY" applicationSecretRef: name: ovh-credentials key: application-secret consumerKey: "VOTRE_CONSUMER_KEY" ``` ### 5. Autres Fournisseurs DNS Consultez la [documentation cert-manager](https://cert-manager.io/docs/configuration/acme/dns01/) pour : - Google Cloud DNS - Azure DNS - DigitalOcean - Namecheap - Et d'autres... ## Vérification Après avoir configuré le ClusterIssuer : ```bash # Vérifier le ClusterIssuer kubectl get clusterissuer letsencrypt-dns01-prod --context=cluster-ops # Vérifier la configuration kubectl describe clusterissuer letsencrypt-dns01-prod --context=cluster-ops # Vérifier que le certificat wildcard est en cours de génération kubectl get certificate wildcard-dev-tls -n certificates-ops --context=cluster-ops # Voir les détails du certificat kubectl describe certificate wildcard-dev-tls -n certificates-ops --context=cluster-ops # Vérifier les challenges DNS kubectl get challenges -n certificates-ops --context=cluster-ops ``` ## Troubleshooting ### Le certificat ne se génère pas 1. Vérifiez que le ClusterIssuer est correctement configuré 2. Vérifiez que le Secret DNS existe et contient les bonnes valeurs 3. Vérifiez les logs de cert-manager : ```bash kubectl logs -n cert-manager -l app.kubernetes.io/name=cert-manager --context=cluster-ops ``` ### Le challenge DNS échoue 1. Vérifiez que le domaine est résolvable publiquement : ```bash dig _acme-challenge.dev.gkdomaine.fr TXT ``` 2. Vérifiez que les permissions API sont correctes 3. Vérifiez les détails du challenge : ```bash kubectl describe challenge -n certificates-ops --context=cluster-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 `*.dev.gkdomaine.fr` - Le secret `wildcard-dev-tls` sera synchronisé automatiquement vers le cluster DEV