Kubernetes intern CA
Når FoxIDs er distribuert i Kubernetes og utgående trafikk rutes gjennom en proxy som terminerer TLS og utsteder sertifikater på nytt fra en intern rot CA, må FoxIDs containerne stole på denne rot CAen.
Denne konfigurasjonen gjelder bare utgående HTTPS trafikk fra FoxIDs og FoxIDs Control pods, som kall til eksterne tjenester som gjøres gjennom proxyen. Det påvirker ikke hvordan innkommende TLS trafikk termineres.
Stegene under beskriver den enkleste konfigurasjonen, som ikke krever endringer i container image.
1) Opprett en bundle fil (PEM) som inneholder de interne røttene
Hvis du allerede har en kombinert bundle, bruk den. Hvis ikke, slå sammen de interne rotsertifikatene til én PEM fil og opprett 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
(Bruk en Secret i stedet for en ConfigMap hvis røttene er private.)
2) Mount bundle og sett SSL_CERT_FILE i begge deploymentene
Oppdater Kubernetes/k8s-foxids-deployment.yaml og legg til volume, mount og miljøvariabel i begge deploymentene.
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
Viktige merknader for .NET / ASP.NET
Hvis containerne må få tilgang til offentlige tjenester kan bruk av en CA bundle som bare inneholder private rotsertifikater bryte disse kallene, fordi den erstatter standard system trust store.
I så fall bør du enten:
- Opprette en kombinert CA bundle som inneholder både offentlige og private rotsertifikater og mount den (anbefalt).
- Utvid system trust store inne i container image i stedet for å bruke
SSL_CERT_FILE.
Slik oppretter du en kombinert bundle (offentlig + privat)
Den tryggeste tilnærmingen er å beholde det eksisterende offentlige trust store og legge til de interne rotsertifikatene. Start med den offentlige CA bundlen fra FoxIDs container base image, legg til de interne røttene og mount den resulterende kombinerte bundlen ved å bruke SSL_CERT_FILE.
Eksempel (banen kan variere avhengig av base image; verifiser den i containeren din):
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
Bruk samme volume mount og SSL_CERT_FILE konfigurasjon som beskrevet i steg 2, men pek den til combined-roots.pem.