Mancata corrispondenza del certificato di Ingress

Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Non esiste una documentazione Apigee Edge equivalente per questo argomento.

Sintomo

Un ApigeeIssue con Reason AIS_INGRESS_CERT_MISMATCH viene mostrato quando visualizzi le risorse nello spazio dei nomi apigee.

Messaggi di errore

Dopo aver eseguito kubectl -n apigee get apigeeissues, viene visualizzato il seguente errore:

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

Causa: mancata corrispondenza del certificato Ingress

La chiave privata e il certificato archiviati nel secret Kubernetes a cui fa riferimento un ApigeeRouteConfig non corrispondono.

Diagnosi

Esegui questo comando:

kubectl -n apigee describe apigeeissue ISSUE_NAME

Dove ISSUE_NAME è il nome del problema. Ad esempio, ingress-cert-mismatch-my-org-my-virtualhost.

Viene restituito un risultato simile al seguente:

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

I contenuti di Spec.Details spiegano il nome di ApigeeRouteConfig che si riferisce al secret Kubernetes contenente il certificato ingress e la chiave privata.

Risoluzione

  1. Utilizza kubectl describe per visualizzare il nome di ApigeeRouteConfig che ha la chiave e il certificato in entrata non corrispondenti:

    kubectl -n apigee describe apigeeissue ISSUE_NAME

    Dove ISSUE_NAME è il nome del problema. Ad esempio, ingress-cert-mismatch-my-org-my-virtualhost.

    In questo esempio, ApigeeRouteConfig my-org-my-virtualhost fa riferimento al secret my-org-my-virtualhost.

  2. Determina il nome di virtualhost da ApigeeRouteConfig.

    Il nome di ApigeeRouteConfig è nel formato: <Apigee organization>-<virtualhost name>.

    In questo esempio, my-org è l'organizzazione Apigee e il nome dell'host virtuale è my-virtualhost.

  3. Trova l'host virtuale corrispondente nel file overrides.yaml:

    virtualhosts:
    ...
    - name: my-virtualhost
      selector:
        app: apigee-ingressgateway
      sslCertPath: ./certs/vhost.pem
      sslKeyPath: ./certs/vhost.key
    ...
  4. Verifica che i file del certificato e della chiave utilizzati corrispondano.

    Utilizzando sslCertPath e sslKeyPath del passaggio precedente, convalida la corrispondenza delle somme MD5 utilizzando openssl:

    openssl x509 -noout -modulus -in SSL_CERT_PATH | openssl md5
    openssl rsa -noout -modulus -in SSL_KEY_PATH | openssl md5

    • Dove SSL_CERT_PATH è il sslCertPath del passaggio precedente. Ad esempio: ./certs/vhost.pem.
    • Dove SSL_KEY_PATH è il sslKeyPath del passaggio precedente. Ad esempio: ./certs/vhost.key.

    L'output dei due comandi precedenti deve corrispondere:

    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
  5. Se l'output dei comandi precedenti non corrisponde, utilizza uno dei seguenti metodi per correggere il problema:

    • Aggiorna sslCertPath e sslKeyPath dell'host virtuale in modo che puntino ai percorsi dei file corretti.
    • Correggi i contenuti del file sslCertPath o sslKeyPath in modo che contengano la coppia di chiave e certificato corrispondente corretta.
  6. Applica le modifiche all'host virtuale utilizzando Helm:

    helm upgrade ENV_GROUP_NAME apigee-virtualhost/ \
      --namespace APIGEE_NAMESPACE \
      --atomic \
      --set envgroup=ENV_GROUP_NAME \
      -f OVERRIDES_FILE

    Assicurati di includere tutte le impostazioni mostrate, incluso --atomic in modo che l'azione venga annullata in caso di errore.

Deve raccogliere informazioni diagnostiche

Se il problema persiste anche dopo aver seguito le istruzioni riportate sopra, raccogli le seguenti informazioni diagnostiche e poi contatta l'assistenza clienti Google Cloud:

  1. L'ID progetto Google Cloud .
  2. Il nome dell'organizzazione Apigee hybrid.
  3. Il campo Spec.Details di ApigeeIssue.
  4. (facoltativo) File a cui fanno riferimento sslCertPath e sslKeyPath per il virtual host interessato.