Sertifikat CA mTLS Ingress 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 di 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 PEM Sertifikat CA mTLS masuk yang dikonfigurasi tidak dienkode PEM.
Sertifikat CA mTLS masuk salah format Sertifikat CA mTLS ingress yang dikonfigurasi salah formatnya.

Penyebab: Sertifikat CA mTLS masuk tidak dienkode PEM

Sertifikat CA mTLS ingress yang disimpan dalam secret Kubernetes yang dirujuk oleh ApigeeRouteConfig tidak memiliki blok teks encoding PEM (atau rusak).

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 secret Kubernetes yang berisi sertifikat CA mTLS ingress yang tidak dienkode PEM.

Resolusi

  1. Gunakan kubectl describe untuk menampilkan nama ApigeeRouteConfig yang memiliki sertifikat CA mTLS ingress 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 mereferensikan my-org-my-virtualhost rahasia.

  2. Tentukan nama virtualhost dari ApigeeRouteConfig.

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

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

  3. Temukan virtualhost 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 diberikan 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 ke virtualhost:

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

Penyebab: Sertifikat CA mTLS Ingress salah format

Sertifikat CA mTLS ingress yang disimpan di secret Kubernetes yang direferensikan oleh ApigeeRouteConfig salah format.

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 merujuk ke secret Kubernetes yang berisi sertifikat CA mTLS ingress yang salah format dan gagal diuraikan.

Resolusi

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

    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 mereferensikan my-org-my-virtualhost rahasia.

  2. Tentukan nama virtualhost dari ApigeeRouteConfig.

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

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

  3. Temukan virtualhost 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 diberikan 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 ke virtualhost:

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

Harus mengumpulkan informasi diagnostik

Jika masalah berlanjut meskipun setelah mengikuti petunjuk di atas, kumpulkan informasi diagnostik berikut, lalu hubungi Layanan Pelanggan Google Cloud:

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