Files
Maison/AliExpress/Certificates.fr.md
2026-02-10 12:12:11 +01:00

11 KiB

Configuration HTTPS pour naval.lan avec Traefik (Kubernetes)

Ce guide explique comment configurer HTTPS pour votre domaine local naval.lan en utilisant Traefik dans Kubernetes sans avertissements de certificat sur les clients Windows et Linux.

Vue d'ensemble

Pour éviter les avertissements de certificat auto-signé, vous devez :

  1. Créer votre propre Autorité de Certification (CA)
  2. Générer des certificats SSL signés par votre CA
  3. Configurer Traefik pour utiliser ces certificats
  4. Installer le certificat CA sur toutes les machines clientes

Partie 1 : Créer votre propre Autorité de Certification

1.1. Générer la clé privée et le certificat CA

Sur votre serveur ou poste de travail Linux :

# Créer un répertoire pour les certificats
mkdir -p ~/certs/naval-ca
cd ~/certs/naval-ca

# Générer la clé privée CA (RSA 4096 bits)
openssl genrsa -out ca-key.pem 4096

# Générer le certificat CA (valide 10 ans)
openssl req -new -x509 -days 3650 -key ca-key.pem -out ca-cert.pem \
  -subj "/C=FR/ST=Region/L=Ville/O=Naval Local CA/OU=IT/CN=Naval Local Root CA"

Important : Gardez ca-key.pem en sécurité ! C'est votre clé privée CA racine.

Partie 2 : Générer le certificat SSL pour naval.lan

2.1. Créer le fichier de configuration OpenSSL

Créez un fichier nommé naval-lan.conf :

cat > naval-lan.conf <<EOF
[req]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn

[dn]
C = FR
ST = Region
L = Ville
O = Naval Local
OU = Département IT
CN = *.naval.lan

[req_ext]
subjectAltName = @alt_names

[alt_names]
DNS.1 = naval.lan
DNS.2 = *.naval.lan
DNS.3 = localhost
IP.1 = 127.0.0.1
EOF

2.2. Générer la demande de signature de certificat (CSR)

# Générer la clé privée pour naval.lan
openssl genrsa -out naval-lan-key.pem 2048

# Générer le CSR
openssl req -new -key naval-lan-key.pem -out naval-lan.csr -config naval-lan.conf

2.3. Signer le certificat avec votre CA

# Signer le certificat (valide 2 ans)
openssl x509 -req -in naval-lan.csr -CA ca-cert.pem -CAkey ca-key.pem \
  -CAcreateserial -out naval-lan-cert.pem -days 730 \
  -extensions req_ext -extfile naval-lan.conf

# Vérifier le certificat
openssl x509 -in naval-lan-cert.pem -text -noout

Partie 3 : Configurer Traefik dans Kubernetes

3.1. Créer un Secret Kubernetes avec les certificats

# Créer un namespace pour Traefik (s'il n'existe pas)
kubectl create namespace traefik --dry-run=client -o yaml | kubectl apply -f -

# Créer le secret avec vos certificats
kubectl create secret tls naval-lan-tls \
  --cert=naval-lan-cert.pem \
  --key=naval-lan-key.pem \
  -n traefik

3.2. Mettre à jour la configuration Traefik

Créez ou mettez à jour votre fichier de valeurs Helm Traefik (traefik-values.yaml) :

# traefik-values.yaml
additionalArguments:
  - "--providers.kubernetescrd"
  - "--entrypoints.websecure.http.tls=true"
  - "--entrypoints.web.address=:80"
  - "--entrypoints.websecure.address=:443"

ports:
  web:
    port: 80
    exposedPort: 80
  websecure:
    port: 443
    exposedPort: 443
    tls:
      enabled: true
      
# Monter le certificat TLS
volumes:
  - name: naval-lan-tls
    mountPath: "/certs"
    type: secret

persistence:
  enabled: true

3.3. Créer l'IngressRoute pour vos services

Exemple de configuration IngressRoute :

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: myapp-ingressroute
  namespace: default
spec:
  entryPoints:
    - websecure
  routes:
    - match: Host(`myapp.naval.lan`)
      kind: Rule
      services:
        - name: myapp-service
          port: 80
  tls:
    secretName: naval-lan-tls
