Sertifikat CA mTLS masuk tidak valid

Anda sedang melihat dokumentasi Apigee dan Apigee hybrid.
Tidak ada padanan Dokumentasi Apigee Edge untuk topik ini.

Gejala

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

Pesan error

Setelah menjalankan kubectl -n apigee get apigeeissues, akan muncul pesan error seperti berikut 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 masuk yang dikonfigurasi tidak dienkode ke PEM.
Format sertifikat CA mTLS masuk salah Format sertifikat CA mTLS masuk yang dikonfigurasi salah.

Penyebab: Sertifikat CA mTLS masuk tidak dienkode dengan PEM

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

Diagnosis

Jalankan perintah berikut:

kubectl -n apigee describe apigeeissue ISSUE_NAME

Dengan ISSUE_NAME adalah nama masalahnya. 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

Isi Spec.Details menjelaskan nama ApigeeRouteConfig yang mengacu pada rahasia Kubernetes yang berisi mTLS masuk Sertifikat CA yang tidak dienkode PEM.

Resolusi

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

    kubectl -n apigee describe apigeeissue ISSUE_NAME

    Dengan ISSUE_NAME adalah nama masalahnya. Misalnya, ca-cert-invalid-my-org-my-virtualhost.

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

  2. Tentukan nama virtualhost dari ApigeeRouteConfig.

    Format nama ApigeeRouteConfig: <Apigee organization>-<virtualhost name>.

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

  3. Temukan virtualhost yang sesuai di overrides.yaml.

    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 ke 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

Sertifikat CA mTLS masuk yang disimpan dalam rahasia Kubernetes yang direferensikan oleh Format ApigeeRouteConfig salah.

Diagnosis

Jalankan perintah berikut:

kubectl -n apigee describe apigeeissue ISSUE_NAME

Dengan ISSUE_NAME adalah nama masalahnya. 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

Isi Spec.Details menjelaskan nama ApigeeRouteConfig yang mengacu pada rahasia Kubernetes yang berisi mTLS masuk Sertifikat CA yang salah format dan gagal diurai.

Resolusi

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

    kubectl -n apigee describe apigeeissue ISSUE_NAME

    Dengan ISSUE_NAME adalah nama masalahnya. Misalnya, ca-cert-invalid-my-org-my-virtualhost.

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

  2. Tentukan nama virtualhost dari ApigeeRouteConfig.

    Format nama ApigeeRouteConfig: <Apigee organization>-<virtualhost name>.

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

  3. Temukan virtualhost yang sesuai di overrides.yaml.

    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 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 bahkan setelah mengikuti instruksi di atas, kumpulkan informasi diagnostik berikut, lalu hubungi Google Cloud Customer Care:

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