Membuat root certificate authority

Halaman ini menjelaskan langkah-langkah untuk membuat otoritas sertifikat (CA) root di Google Distributed Cloud (GDC) yang terisolasi.

CA root, yang berada di puncak hierarki infrastruktur kunci publik (PKI), menetapkan trust anchor untuk PKI. Untuk menggunakan sertifikat dalam PKI, perangkat, software, dan komponen harus memercayai CA root. Konfigurasi ini memastikan kepercayaan pada semua sertifikat yang dikeluarkan oleh CA root, sehingga memungkinkan kepercayaan pada PKI itu sendiri.

Sebelum memulai

Untuk mendapatkan izin yang Anda perlukan guna membuat otoritas sertifikat root, minta Admin IAM Organisasi Anda untuk memberi Anda peran Admin Layanan Otoritas Sertifikat (certificate-authority-service-admin). Untuk mengetahui informasi selengkapnya tentang peran, lihat Definisi peran.

Dapatkan file kubeconfig

Untuk menjalankan perintah terhadap server Management API, pastikan Anda memiliki resource berikut:

  1. Login dan buat file kubeconfig untuk server Management API jika Anda belum memilikinya.

  2. Gunakan jalur ke file kubeconfig server Management API untuk menggantikan MANAGEMENT_API_SERVER_KUBECONFIG dalam petunjuk ini.

Membuat root certificate authority

Untuk membuat CA root, terapkan resource kustom ke instance air-gapped Distributed Cloud Anda.

  1. Buat resource CertificateAuthority dan simpan sebagai file YAML bernama root-ca.yaml:

    apiVersion: pki.security.gdc.goog/v1
    kind: CertificateAuthority
    metadata:
      name: ROOT_CA_NAME
      namespace: USER_PROJECT_NAMESPACE
    spec:
      caProfile:
        commonName: COMMON_NAME
        duration: DURATION
        renewBefore: RENEW_BEFORE
        organizations:
        - ORGANIZATION
        organizationalUnits:
        - ORGANIZATIONAL_UNITS
        countries:
        - COUNTRIES
        localities:
        - LOCALTIES
        provinces:
        - PROVINCES
        streetAddresses:
        - STREET_ADDRESSES
        postalCodes:
        - POSTAL_CODES
      caCertificate:
        selfSignedCA: {}
      certificateProfile:
        keyUsage:
          - digitalSignature
          - keyCertSign
          - crlSign
        extendedKeyUsage:
          - EXTENDED_KEY_USAGE
      secretConfig:
        secretName: SECRET_NAME
        privateKeyConfig:
          algorithm: KEY_ALGORITHM
          size: KEY_SIZE
      acme:
        enabled: ACME_ENABLED
    

    Ganti variabel berikut:

    Variabel Deskripsi
    ROOT_CA_NAME Nama CA root.
    USER_PROJECT_NAMESPACE Nama namespace tempat project pengguna berada.
    COMMON_NAME Nama umum sertifikat CA.
    DURATION Masa berlaku yang diminta untuk sertifikat CA.
    SECRET_NAME Nama Secret Kubernetes yang menyimpan kunci pribadi dan sertifikat CA yang ditandatangani.

    Variabel berikut adalah nilai opsional:

    Variabel Deskripsi
    RENEW_BEFORE Waktu rotasi sebelum masa berlaku sertifikat CA berakhir.
    ORGANIZATION Organisasi yang akan digunakan pada sertifikat.
    ORGANIZATIONAL_UNITS Unit organisasi yang akan digunakan pada sertifikat.
    COUNTRIES Negara yang akan digunakan pada sertifikat.
    LOCALITIES Kota yang akan digunakan pada sertifikat.
    PROVINCES Negara Bagian atau Provinsi yang akan digunakan pada sertifikat.
    STREET_ADDRESSES Alamat jalan yang akan digunakan pada sertifikat.
    POSTAL_CODES Kode pos yang akan digunakan pada sertifikat.
    EXTENDED_KEY_USAGE Penggunaan kunci yang diperpanjang untuk sertifikat. Jika disediakan, nilai yang diizinkan adalah serverAuth dan clientAuth.
    KEY_ALGORITHYM Algoritma kunci pribadi yang digunakan untuk sertifikat ini. Nilai yang diizinkan adalah RSA, Ed25519, atau ECDSA. Jika ukuran tidak diberikan, nilai defaultnya adalah 256 untuk ECDSA dan 2048 untuk RSA. Ukuran tombol diabaikan untuk Ed25519.
    KEY_SIZE Ukuran, dalam bit, kunci pribadi untuk sertifikat ini bergantung pada algoritma. RSA memungkinkan 2048, 3072, 4096, atau 8192 (default 2048). ECDSA memungkinkan 256, 384, atau 521 (default 256). Ed25519 mengabaikan ukuran.
    ACME_ENABLED Jika disetel ke true, CA akan berjalan dalam mode ACME dan menghasilkan URL server ACME. Kemudian, Anda dapat menggunakan klien dan protokol ACME untuk mengelola sertifikat.

  2. Terapkan resource kustom ke instance Distributed Cloud Anda:

    kubectl apply -f root-ca.yaml –kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG
    

    Ganti MANAGEMENT_API_SERVER_KUBECONFIG dengan jalur ke file kubeconfig server Management API.

  3. Verifikasi kesiapan CA root. Biasanya perlu waktu sekitar 40 menit agar CA siap:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificateauthority.pki.security.gdc.goog/ROOT_CA_NAME -ojson | jq -r ' 
    .status.conditions[] | select( .type as $id | "Ready" | index($id))
    

    Outputnya terlihat mirip dengan yang berikut ini:

    {
      "lastTransitionTime": "2025-01-24T17:09:19Z",
      "message": "CA reconciled",
      "observedGeneration": 2,
      "reason": "Ready",
      "status": "True",
      "type": "Ready"
    }
    

Mencantumkan CA

Untuk mencantumkan semua resource Certificate Authority Service di instance air-gapped Distributed Cloud Anda, lakukan hal berikut:

Gunakan parameter certificateauthorities untuk mencantumkan semua resource CertificateAuthority:

   kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificateauthorities

Outputnya terlihat mirip dengan yang berikut ini:

   NAMESPACE    NAME              READY   REASON   AGE
   foo          root-ca           True    Ready    7h24m
   foo          sub-ca            True    Ready    7h24m