Wewnętrzny CA w Kubernetes
Gdy FoxIDs jest wdrożony w Kubernetes, a ruch wychodzący jest kierowany przez proxy, które kończy TLS i ponownie wystawia certyfikaty z wewnętrznego głównego CA, kontenery FoxIDs muszą ufać temu głównemu CA.
Ta konfiguracja dotyczy wyłącznie ruchu HTTPS wychodzącego z podów FoxIDs i FoxIDs Control, np. wywołań usług zewnętrznych wykonywanych przez proxy. Nie wpływa na sposób zakończenia TLS dla ruchu przychodzącego.
Poniższe kroki opisują najprostszą konfigurację, która nie wymaga żadnych modyfikacji obrazów kontenerów.
1) Utwórz plik pakietu (PEM) zawierający wewnętrzne rooty
Jeśli masz już połączony pakiet, użyj go. W przeciwnym razie połącz wewnętrzne certyfikaty root w jeden plik PEM i utwórz 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
(Użyj Secret zamiast ConfigMap, jeśli rooty są prywatne.)
2) Zamontuj pakiet i ustaw SSL_CERT_FILE w obu wdrożeniach
Zaktualizuj Kubernetes/k8s-foxids-deployment.yaml i dodaj wolumen, mount oraz zmienną środowiskową w obu wdrożeniach.
Wdrożenie 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
Wdrożenie 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
Ważne uwagi dla .NET / ASP.NET
Jeśli kontenery muszą uzyskiwać dostęp do usług publicznych, użycie pakietu CA zawierającego tylko prywatne certyfikaty root może zepsuć te wywołania, ponieważ zastępuje domyślny magazyn zaufania systemu.
W takim przypadku:
- Utwórz połączony pakiet CA zawierający zarówno publiczne, jak i prywatne certyfikaty root i zamontuj go (zalecane).
- Rozszerz systemowy magazyn zaufania wewnątrz obrazu kontenera zamiast używać
SSL_CERT_FILE.
Jak utworzyć połączony pakiet (publiczny + prywatny)
Najbezpieczniejsze podejście to zachować istniejący publiczny magazyn zaufania i dopisać wewnętrzne certyfikaty root. Zacznij od publicznego pakietu CA z obrazu bazowego kontenera FoxIDs, dodaj wewnętrzne rooty i zamontuj wynikowy pakiet połączony z użyciem SSL_CERT_FILE.
Przykład (ścieżka może się różnić w zależności od obrazu bazowego; zweryfikuj ją w kontenerze):
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
Użyj tego samego montowania wolumenu i konfiguracji SSL_CERT_FILE jak w kroku 2, ale wskaż combined-roots.pem.