Certificato CA mTLS in entrata non valido

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

Sintomo

Un ApigeeIssue con Reason AIS_INGRESS_MTLS_CA_CERT_INVALID viene mostrato quando si visualizzano le risorse nello spazio dei nomi apigee.

Messaggi di errore

Dopo aver eseguito kubectl -n apigee get apigeeissues, si verifica un errore come il seguente visualizzato:

NAME                                    SEVERITY   REASON                             DOCUMENTATION                                                                                  AGE
ca-cert-invalid-my-org-my-virtualhost   ERROR      AIS_INGRESS_MTLS_CA_CERT_INVALID   https://cloud.google.com/apigee/docs/hybrid/troubleshooting/AIS_INGRESS_MTLS_CA_CERT_INVALID   5h18m

Cause possibili

Causa Descrizione
Il certificato CA mTLS in entrata non è con codifica PEM Il certificato CA mTLS in entrata configurato non è con codifica PEM.
Il formato del certificato CA mTLS in entrata non è valido Il formato del certificato CA mTLS in entrata configurato non è valido.

Causa: il certificato CA mTLS in entrata non è con codifica PEM

Il certificato CA mTLS in entrata archiviato nel secret Kubernetes a cui fa riferimento un In ApigeeRouteConfig mancano i blocchi di testo con codifica PEM (oppure il formato non è valido).

Diagnosi

Esegui questo comando:

kubectl -n apigee describe apigeeissue ISSUE_NAME

dove ISSUE_NAME è il nome del problema. Ad esempio: ca-cert-invalid-my-org-my-virtualhost.

L'output dovrebbe essere simile al seguente:

Name:         ca-cert-invalid-my-org-my-virtualhost
Namespace:    apigee
Labels:       ais-reason=AIS_INGRESS_MTLS_CA_CERT_INVALID
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:        CA certificate in secret "my-org-my-virtualhost" for ApigeeRouteConfig "my-org-my-virtualhost" is not PEM encoded
  Documentation:  https://cloud.google.com/apigee/docs/hybrid/troubleshooting/AIS_INGRESS_MTLS_CA_CERT_INVALID
  Reason:         AIS_INGRESS_MTLS_CA_CERT_INVALID
  Severity:       ERROR
Events:           <none>
Spec:
  Details:        CA certificate in secret "my-org-my-virtualhost" for ApigeeRouteConfig "my-org-my-virtualhost" is not PEM encoded

I contenuti di Spec.Details spiegano il nome del ApigeeRouteConfig che fa riferimento al secret Kubernetes contenente il traffico mTLS in entrata Certificato CA non con codifica PEM.

Risoluzione

  1. Usa kubectl describe per visualizzare il nome del ApigeeRouteConfig che ha il certificato CA mTLS in entrata che non è codificato PEM:

    kubectl -n apigee describe apigeeissue ISSUE_NAME

    dove ISSUE_NAME è il nome del problema. Ad esempio: ca-cert-invalid-my-org-my-virtualhost.

    In questo esempio, il valore di ApigeeRouteConfig my-org-my-virtualhost è che fa riferimento al secret my-org-my-virtualhost.

  2. Stabilisci il nome virtualhost dal ApigeeRouteConfig.

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

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

  3. Trova il virtualhost corrispondente nel tuo overrides.yaml.

    virtualhosts:
    ...
    - name: my-virtualhost
      selector:
        app: apigee-ingressgateway
      caCertPath: ./certs/ca.pem
      sslCertPath: ./certs/vhost.pem
      sslKeyPath: ./certs/vhost.key
    ...
  4. Convalida i contenuti del file fornito tramite il percorso dichiarato in caCertPath. Assicurati che i contenuti includano i blocchi di certificati iniziali e finali richiesti. Ad esempio:

    -----BEGIN CERTIFICATE-----
    MIIDYTCCAkmgAwIBAgIUSXeU0pQYRFzYlqZpKhNNJdBLFBIwDQYJKoZIhvcNAQEL
    ... <contents omitted> ...
    eWJyaWQuZTJlLmFwaWdlZWtzLm5ldDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
    MMM=
    -----END CERTIFICATE-----
  5. Una volta corretti i contenuti e il formato del file, applica la modifica al virtualhost:

    helm upgrade ENV_GROUP_NAME apigee-virtualhost/ \
      --namespace apigee \
      --set envgroup=ENV_GROUP_NAME \
      -f overrides.yaml

