Sie lesen gerade die Dokumentation zu Apigee und Apigee Hybrid.
Für dieses Thema gibt es keine entsprechende Apigee Edge-Dokumentation.
Symptom
Ein ApigeeIssue mit Reason AIS_INGRESS_CERT_MISMATCH wird angezeigt, wenn Ressourcen im Namespace apigee angezeigt werden.
Fehlermeldungen
Nachdem kubectl -n apigee get apigeeissues ausgeführt wurde, wird der folgende Fehler angezeigt:
NAME SEVERITY REASON DOCUMENTATION AGE ingress-cert-mismatch-my-org-my-virtualhost ERROR AIS_INGRESS_CERT_MISMATCH https://cloud.google.com/apigee/docs/hybrid/troubleshooting/AIS_INGRESS_CERT_MISMATCH 5h18m
Ursache: Nicht übereinstimmendes Ingress-Zertifikat
Der private Schlüssel und das Zertifikat, die im Kubernetes-Secret gespeichert sind, auf das ApigeeRouteConfig verweist, stimmen nicht überein.
Diagnose
Führen Sie dazu diesen Befehl aus:
kubectl -n apigee describe apigeeissue ISSUE_NAME
Dabei ist ISSUE_NAME der Name des Problems. Beispiel: ingress-cert-mismatch-my-org-my-virtualhost
Es wird in etwa Folgendes zurückgegeben:
Name: ingress-cert-mismatch-my-org-my-virtualhost Namespace: apigee Labels: ais-reason=AIS_INGRESS_CERT_MISMATCH Annotations: <none> API Version: apigee.cloud.google.com/v1alpha1 Kind: ApigeeIssue Metadata: Creation Timestamp: 2023-06-12T17:03:43Z Generation: 1 Owner References: API Version: apigee.cloud.google.com/v1alpha2 Kind: ApigeeOrganization Name: my-org UID: 7e83a52c-ce00-4bed-98be-55835ada1817 Resource Version: 3281563 UID: adc775c2-376d-4bf9-9860-500b2b2b8273 Spec: Details: Ingress cert and private key in secret "my-org-my-virtualhost" for ApigeeRouteConfig "my-org-my-virtualhost" do not match Documentation: https://cloud.google.com/apigee/docs/hybrid/troubleshooting/AIS_INGRESS_CERT_MISMATCH Reason: AIS_INGRESS_CERT_MISMATCH Severity: ERROR Events: <none>
Spec: Details: Ingress cert and private key in secret "my-org-my-virtualhost" for ApigeeRouteConfig "my-org-my-virtualhost" do not match
Der Inhalt von Spec.Details erläutert den Namen des ApigeeRouteConfig, der auf das Kubernetes-Secret mit dem Ingress-Zertifikat und dem privaten Schlüssel verweist.
Lösung
-
Verwenden Sie
kubectl describe, um den Namen desApigeeRouteConfiganzuzeigen, der das nicht übereinstimmende Ingress-Zertifikat und den nicht übereinstimmenden Ingress-Schlüssel hat:kubectl -n apigee describe apigeeissue ISSUE_NAME
Dabei ist ISSUE_NAME der Name des Problems. Beispiel:
ingress-cert-mismatch-my-org-my-virtualhost.In diesem Beispiel verweist
ApigeeRouteConfigmy-org-my-virtualhostauf das Secretmy-org-my-virtualhost. -
Ermitteln Sie den
virtualhost-Namen aus demApigeeRouteConfig.Der Name des
ApigeeRouteConfighat das Format:<Apigee organization>-<virtualhost name>.In diesem Beispiel ist
my-orgdie Apigee-Organisation und der Name des virtuellen Hostsmy-virtualhost. -
Suchen Sie den entsprechenden virtuellen Host in der Datei
overrides.yaml:virtualhosts: ... - name: my-virtualhost selector: app: apigee-ingressgateway sslCertPath: ./certs/vhost.pem sslKeyPath: ./certs/vhost.key ... -
Prüfen Sie, ob das verwendete Zertifikat und die verwendeten Schlüsseldateien übereinstimmen.
Prüfen Sie mit
sslCertPathundsslKeyPathaus dem vorherigen Schritt, ob die MD5-Summen übereinstimmen:opensslopenssl x509 -noout -modulus -in SSL_CERT_PATH | openssl md5
openssl rsa -noout -modulus -in SSL_KEY_PATH | openssl md5
-
Dabei ist SSL_CERT_PATH die
sslCertPathaus dem vorherigen Schritt. Beispiel:./certs/vhost.pem. -
Dabei ist SSL_KEY_PATH die
sslKeyPathaus dem vorherigen Schritt. Beispiel:./certs/vhost.key.
Die Ausgabe der beiden oben genannten Befehle sollte übereinstimmen:
openssl x509 -noout -modulus -in ./certs/vhost.pem | openssl md5 MD5(stdin)= 40ba189dbe9d6fbfbdde1a8ef803d2d4
openssl rsa -noout -modulus -in ./certs/vhost.key | openssl md5 MD5(stdin)= 40ba189dbe9d6fbfbdde1a8ef803d2d4
-
Dabei ist SSL_CERT_PATH die
-
Wenn die Ausgabe der vorherigen Befehle nicht übereinstimmt, verwenden Sie eine der folgenden Methoden, um das Problem zu beheben:
-
Aktualisieren Sie
sslCertPathundsslKeyPathdes Virtual Hosts, sodass sie auf die richtigen Dateipfade verweisen. -
Korrigieren Sie den Inhalt der Datei
sslCertPathodersslKeyPath, sodass sie das richtige übereinstimmende Zertifikats- und Schlüsselpaar enthält.
-
Aktualisieren Sie
-
Wenden Sie die Änderungen mit Helm auf den Virtualhost an:
helm upgrade ENV_GROUP_NAME apigee-virtualhost/ \ --namespace APIGEE_NAMESPACE \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f OVERRIDES_FILE
Achten Sie darauf, dass alle gezeigten Einstellungen enthalten sind, einschließlich
--atomic, damit die Aktion bei einem Fehler rückgängig gemacht wird.
Erfassen von Diagnoseinformationen erforderlich
Wenn das Problem auch nach Befolgen der obigen Anweisungen weiterhin besteht, sammeln Sie die folgenden Diagnoseinformationen und wenden Sie sich dann an Google Cloud Customer Care:
- Die Google Cloud Projekt-ID.
- Der Name der Apigee Hybrid-Organisation.
- Das Feld
Spec.DetailsvonApigeeIssue. -
(Optional) Dateien, auf die von
sslCertPathundsslKeyPathfür den betroffenen virtuellen Host verwiesen wird.