Ketidakcocokan sertifikat masuk

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

Gejala

ApigeeIssue dengan Reason AIS_INGRESS_CERT_MISMATCH ditampilkan saat melihat resource di namespace apigee.

Pesan error

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

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

Penyebab: Ketidakcocokan sertifikat Ingress

Kunci pribadi dan sertifikat yang disimpan dalam rahasia Kubernetes yang dirujuk oleh ApigeeRouteConfig tidak cocok.

Diagnosis

Jalankan perintah berikut:

kubectl -n apigee describe apigeeissue ISSUE_NAME

Dengan ISSUE_NAME adalah nama masalah. Contoh, ingress-cert-mismatch-my-org-my-virtualhost.

Sesuatu yang mirip dengan berikut akan ditampilkan:

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

Isi Spec.Details menjelaskan nama ApigeeRouteConfig yang merujuk ke secret Kubernetes yang berisi sertifikat dan kunci pribadi ingress.

Resolusi

  1. Gunakan kubectl describe untuk menampilkan nama ApigeeRouteConfig yang memiliki sertifikat dan kunci ingress yang tidak cocok:

    kubectl -n apigee describe apigeeissue ISSUE_NAME

    Dengan ISSUE_NAME adalah nama masalah. Misalnya, ingress-cert-mismatch-my-org-my-virtualhost.

    Dalam contoh ini, ApigeeRouteConfig my-org-my-virtualhost mereferensikan secret my-org-my-virtualhost.

  2. Tentukan nama virtualhost dari ApigeeRouteConfig.

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

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

  3. Temukan virtualhost yang sesuai dalam file overrides.yaml Anda:

    virtualhosts:
    ...
    - name: my-virtualhost
      selector:
        app: apigee-ingressgateway
      sslCertPath: ./certs/vhost.pem
      sslKeyPath: ./certs/vhost.key
    ...
  4. Validasi bahwa file sertifikat dan kunci yang digunakan cocok.

    Dengan menggunakan sslCertPath dan sslKeyPath dari langkah sebelumnya, validasi kecocokan jumlah MD5 menggunakan openssl:

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

    • Dengan SSL_CERT_PATH adalah sslCertPath dari langkah sebelumnya. Misalnya, ./certs/vhost.pem.
    • Dengan SSL_KEY_PATH adalah sslKeyPath dari langkah sebelumnya. Misalnya, ./certs/vhost.key.

    Output dari dua perintah di atas harus sama:

    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. Jika output dari perintah sebelumnya tidak cocok, gunakan salah satu metode berikut untuk memperbaiki masalah:

    • Perbarui sslCertPath dan sslKeyPath virtualhost agar mengarah ke jalur file yang benar.
    • Perbaiki konten file sslCertPath atau sslKeyPath agar berisi pasangan kunci dan sertifikat yang cocok dengan benar.
  6. Terapkan perubahan pada virtualhost menggunakan Helm:

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

    Pastikan untuk menyertakan semua setelan yang ditampilkan, termasuk --atomic agar tindakan di-roll back jika gagal.

Harus mengumpulkan informasi diagnostik

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

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