Causa: il formato del certificato CA mTLS in entrata non è valido

Il certificato CA mTLS in entrata archiviato nel secret Kubernetes a cui fa riferimento un Formato ApigeeRouteConfig non valido.

Diagnosi

Esegui questo comando:

kubectl -n apigee describe apigeeissue ISSUE_NAME

dove ISSUE_NAME è il nome del problema. Ad esempio: ca-cert-invalid-my-org-my-virtualhost.

L'output dovrebbe essere simile al seguente:

Name:         ca-cert-invalid-my-org-my-virtualhost
Namespace:    apigee
Labels:       ais-reason=AIS_INGRESS_MTLS_CA_CERT_INVALID
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:        CA certificate in secret "my-org-my-virtualhost" for ApigeeRouteConfig "my-org-my-virtualhost" is invalid
  Documentation:  https://cloud.google.com/apigee/docs/hybrid/troubleshooting/AIS_INGRESS_MTLS_CA_CERT_INVALID
  Reason:         AIS_INGRESS_MTLS_CA_CERT_INVALID
  Severity:       ERROR
Events:           <none>
Spec:
  Details:        CA certificate in secret "my-org-my-virtualhost" for ApigeeRouteConfig "my-org-my-virtualhost" is invalid

I contenuti di Spec.Details spiegano il nome del ApigeeRouteConfig che fa riferimento al secret Kubernetes contenente il traffico mTLS in entrata Certificato CA in formato non valido e che non è stato possibile analizzare.

Risoluzione

  1. Usa kubectl describe per visualizzare il nome del ApigeeRouteConfig che contiene il certificato CA mTLS in entrata che non è valido:

    kubectl -n apigee describe apigeeissue ISSUE_NAME

    dove ISSUE_NAME è il nome del problema. Ad esempio: ca-cert-invalid-my-org-my-virtualhost.

    In questo esempio, il valore di ApigeeRouteConfig my-org-my-virtualhost è che fa riferimento al secret my-org-my-virtualhost.

  2. Stabilisci il nome virtualhost dal ApigeeRouteConfig.

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

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

  3. Trova il virtualhost corrispondente nel tuo overrides.yaml.

    virtualhosts:
    ...
    - name: my-virtualhost
      selector:
        app: apigee-ingressgateway
      caCertPath: ./certs/ca.pem
      sslCertPath: ./certs/vhost.pem
      sslKeyPath: ./certs/vhost.key
    ...
  4. Convalida i contenuti del file fornito tramite il percorso dichiarato in caCertPath. Assicurati che i contenuti contengano l'intero certificato. Ad esempio:

    -----BEGIN CERTIFICATE-----
    MIIDYTCCAkmgAwIBAgIUSXeU0pQYRFzYlqZpKhNNJdBLFBIwDQYJKoZIhvcNAQEL
    BQAwQDE+MDwGA1UEAww1bWF4bWlsbGlvbi1oeWJyaWQtc3RhZ2luZy1kZXYuaHli
    ... <contents omitted> ...
    0TPPaik8U9dtFXMGT1DJkjPRPO0Jw5rlU8DKlNA/Kkv52aKJZNwB/cwmvoa/BFji
    PIPa9wY=
    -----END CERTIFICATE-----
  5. Una volta corretti i contenuti e il formato del file, applica la modifica al virtualhost:

    helm upgrade ENV_GROUP_NAME apigee-virtualhost/ \
      --namespace apigee \
      --set envgroup=ENV_GROUP_NAME \
      -f overrides.yaml

Raccogliere dati diagnostici

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

  1. L'ID del progetto Google Cloud.
  2. Il nome dell'organizzazione Apigee ibrida.
  3. Il campo Spec.Details di ApigeeIssue.
  4. (Facoltativo) File a cui fa riferimento caCertPath per il virtualhost interessato.