Auf dieser Seite wird das Apigee Hybrid-Zertifizierungsstellenzertifikat (CA) beschrieben, mit dem die internen Zertifikate signiert werden, die von Hybrid-Komponenten für die Kommunikation miteinander verwendet werden. Außerdem wird beschrieben, wie Sie es rotieren, bevor es abläuft. Ab Apigee Hybrid v1.17 können Sie diese Stamm-CA selbst rotieren.
Root-CA-Zertifikat
Jede Apigee Hybrid-Installation hat eine einzelne Stamm-CA, die als cert-manager-Certificate mit dem Namen apigee-ca im Namespace cert-manager gespeichert ist. Es handelt sich um eine selbstsignierte CA (isCA: true, allgemeiner Name apigee-hybrid), die als Vertrauensstamm für die internen Zertifikate dient, die vom Hybrid ausgestellt werden – sowohl für die gegenseitige TLS (mTLS) zwischen Komponenten als auch für die unidirektionale (serverseitige) TLS, die Zulassungs-Webhooks und die Konvertierung benutzerdefinierter Ressourcen schützt. Wenn diese CA abläuft, wird die interne Kommunikation zwischen Hybridkomponenten unterbrochen.
Warum das Root-CA-Zertifikat rotiert wird
Die Stamm-CA, die vom Hybrid-Diagramm generiert wird, hat eine Gültigkeitsdauer von 10 Jahren. Es muss rotiert werden, bevor es abläuft, damit die internen Zertifikate, die es signiert, weiterhin verlängert werden können und die Kommunikation zwischen den Komponenten nie unterbrochen wird. Die Rotation ist so konzipiert, dass keine Ausfallzeiten entstehen: Während der Umstellung vertrauen Ihre Komponenten sowohl der alten als auch der neuen Root-Zertifizierungsstelle. Zertifikate, die von einer der beiden signiert wurden, bleiben also gültig, bis die alte Zertifizierungsstelle entfernt wird.
So funktioniert die Rotation
Sie rotieren die Stamm-CA, indem Sie Ihren Cluster in der richtigen Reihenfolge durch vier Phasen führen. Sie gehen erst zur nächsten Phase über, wenn die aktuelle Phase für jede Komponente abgeschlossen ist. Jede Phase wird durch ein einzelnes Überschreibungsfeld (certRotation.phase) gesteuert, das mit einem helm upgrade des Apigee-Operator-Diagramms (apigee-operator) angewendet wird.
Phase (certRotation.phase) |
Was passiert dann? | Rollback möglich |
|---|---|---|
1. CREATE_NEW_CA |
Eine neue Root-Zertifizierungsstelle (apigee-ca-2) wird erstellt und dem Truststore jeder Hybrid-Komponente hinzugefügt. Komponenten sind weiterhin vorhanden. Zertifikate, die von der alten CA signiert wurden, daher wurde noch nichts umgestellt. |
Ja |
2. CREATE_NEW_LEAF |
Es werden neue untergeordnete Zertifikate ausgestellt, die von der neuen Stammzertifizierungsstelle signiert sind. Sowohl die alte als auch die neue Root-Zertifizierungsstelle sind vertrauenswürdig, sodass der Traffic ohne Unterbrechung weitergeleitet wird. | Ja |
3. HIDE_OLD_CA |
Die alte Stamm-CA wird aus der aktiven Vertrauenskonfiguration entfernt. Nur die neue Stamm-CA wird weiterhin verwendet. In dieser Phase ist ein Rollback noch möglich. | Ja |
4. CLEANUP |
Die alte Stammzertifizierungsstelle und ihre Aussteller werden entfernt und die neue Stammzertifizierungsstelle wird zur Stammzertifizierungsstelle des Clusters hochgestuft. Diese Phase kann nicht rückgängig gemacht werden. | Nein |
Hinweis
- Installieren Sie die Befehlszeilentools
kubectlundhelmund achten Sie darauf, dass Ihrkubectl-Kontext auf den Cluster verweist, den Sie rotieren. - Prüfen Sie, ob der Cluster fehlerfrei ist. Jede
helm upgradeprüft, ob sich jedeApigeeDeploymentim Statusrunningbefindet und ob die angeforderte Phase die aktuelle Phase, die nächste Phase oder die Rollback-Phase ist. Wenn der Cluster fehlerhaft ist oder Sie versuchen, eine Phase zu überspringen, wird das Upgrade abgelehnt. - Wenn Sie eine multiregionale Bereitstellung ausführen, lesen Sie diesen Abschnitt, bevor Sie beginnen. Jede Region muss auf dieselbe neue Root-Zertifizierungsstelle ausgerichtet sein.
Stamm-CA rotieren
Führen Sie die folgenden Schritte für jede Phase aus, die unter So funktioniert die Rotation aufgeführt ist. Wenden Sie die Phase an und bestätigen Sie dann, dass sie abgeschlossen ist, bevor Sie mit der nächsten fortfahren. Führen Sie sie in einer multiregionalen Bereitstellung in jeder Region aus.
Schritt 1: Phase festlegen und anwenden
Fügen Sie die certRotation-Stanza in Ihrer Überschreibungsdatei hinzu oder aktualisieren Sie sie und legen Sie phase auf die Phase fest, die Sie anwenden. So starten Sie beispielsweise die Rotation:
certRotation: phase: CREATE_NEW_CA
Testen Sie die Änderung zuerst mit einem Probelauf:
helm upgrade operator apigee-operator/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE.yaml \ --dry-run=server
Wenden Sie die Änderung an:
helm upgrade operator apigee-operator/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE.yaml
Schritt 2: Bestätigen, dass die Phase abgeschlossen ist
Der Cluster zeichnet den Rotationsfortschritt in der cert-info-ConfigMap im Hybrid-Namespace auf. Lesen Sie den Wert currentPhase:
kubectl get configmap cert-info -n APIGEE_NAMESPACE \
-o jsonpath='{.data.currentPhase}'
Eine Phase ist erst abgeschlossen, wenn currentPhase der Phase entspricht, die Sie gerade angewendet haben. currentPhase wird erst aktualisiert, wenn alle Komponenten mit der angeforderten Phase übereinstimmen. Warten Sie also, bis dies der Fall ist.
Wenn currentPhase übereinstimmt, lesen Sie die nächste Phase, die aus derselben ConfigMap angewendet werden soll:
kubectl get configmap cert-info -n APIGEE_NAMESPACE \
-o jsonpath='{.data.readyForNextPhase}'
Legen Sie certRotation.phase auf diesen Wert fest und wiederholen Sie Schritt 1 und Schritt 2. Fahren Sie fort, bis Sie die Phase CLEANUP abgeschlossen haben.
Multiregionale Bereitstellungen
Bei einer Bereitstellung in mehreren Regionen hat jeder Cluster seine eigene cert-info-ConfigMap, seinen eigenen Operator und seine eigenen Truststores. Alle Regionen müssen der gleichen neuen Stammzertifizierungsstelle vertrauen. Das Diagramm generiert nur dann eine neue Root-CA, wenn das apigee-ca-2-Secret noch nicht vorhanden ist. Sie erstellen die neue CA also einmal in einer primären Region und kopieren sie in die anderen Regionen, bevor Sie sie rotieren.
Führen Sie die Rotation in der folgenden Reihenfolge durch. Bestätigen Sie currentPhase in einer Region (siehe Schritt 2: Phase abschließen), bevor Sie mit der nächsten Phase für diese Region fortfahren.
- Führen Sie
CREATE_NEW_CAin Ihrer primären Region aus. Das Diagramm erstellt die neue Stammzertifizierungsstelle und speichert sie im Secretapigee-ca-2. - Kopieren Sie das Secret
apigee-ca-2aus dem Namespacecert-managerder primären Region in den Namespacecert-managerjeder anderen Region, bevor SieCREATE_NEW_CAin diesen Regionen ausführen. Dies ist dasselbe Muster für das Kopieren von Secrets, das Sie verwenden, wenn Sie in eine neue Region expandieren. Weitere Informationen finden Sie unter Bereitstellungen in mehreren Regionen. - Führen Sie
CREATE_NEW_CAin jeder der anderen Regionen aus, jeweils in einer Region. Da dasapigee-ca-2-Secret bereits vorhanden ist, wird im Diagramm keine neue Zertifizierungsstelle erstellt und die Region wird an die freigegebene gebunden. - Führen Sie
CREATE_NEW_LEAFin jeder Region aus. - Führen Sie
HIDE_OLD_CAin jeder Region aus. - Führen Sie
CLEANUPin jeder Region aus. - Entfernen Sie den
certRotation-Abschnitt aus der Überschreibungsdatei jeder Region, um die Konfiguration zu bereinigen.
Über CREATE_NEW_CA, CREATE_NEW_LEAF und HIDE_OLD_CA vertraut jede Region sowohl der alten als auch der neuen Root-Zertifizierungsstelle. Regionen können sich in diesem Zeitraum also in unterschiedlichen Phasen befinden, ohne dass der Traffic zwischen ihnen unterbrochen wird.
Eigene Zertifizierungsstelle verwenden
Wenn Sie Ihre eigene Stamm-CA anstelle einer vom Chart generierten verwenden möchten, erstellen Sie das neue CA-Secret, bevor Sie mit der Rotation beginnen. Da das Diagramm nur dann eine Zertifizierungsstelle generiert, wenn das Ziel-Secret fehlt, wird ein vorhandenes Secret unverändert verwendet.
Stamm-CA-Namen sind nicht kostenlos wählbar. Für jede Generation der CA wird in Hybrid ein fester Name erwartet – apigee-ca, dann apigee-ca-2, apigee-ca-3 usw. – und das Diagramm sucht nach der nächsten CA mit genau diesem Namen. Wenn Sie Ihre eigene Zertifizierungsstelle verwenden, müssen Sie das Secret unter dem genauen nächsten Namen erstellen (apigee-ca-2 für die erste Rotation). Das Diagramm erkennt keine Zertifizierungsstelle, die unter einem anderen Namen erstellt wurde. So finden Sie den aktuellen Secret-Namen und den nächsten Namen, der verwendet werden soll:
kubectl get certificate -n cert-manager \ -o custom-columns=CERTIFICATE:.metadata.name,SECRET:.spec.secretName
Unter Ablauf der Root-Zertifizierungsstelle im Blick behalten finden Sie weitere Möglichkeiten, um zu prüfen, zu welcher Generation Ihr Cluster gehört.
- Bevor Sie
CREATE_NEW_CAausführen, erstellen Sie ein Secret mit dem nächsten CA-Namen (apigee-ca-2für die erste Rotation) im Namespacecert-manager, das Ihr CA-Zertifikat und Ihren privaten Schlüssel enthält. Das Secret muss vom Typkubernetes.io/tlssein und drei Schlüssel enthalten:tls.crt,tls.keyundca.crt. Dakubectl create secret tlsden Schlüsselca.crtnicht festlegen kann, verwenden Sie die generische Form:kubectl create secret generic apigee-ca-2 \ --namespace cert-manager \ --type=kubernetes.io/tls \ --from-file=tls.crt=CERT_FILE \ --from-file=tls.key=KEY_FILE \ --from-file=ca.crt=CA_FILE
- Führen Sie die Rotation wie unter Root-CA rotieren beschrieben aus. Während
CREATE_NEW_CAwird Ihrapigee-ca-2-Secret erkannt, die Generierung einer CA wird übersprungen und der neue Aussteller (apigee-ca-issuer-2) wird an Ihre CA gebunden. Alle anderen Phasen bleiben unverändert.
Wenn Sie Ihre eigene Zertifizierungsstelle verwenden, richtet sich die Gültigkeitsdauer nach der Ihres Zertifikats und nicht nach dem 10-jährigen Standardwert des Diagramms.
Rotation rückgängig machen
Jede Phase vor CLEANUP kann rückgängig gemacht werden. Um ein Rollback durchzuführen, legen Sie certRotation.phase auf den Wert fest, den der Cluster als Rollback-Ziel meldet, und wenden Sie ihn mit helm upgrade an, genau wie bei einer Forward-Phase.
Lesen Sie das Rollback-Ziel aus der ConfigMap cert-info:
kubectl get configmap cert-info -n APIGEE_NAMESPACE \
-o jsonpath='{.data.readyForRollbackPhase}'
Die Forward- und Rollback-Ziele für die einzelnen Phasen sind:
| Aktuelle Phase | Nächste Phase | Rollback-Phase |
|---|---|---|
PHASE_UNSPECIFIED (nicht begonnen) |
CREATE_NEW_CA |
PHASE_UNSPECIFIED |
CREATE_NEW_CA |
CREATE_NEW_LEAF |
PHASE_UNSPECIFIED |
CREATE_NEW_LEAF |
HIDE_OLD_CA |
CREATE_NEW_CA |
HIDE_OLD_CA |
CLEANUP |
CREATE_NEW_LEAF |
CLEANUP |
– (Rotation abgeschlossen) | – (keine; irreversibel) |
Ablauf der Stamm-CA im Blick behalten
Da die Rotation in Apigee Hybrid vom Kunden gesteuert wird, sind Sie dafür verantwortlich, die Stammzertifizierungsstelle zu rotieren, bevor sie abläuft. Behalten Sie das Ablaufdatum des apigee-ca-Zertifikats im Blick und planen Sie die Rotation rechtzeitig, damit Sie genügend Zeit haben, alle vier Phasen in jeder Region abzuschließen.
Um zu prüfen, wann die Root-Zertifizierungsstelle abläuft, listen Sie die CA-Zertifikate im Namespace cert-manager auf und lesen Sie dann das Ablaufdatum der aktuell verwendeten Generation:
kubectl get certificate -n cert-manager
kubectl get certificate apigee-ca -n cert-manager \
-o jsonpath='{.status.notAfter}'
Mit dem ersten Befehl wird jede Generation der Stamm-CA aufgelistet (apigee-ca, apigee-ca-2 usw.). Der zweite Befehl gibt das Ablaufdatum des benannten Zertifikats aus. Führen Sie ihn für die aktuell verwendete Generation aus.
Die automatisierte Problemsuche in Apigee Hybrid meldet Clusterprobleme, die als ApigeeIssue-Ressourcen erkannt werden. Sie können sie mit kubectl get apigeeissues auflisten. Prüfen Sie im Rahmen Ihres regulären Monitorings, ob Probleme aufgetreten sind.
Nächste Schritte
- Informationen dazu, wie Zertifikate und Secrets über Regionen hinweg freigegeben werden, finden Sie unter Bereitstellungen in mehreren Regionen.
- Lesen Sie TLS und mTLS für das Ingress-Gateway konfigurieren, um mehr über das separate, vom Kunden bereitgestellte Ingress-Zertifikat zu erfahren.
- Sehen Sie sich die automatische Problemerkennung an, um Ihren Cluster auf erkannte Probleme zu überwachen.