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 :
- Créer votre propre Autorité de Certification (CA)
- Générer des certificats SSL signés par votre CA
- Configurer Traefik pour utiliser ces certificats
- 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) :
- Ouvrir Firefox
- Aller dans Paramètres → Vie privée et sécurité
- Descendre jusqu'à Certificats → Cliquer sur Afficher les certificats
- Aller dans l'onglet Autorités
- Cliquer sur Importer
- Sélectionner
ca-cert.pem - Cocher "Confirmer cette AC pour identifier des sites web"
- Cliquer sur OK
4.2. Clients Windows
Méthode 1 : Utilisation de MMC (Console de gestion Microsoft)
- Copier
ca-cert.pemsur votre machine Windows - Le renommer en
ca-cert.crt(optionnel, pour une meilleure reconnaissance) - Faire un clic droit sur
ca-cert.crt→ Installer le certificat - Choisir Ordinateur local (nécessite les droits administrateur)
- Cliquer sur Suivant
- Sélectionner Placer tous les certificats dans le magasin suivant
- Cliquer sur Parcourir → Sélectionner Autorités de certification racines de confiance
- Cliquer sur Suivant → Terminer
- 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é
-
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
-
Période de validité du certificat :
- Ne la rendez pas trop longue (2 ans maximum recommandé)
- Configurez des rappels de calendrier pour le renouvellement
-
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
-
Isolation réseau :
- Gardez votre domaine
.lanisolé d'Internet - Utilisez des règles de pare-feu pour empêcher l'accès externe
- Gardez votre domaine
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