Kubernetes interne CA
Wenn FoxIDs in Kubernetes bereitgestellt ist und ausgehender Traffic über einen Proxy geleitet wird, der TLS beendet und Zertifikate aus einer internen root CA neu ausstellt, müssen die FoxIDs Container dieser root CA vertrauen.
Diese Konfiguration gilt nur für ausgehenden HTTPS Traffic von den FoxIDs und FoxIDs Control Pods, z. B. für Aufrufe externer Dienste über den Proxy. Sie beeinflusst nicht, wie eingehender TLS Traffic beendet wird.
Die folgenden Schritte beschreiben die einfachste Konfiguration, die keine Änderungen an den Container Images erfordert.
1) Erstellen Sie eine Bundle Datei (PEM) mit den internen Roots
Wenn Sie bereits ein kombiniertes Bundle haben, verwenden Sie es. Andernfalls fügen Sie die internen root Zertifikate zu einer PEM Datei zusammen und erstellen Sie eine 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
(Verwenden Sie ein Secret statt einer ConfigMap, wenn die Roots privat sind.)
2) Mounten Sie das Bundle und setzen Sie SSL_CERT_FILE in beiden Deployments
Aktualisieren Sie Kubernetes/k8s-foxids-deployment.yaml und fügen Sie Volume, Mount und Umgebungsvariable in beiden Deployments hinzu.
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
Wichtige Hinweise für .NET / ASP.NET
Wenn die Container öffentliche Dienste erreichen müssen, kann die Verwendung eines CA Bundle, das nur private root Zertifikate enthält, diese Aufrufe unterbrechen, da es den standardmäßigen System Trust Store ersetzt.
In diesem Fall sollten Sie entweder:
- Ein kombiniertes CA Bundle erstellen, das sowohl öffentliche als auch private root Zertifikate enthält, und es mounten (empfohlen).
- Den System Trust Store im Container Image erweitern, statt
SSL_CERT_FILEzu verwenden.
So erstellen Sie ein kombiniertes Bundle (öffentlich + privat)
Der sicherste Ansatz ist, den vorhandenen öffentlichen Trust Store beizubehalten und Ihre internen root Zertifikate anzuhängen. Beginnen Sie mit dem öffentlichen CA Bundle aus dem FoxIDs Container Base Image, fügen Sie Ihre internen Roots hinzu und mounten Sie das resultierende kombinierte Bundle mit SSL_CERT_FILE.
Beispiel (der Pfad kann je nach Base Image variieren; prüfen Sie ihn in Ihrem 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
Verwenden Sie die gleiche Volume Mount und SSL_CERT_FILE Konfiguration wie in Schritt 2 beschrieben, zeigen Sie jedoch auf combined-roots.pem.