Kubernetes intern CA
När FoxIDs är deployad i Kubernetes och utgående trafik routas genom en proxy som terminerar TLS och återutfärdar certifikat från en intern root CA, måste FoxIDs containrar lita på den root CA.
Denna konfiguration gäller endast för utgående HTTPS trafik från FoxIDs och FoxIDs Control pods, såsom anrop till externa tjänster genom proxyn. Den påverkar inte hur inkommande TLS trafik termineras.
Stegen nedan beskriver den enklaste konfigurationen som inte kräver några ändringar av container images.
1) Skapa en bundle fil (PEM) som innehåller de interna roots
Om du redan har en kombinerad bundle, använd den. Annars, slå ihop de interna root certifikaten till en PEM fil och skapa en 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
(Använd en Secret istället för en ConfigMap om roots är privata.)
2) Mounta bundlen och sätt SSL_CERT_FILE i båda deployments
Uppdatera Kubernetes/k8s-foxids-deployment.yaml och lägg till volume, mount och environment variable i båda 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
Viktiga anmärkningar för .NET / ASP.NET
Om containrarna behöver nå publika tjänster kan användning av en CA bundle som endast innehåller privata root certifikat bryta dessa anrop eftersom den ersätter standard system trust store.
I så fall bör du antingen:
- Skapa en kombinerad CA bundle som inkluderar både publika och privata root certifikat och mounta den (rekommenderat).
- Utöka system trust store inne i container image istället för att använda
SSL_CERT_FILE.
Så skapar du en kombinerad bundle (publik + privat)
Det säkraste är att behålla den befintliga publika trust store och lägga till dina interna root certifikat. Börja med den publika CA bundlen från FoxIDs container base image, lägg till dina interna roots och mounta den resulterande kombinerade bundlen med SSL_CERT_FILE.
Exempel (sökvägen kan variera beroende på base image; verifiera den i din 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
Använd samma volume mount och SSL_CERT_FILE konfiguration som i steg 2 men peka till combined-roots.pem.