Kubernetes internal CA
Lorsque FoxIDs est déployé dans Kubernetes et que le trafic sortant est routé via un proxy qui termine TLS et réémet des certificats à partir d’une CA racine interne, les conteneurs FoxIDs doivent faire confiance à cette CA racine.
Cette configuration ne s’applique qu’au trafic HTTPS sortant depuis les pods FoxIDs et FoxIDs Control, par exemple les appels vers des services externes via le proxy. Elle n’affecte pas la manière dont le trafic TLS entrant est terminé.
Les étapes ci-dessous décrivent la configuration la plus simple, qui ne nécessite aucune modification des images de conteneur.
1) Créer un fichier bundle (PEM) contenant les racines internes
Si vous disposez déjà d’un bundle combiné, utilisez-le. Sinon, concaténez les certificats des racines internes en un fichier PEM et créez un ConfigMap :
cat root1.crt root2.crt root3.crt > extra-roots.pem
kubectl -n <foxids-namespace> create configmap foxids-extra-ca --from-file=extra-roots.pem
(Utilisez un Secret plutôt qu’un ConfigMap si les racines sont privées.)
2) Monter le bundle et définir SSL_CERT_FILE dans les deux déploiements
Mettez à jour Kubernetes/k8s-foxids-deployment.yaml et ajoutez le volume, le montage et la variable d’environnement dans les deux déploiements.
Déploiement FoxIDs :
spec:
template:
spec:
volumes:
- name: extra-ca
configMap:
name: foxids-extra-ca
items:
- key: extra-roots.pem
path: extra-roots.pem
containers:
- name: foxids
volumeMounts:
- name: extra-ca
mountPath: /etc/ssl/certs/extra-roots.pem
subPath: extra-roots.pem
env:
- name: SSL_CERT_FILE
value: /etc/ssl/certs/extra-roots.pem
Déploiement FoxIDs Control :
spec:
template:
spec:
volumes:
- name: extra-ca
configMap:
name: foxids-extra-ca
items:
- key: extra-roots.pem
path: extra-roots.pem
containers:
- name: foxids-control
volumeMounts:
- name: extra-ca
mountPath: /etc/ssl/certs/extra-roots.pem
subPath: extra-roots.pem
env:
- name: SSL_CERT_FILE
value: /etc/ssl/certs/extra-roots.pem
Important notes for .NET / ASP.NET
Si les conteneurs doivent accéder à des services publics, l’utilisation d’un bundle de CA qui ne contient que des certificats racine privés peut casser ces appels, car il remplace le magasin de confiance du système par défaut.
Dans ce cas, vous devez soit :
- Créer un bundle de CA combiné qui inclut les certificats racine publics et privés et le monter (recommandé).
- Étendre le magasin de confiance du système à l’intérieur de l’image de conteneur au lieu d’utiliser
SSL_CERT_FILE.
How to create a combined bundle (public + private)
L’approche la plus sûre consiste à conserver le magasin de confiance public existant et à y ajouter vos certificats racine internes. Commencez par le bundle de CA public de l’image de base du conteneur FoxIDs, ajoutez vos racines internes et montez le bundle combiné résultant avec SSL_CERT_FILE.
Exemple (le chemin peut varier selon l’image de base ; vérifiez-le dans votre conteneur) :
cat /etc/ssl/certs/ca-certificates.crt extra-roots.pem > combined-roots.pem
kubectl -n <foxids-namespace> create configmap foxids-extra-ca --from-file=combined-roots.pem
Utilisez la même configuration de montage de volume et de SSL_CERT_FILE que décrite à l’étape 2, mais pointez vers combined-roots.pem.