Menerbitkan ulang sertifikat web PKI secara manual

Halaman ini memberikan petunjuk untuk memicu penerbitan ulang sertifikat secara manual untuk endpoint web air-gapped Google Distributed Cloud (GDC) Anda.

Sebelum memulai

Untuk mendapatkan izin yang Anda perlukan guna mengakses sertifikat di namespace, minta Admin IAM Organisasi Anda untuk memberi Anda peran Admin Sertifikat TLS Web (web-tls-cert-admin).

Pertimbangkan persyaratan akun berikut saat melakukan penerbitan ulang sertifikat:

  • Gunakan akun Operator Infrastruktur (IO) untuk mengakses sertifikat di namespace sistem. Minta IO Anda untuk melakukan tugas ini.
  • Gunakan akun Administrator Platform untuk mengakses sertifikat di namespace lain.

Menerbitkan ulang sertifikat

Anda dapat menerbitkan ulang sertifikat secara manual dengan pembaruan anotasi. Jika penerbit sertifikat default berubah, Distributed Cloud tidak akan otomatis menerbitkan ulang sertifikat yang ditandatangani oleh penerbit sertifikat default sebelumnya, kecuali jika masa berlaku sertifikat akan segera berakhir.

Untuk memicu penerbitan ulang sertifikat secara manual, gunakan kubectl CLI untuk melakukan langkah-langkah berikut:

  1. Tetapkan anotasi manual-reissuance ke requested untuk target Certificate. Contoh berikut memperbarui sertifikat default-wildcard-cert di namespace istio-system yang menggunakan penerbit sertifikat default saat ini:

    kubectl annotate --overwrite certificate.pki.security.gdc.goog
    default-wildcard-cert -n istio-system
    pki.security.gdc.goog/manual-reissuance='requested'
    
  2. Anda mungkin melihat nilai anotasi in-progress sebagai status transisi saat sertifikat diterbitkan ulang. Tunggu hingga nilai anotasi manual-reissuance menampilkan finished:

    kubectl -n istio-system get
    certificate.pki.security.gdc.goog/default-wildcard-cert -ojson | jq -r '
    .metadata.annotations."pki.security.gdc.goog/manual-reissuance"'
    

    Outputnya terlihat mirip dengan yang berikut ini:

    finished
    
  3. Verifikasi penerbit sertifikat; penerbit harus cocok dengan penerbit yang disebutkan dalam spesifikasi sertifikat atau, jika tidak ditentukan, penerbit harus cocok dengan penerbit default saat ini:

    kubectl -n istio-system get certificate.pki.security.gdc.goog/default-wildcard-cert -ojson | jq -r '
    .status.issuedBy'
    

    Outputnya terlihat mirip dengan yang berikut ini:

    {
      "name": "byo-cert-issuer",
      "namespace": "pki-system"
    }
    

Rotasi manual sertifikat Anda sendiri

Saat memicu dan menyelesaikan rotasi sertifikat bawa sendiri (BYO cert) secara manual, Anda harus menandatangani Permintaan Penandatanganan Sertifikat (CSR) yang baru dibuat untuk sertifikat BYO yang sebelumnya ditandatangani. Untuk mengetahui informasi selengkapnya, lihat Menandatangani sertifikat BYO.

Selama rotasi, Distributed Cloud membuat pasangan kunci pribadi dan publik baru. Hal ini membuat sertifikat bertanda tangan yang diupload sebelumnya tidak kompatibel dengan CSR baru. Jika spesifikasi sertifikat tidak berubah sejak upload awal, sertifikat yang diupload sebelumnya tetap digunakan hingga masa berlakunya berakhir. Jika spesifikasi berubah, salah satu peristiwa berikut akan terjadi:

  • Distributed Cloud menggunakan sertifikat yang cocok dan sudah ada.
  • Certificate Authority (CA) pengganti menerbitkan sertifikat baru.

Contoh rotasi manual sertifikat BYO

Pada contoh berikut, Anda melihat sertifikat BYO yang sebelumnya ditandatangani dipicu untuk rotasi manual:

  • byoCertStatus menunjukkan nilai type sertifikat adalah Ready,
  • Nilai reason adalah Issued dengan nilai lastTransitionTime yang lebih awal daripada nilai sebelumnya:

    {
     "byoCertStatus": {
       "csrStatus": {
         "conditions": [
           {
             "lastTransitionTime": "2024-05-03T22:38:43Z",
             "message": "",
             "observedGeneration": 2,
             "reason": "WaitingForSigning",
             "status": "False",
             "type": "Ready"
           }
         ],
         "csr": "LS0tLS1CRUdJTiBDRVJ..."
       },
       "signedCertStatus": {
         "conditions": [
           {
             "lastTransitionTime": "2024-05-03T22:38:43Z",
             "message": "RawSubjectPublickKeyInfo does not match with the CSR",
             "observedGeneration": 2,
             "reason": "Rejected",
             "status": "False",
             "type": "Ready"
           }
         ]
       }
     },
     ```
    

Pada contoh berikut, Anda akan melihat output untuk sertifikat BYO yang sebelumnya ditandatangani dan dipicu untuk rotasi manual:

  • Di signedCertStatus, kolom reason menampilkan Rejected karena sertifikat yang ditandatangani sebelumnya tidak lagi cocok dengan CSR baru setelah rotasi.
  • CSR reason menyatakan WaitingForSigning:

    "conditions": [
      {
        "lastTransitionTime": "2024-05-03T08:42:10Z",
        "message": "Certificate is issued",
        "observedGeneration": 2,
        "reason": "Issued",
        "status": "True",
        "type": "Ready"
      }
    ],
    "errorStatus": {
      "errors": [
        {
          "code": "PLATAUTH2002",
          "message": "Waiting for CSR signing"
        }
      ],
      "lastUpdateTime": "2024-05-03T22:38:43Z"
    },
    "issuedBy": {
      "name": "byo-cert-issuer",
      "namespace": "pki-system"
    }
    }
    

    Mengelola pemberitahuan penandatanganan sertifikat

Peringatan penandatanganan sertifikat untuk penerbitan awal, rotasi, dan masa berlaku harus ditangani oleh IO Anda menggunakan langkah-langkah pemecahan masalah yang didokumentasikan di bagian-bagian runbook PKI berikut:

  • Untuk errorCode subCA: PLATAUTH2001, lihat PLATAUTH-R2001.

  • Untuk errorCode sertifikat BYO: PLATAUTH2002, lihat PLATAUTH-R2002.