Sertifikat CA mTLS masuk tidak valid

Anda sedang melihat dokumentasi Apigee dan Apigee Hybrid.
Tidak ada dokumentasi Apigee Edge yang setara untuk topik ini.

Gejala

ApigeeIssue dengan Reason AIS_INGRESS_MTLS_CA_CERT_INVALID ditampilkan saat melihat resource dalam namespace apigee.

Pesan error

Setelah menjalankan kubectl -n apigee get apigeeissues, error seperti berikut akan ditampilkan:

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

Kemungkinan penyebab

Penyebab Deskripsi
Sertifikat CA mTLS masuk tidak dienkode ke PEM Sertifikat CA mTLS untuk masuk yang dikonfigurasi tidak dienkode dalam PEM.
Format sertifikat CA mTLS masuk salah Format sertifikat CA mTLS pada ingress yang dikonfigurasi salah.

Penyebab: Sertifikat CA mTLS masuk tidak dienkode dalam PEM

Sertifikat CA mTLS masuk yang disimpan di rahasia Kubernetes yang direferensikan oleh ApigeeRouteConfig tidak memiliki blok teks encoding PEM (atau formatnya salah).

Diagnosis

Jalankan perintah berikut:

kubectl -n apigee describe apigeeissue ISSUE_NAME

Dengan ISSUE_NAME adalah nama masalah. Contoh, ca-cert-invalid-my-org-my-virtualhost.

Output-nya akan terlihat seperti berikut:

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

Konten Spec.Details menjelaskan nama ApigeeRouteConfig yang merujuk ke rahasia Kubernetes yang berisi sertifikat CA mTLS ingress yang tidak dienkode PEM.

Resolusi

  1. Gunakan kubectl describe untuk menampilkan nama ApigeeRouteConfig yang memiliki sertifikat CA ingress mTLS yang tidak dienkode PEM:

    kubectl -n apigee describe apigeeissue ISSUE_NAME

    Dengan ISSUE_NAME adalah nama masalah. Misalnya: ca-cert-invalid-my-org-my-virtualhost.

    Dalam contoh ini, ApigeeRouteConfig my-org-my-virtualhost merujuk ke my-org-my-virtualhost rahasia.

  2. Tentukan nama virtualhost dari ApigeeRouteConfig.

    Nama ApigeeRouteConfig dalam format: <Apigee organization>-<virtualhost name>.

    Dalam contoh ini, my-org adalah organisasi Apigee dan nama virtualhost adalah my-virtualhost.

  3. Temukan host virtual yang sesuai di overrides.yaml Anda.

    virtualhosts:
    ...
    - name: my-virtualhost
      selector:
        app: apigee-ingressgateway
      caCertPath: ./certs/ca.pem
      sslCertPath: ./certs/vhost.pem
      sslKeyPath: ./certs/vhost.key
    ...
  4. Validasi konten file yang disediakan melalui jalur yang dideklarasikan di caCertPath. Pastikan konten berisi blok sertifikat awal dan akhir yang diperlukan. Contoh:

    -----BEGIN CERTIFICATE-----
    MIIDYTCCAkmgAwIBAgIUSXeU0pQYRFzYlqZpKhNNJdBLFBIwDQYJKoZIhvcNAQEL
    ... <contents omitted> ...
    eWJyaWQuZTJlLmFwaWdlZWtzLm5ldDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
    MMM=
    -----END CERTIFICATE-----
  5. Setelah konten dan format file diperbaiki, terapkan perubahan pada virtualhost:

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

Penyebab: Format sertifikat CA mTLS masuk salah

Format sertifikat CA mTLS untuk masuk yang disimpan di rahasia Kubernetes yang dirujuk oleh ApigeeRouteConfig salah.

Diagnosis

Jalankan perintah berikut:

kubectl -n apigee describe apigeeissue ISSUE_NAME

Dengan ISSUE_NAME adalah nama masalah. Contoh, ca-cert-invalid-my-org-my-virtualhost.

Output-nya akan terlihat seperti berikut:

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

Konten Spec.Details menjelaskan nama ApigeeRouteConfig yang mengacu pada rahasia Kubernetes yang berisi sertifikat CA mTLS masuk yang formatnya salah dan gagal diurai.

Resolusi

  1. Gunakan kubectl describe untuk menampilkan nama ApigeeRouteConfig yang memiliki sertifikat CA mTLS ingress dengan format yang salah:

    kubectl -n apigee describe apigeeissue ISSUE_NAME

    Dengan ISSUE_NAME adalah nama masalah. Misalnya: ca-cert-invalid-my-org-my-virtualhost.

    Dalam contoh ini, ApigeeRouteConfig my-org-my-virtualhost merujuk ke my-org-my-virtualhost rahasia.

  2. Tentukan nama virtualhost dari ApigeeRouteConfig.

    Nama ApigeeRouteConfig dalam format: <Apigee organization>-<virtualhost name>.

    Dalam contoh ini, my-org adalah organisasi Apigee dan nama virtualhost adalah my-virtualhost.

  3. Temukan host virtual yang sesuai di overrides.yaml Anda.

    virtualhosts:
    ...
    - name: my-virtualhost
      selector:
        app: apigee-ingressgateway
      caCertPath: ./certs/ca.pem
      sslCertPath: ./certs/vhost.pem
      sslKeyPath: ./certs/vhost.key
    ...
  4. Validasi konten file yang disediakan melalui jalur yang dideklarasikan di caCertPath. Pastikan konten berisi seluruh sertifikat. Contoh:

    -----BEGIN CERTIFICATE-----
    MIIDYTCCAkmgAwIBAgIUSXeU0pQYRFzYlqZpKhNNJdBLFBIwDQYJKoZIhvcNAQEL
    BQAwQDE+MDwGA1UEAww1bWF4bWlsbGlvbi1oeWJyaWQtc3RhZ2luZy1kZXYuaHli
    ... <contents omitted> ...
    0TPPaik8U9dtFXMGT1DJkjPRPO0Jw5rlU8DKlNA/Kkv52aKJZNwB/cwmvoa/BFji
    PIPa9wY=
    -----END CERTIFICATE-----
  5. Setelah konten dan format file diperbaiki, terapkan perubahan pada virtualhost:

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

Harus mengumpulkan informasi diagnostik

Jika masalah terus berlanjut bahkan setelah mengikuti petunjuk di atas, kumpulkan informasi diagnostik berikut, lalu hubungi Dukungan Apigee:

  1. ID Project Google Cloud.
  2. Nama organisasi campuran Apigee.
  3. Kolom Spec.Details dari ApigeeIssue.
  4. (opsional) File yang dirujuk oleh caCertPath untuk virtualhost yang terpengaruh.