Kubernetes interne CA
Wanneer FoxIDs in Kubernetes is gedeployed en uitgaand verkeer via een proxy loopt die TLS beëindigt en certificaten opnieuw uitgeeft vanuit een interne root CA, moeten de FoxIDs containers die root CA vertrouwen.
Deze configuratie geldt alleen voor uitgaand HTTPS verkeer vanuit de FoxIDs en FoxIDs Control pods, zoals calls naar externe services via de proxy. Het heeft geen invloed op hoe inkomend TLS verkeer wordt beëindigd.
De onderstaande stappen beschrijven de eenvoudigste configuratie, die geen wijzigingen aan de container images vereist.
1) Maak een bundelbestand (PEM) met de interne roots
Als je al een gecombineerde bundel hebt, gebruik die dan. Anders concateneer je de interne root certificaten in één PEM bestand en maak je een 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
(Use a Secret instead of a ConfigMap if the roots are private.)
2) Mount de bundel en zet SSL_CERT_FILE in beide deployments
Werk Kubernetes/k8s-foxids-deployment.yaml bij en voeg de volume, mount en environment variable toe in beide deployments.
FoxIDs deployment:
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
FoxIDs Control deployment:
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
Belangrijke opmerkingen voor .NET / ASP.NET
Als de containers toegang moeten hebben tot publieke services, kan het gebruik van een CA bundel die alleen private root certificaten bevat die calls breken, omdat die de standaard system trust store vervangt.
In dat geval kun je:
- Een gecombineerde CA bundel maken die zowel publieke als private root certificaten bevat en die mounten (aanbevolen).
- De system trust store uitbreiden binnen de container image in plaats van
SSL_CERT_FILEte gebruiken.
Hoe je een gecombineerde bundel maakt (publiek + privé)
De veiligste aanpak is om de bestaande publieke trust store te behouden en je interne root certificaten toe te voegen. Begin met de publieke CA bundel uit het FoxIDs container base image, voeg je interne roots toe en mount de resulterende gecombineerde bundel met SSL_CERT_FILE.
Voorbeeld (het pad kan variëren afhankelijk van het base image; controleer dit in je container):
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
Gebruik dezelfde volume mount en SSL_CERT_FILE configuratie zoals beschreven in stap 2, maar wijs naar combined-roots.pem.