---
# Optionnel : redirection HTTP vers HTTPS
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: myapp-http-redirect
  namespace: default
spec:
  entryPoints:
    - web
  routes:
    - match: Host(`myapp.naval.lan`)
      kind: Rule
      services:
        - name: myapp-service
          port: 80
      middlewares:
        - name: redirect-to-https
---
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: redirect-to-https
  namespace: default
spec:
  redirectScheme:
    scheme: https
    permanent: true

3.4. Appliquer la configuration Traefik

# Si vous utilisez Helm
helm upgrade --install traefik traefik/traefik \
  -n traefik \
  -f traefik-values.yaml

# Appliquer l'IngressRoute
kubectl apply -f ingressroute.yaml

Partie 4 : Installer le certificat CA sur les machines clientes

4.1. Clients Linux

Ubuntu/Debian :

# Copier ca-cert.pem vers votre client Linux
sudo cp ca-cert.pem /usr/local/share/ca-certificates/naval-ca.crt

# Mettre à jour les certificats CA
sudo update-ca-certificates

# Vérifier
openssl s_client -connect myapp.naval.lan:443 -CAfile /usr/local/share/ca-certificates/naval-ca.crt

RHEL/CentOS/Fedora :

# Copier ca-cert.pem vers votre client Linux
sudo cp ca-cert.pem /etc/pki/ca-trust/source/anchors/naval-ca.crt

# Mettre à jour les certificats CA
sudo update-ca-trust

# Vérifier
openssl s_client -connect myapp.naval.lan:443

Pour Firefox (utilise son propre magasin de certificats) :

  1. Ouvrir Firefox
  2. Aller dans ParamètresVie privée et sécurité
  3. Descendre jusqu'à Certificats → Cliquer sur Afficher les certificats
  4. Aller dans l'onglet Autorités
  5. Cliquer sur Importer
  6. Sélectionner ca-cert.pem
  7. Cocher "Confirmer cette AC pour identifier des sites web"
  8. Cliquer sur OK

4.2. Clients Windows

Méthode 1 : Utilisation de MMC (Console de gestion Microsoft)

  1. Copier ca-cert.pem sur votre machine Windows
  2. Le renommer en ca-cert.crt (optionnel, pour une meilleure reconnaissance)
  3. Faire un clic droit sur ca-cert.crtInstaller le certificat
  4. Choisir Ordinateur local (nécessite les droits administrateur)
  5. Cliquer sur Suivant
  6. Sélectionner Placer tous les certificats dans le magasin suivant
  7. Cliquer sur Parcourir → Sélectionner Autorités de certification racines de confiance
  8. Cliquer sur SuivantTerminer
  9. Cliquer sur Oui à l'avertissement de sécurité

Méthode 2 : Utilisation de la ligne de commande (PowerShell Administrateur)

# Importer le certificat dans le magasin CA racine de confiance
Import-Certificate -FilePath "C:\chemin\vers\ca-cert.pem" -CertStoreLocation Cert:\LocalMachine\Root

# Vérifier
Get-ChildItem -Path Cert:\LocalMachine\Root | Where-Object {$_.Subject -like "*Naval*"}

Méthode 3 : Utilisation de certutil (Invite de commandes en Administrateur)

certutil -addstore -f "ROOT" ca-cert.pem

Pour Firefox sur Windows :

Mêmes étapes que Firefox sur Linux ci-dessus.

4.3. Vérifier l'installation

Linux :

# Tester avec curl
curl -v https://myapp.naval.lan

# Tester avec openssl
openssl s_client -connect myapp.naval.lan:443 -showcerts

Windows :

# Tester avec PowerShell
Invoke-WebRequest -Uri https://myapp.naval.lan

# Ou utiliser le navigateur
# Naviguer vers https://myapp.naval.lan

Partie 5 : Configuration DNS

Assurez-vous que vos clients peuvent résoudre les domaines naval.lan :

5.1. Option 1 : Serveur DNS local (Recommandé)

Configurez un serveur DNS local (dnsmasq, Pi-hole, ou DNS Windows) avec :

*.naval.lan → [IP Traefik Ingress]

5.2. Option 2 : Fichier hosts

Linux : /etc/hosts

sudo nano /etc/hosts

Windows : C:\Windows\System32\drivers\etc\hosts (en tant qu'Administrateur)

notepad C:\Windows\System32\drivers\etc\hosts

Ajouter les entrées :

192.168.1.100  myapp.naval.lan
192.168.1.100  dashboard.naval.lan

Remplacez 192.168.1.100 par l'IP de votre ingress Traefik.

Partie 6 : Renouvellement du certificat

Vos certificats expireront. Pour les renouveler :

cd ~/certs/naval-ca

# Générer un nouveau CSR (ou réutiliser la clé existante)
openssl req -new -key naval-lan-key.pem -out naval-lan-new.csr -config naval-lan.conf

# Signer avec la CA
openssl x509 -req -in naval-lan-new.csr -CA ca-cert.pem -CAkey ca-key.pem \
  -CAcreateserial -out naval-lan-cert-new.pem -days 730 \
  -extensions req_ext -extfile naval-lan.conf

# Mettre à jour le secret Kubernetes
kubectl create secret tls naval-lan-tls \
  --cert=naval-lan-cert-new.pem \
  --key=naval-lan-key.pem \
  -n traefik \
  --dry-run=client -o yaml | kubectl apply -f -

# Redémarrer les pods Traefik pour recharger le certificat
kubectl rollout restart deployment traefik -n traefik

Dépannage

Certificat non approuvé après l'installation

  • Vider le cache du navigateur : Certains navigateurs mettent en cache la validation des certificats
  • Redémarrer le navigateur : Nécessaire pour Chrome/Edge sur Windows
  • Vérifier la chaîne de certificats : openssl s_client -connect myapp.naval.lan:443 -showcerts

Erreur "NET::ERR_CERT_AUTHORITY_INVALID"

  • Vérifier que le certificat CA est dans le bon magasin
  • Sur Windows, assurez-vous qu'il est dans "Autorités de certification racines de confiance", pas "Intermédiaire"
  • Vérifier que les noms alternatifs du sujet du certificat incluent votre domaine

Firefox affiche toujours un avertissement

  • Firefox utilise son propre magasin de certificats sur toutes les plateformes
  • Vous devez importer le certificat CA directement dans Firefox

Certificat expiré

  • Vérifier la validité du certificat : openssl x509 -in naval-lan-cert.pem -noout -dates
  • Suivre les étapes de renouvellement de la Partie 6

Considérations de sécurité

  1. Protéger votre clé privée CA (ca-key.pem) :

    • Stockez-la en sécurité
    • Envisagez de la chiffrer avec une phrase secrète
    • Conservez des sauvegardes dans des emplacements sécurisés
  2. Période de validité du certificat :

    • Ne la rendez pas trop longue (2 ans maximum recommandé)
    • Configurez des rappels de calendrier pour le renouvellement
  3. Contrôle d'accès :

    • N'installez le certificat CA que sur les machines que vous contrôlez
    • Ne partagez pas votre clé privée CA
  4. Isolation réseau :

    • Gardez votre domaine .lan isolé d'Internet
    • Utilisez des règles de pare-feu pour empêcher l'accès externe

Commandes de référence rapide

# Vérifier les détails du certificat
openssl x509 -in naval-lan-cert.pem -text -noout

# Tester la connexion HTTPS
curl -v https://myapp.naval.lan

# Voir la CA installée sur Linux
awk -v cmd='openssl x509 -noout -subject' '/BEGIN/{close(cmd)};{print | cmd}' < /etc/ssl/certs/ca-certificates.crt | grep -i naval

# Voir la CA installée sur Windows (PowerShell)
Get-ChildItem -Path Cert:\LocalMachine\Root | Where-Object {$_.Subject -like "*Naval*"}

# Obtenir l'IP ingress Traefik
kubectl get svc -n traefik traefik -o jsonpath='{.status.loadBalancer.ingress[0].ip}'

Ressources supplémentaires


Créé : 9 janvier 2026
Dernière mise à jour : 9 janvier 2026