Membuat CA subordinat dari CA eksternal

Halaman ini menjelaskan cara membuat certificate authority (CA) subordinat yang terhubung ke root CA eksternal.

Jika Anda memiliki hierarki infrastruktur kunci publik (PKI) yang sudah ada yang berisi CA root dan CA subordinat, Anda dapat mempertahankan CA root yang sama dan membuat CA subordinat di CA Service yang terhubung ke CA root eksternal Anda. Kunci dan operasi CA root eksternal tetap berada di luar Google Cloud. Anda hanya dapat menggunakan CA root eksternal untuk menerbitkan sertifikat CA subordinat ke Google Cloud. CA subordinat langsung dipercaya oleh workload apa pun yang memercayai CA root eksternal. Kemudian, Anda dapat menggunakan CA subordinat untuk menerbitkan sertifikat tanpa perlu menghubungi kembali CA root eksternal saat runtime.

Sebelum memulai

  • Pastikan Anda memiliki peran IAM CA Service Operation Manager (roles/privateca.caManager) atau CA Service Admin (roles/privateca.admin). Untuk mengetahui informasinya, lihat Mengonfigurasi kebijakan IAM.
  • Identifikasi CA root eksternal.
  • Tentukan nama, subjek, periode validitas, dan ukuran kunci untuk CA bawahan. Untuk mengetahui informasi selengkapnya, lihat Menentukan Setelan CA.

Membuat CA subordinat dari CA eksternal

Pembuatan CA subordinat dari CA eksternal melibatkan langkah-langkah berikut:

  1. Buat Permintaan Penandatanganan Sertifikat (CSR) CA bawahan: Langkah pertama adalah membuat CSR untuk CA bawahan, lalu mendownload CSR.

  2. Mendapatkan sertifikat CA bawahan yang ditandatangani oleh CA root eksternal: Langkah kedua adalah mengirimkan CSR ke CA root eksternal untuk ditandatangani. Pastikan Anda mengikuti petunjuk khusus CA root eksternal untuk mengirimkan CSR dan mendapatkan sertifikat yang ditandatangani.

  3. Impor sertifikat CA subordinat yang ditandatangani ke CA Service: Langkah terakhir adalah mengupload rantai sertifikat PEM yang ditandatangani menggunakan Google Cloud CLI atau konsol Google Cloud .

Bagian berikut menunjukkan cara membuat CA bawahan dari CA root eksternal.

Membuat CSR

Konsol

  1. Di konsol Google Cloud , buka halaman Certificate Authority Service.

    Buka Certificate Authority Service

  2. Klik tab Pengelola CA.

  3. Klik Buat CA.

Pilih jenis CA:

  1. Klik Subordinate CA.
  2. Di kolom Valid untuk, masukkan durasi yang Anda inginkan agar sertifikat yang diterbitkan oleh CA bawahan berlaku.
  3. Klik CA Root bersifat eksternal.
  4. Pilih salah satu opsi yang tersedia untuk Tingkat CA. Untuk mengetahui informasi selengkapnya, lihat Memilih tingkat operasi.
  5. Di bagian Regionalisasi, pilih lokasi CA dari daftar.
  6. Klik Berikutnya.
Mengonfigurasi nama subjek CA
  1. Opsional: Di kolom Organisasi (O), masukkan nama perusahaan Anda.
  2. Opsional: Di kolom Unit organisasi (OU), masukkan subdivisi atau unit bisnis perusahaan.
  3. Opsional: Di kolom Nama negara (C), masukkan kode negara dua huruf.
  4. Opsional: Di kolom Nama negara bagian atau provinsi, masukkan nama negara bagian Anda.
  5. Opsional: Di kolom Nama lokalitas, masukkan nama kota Anda.
  6. Di kolom Nama umum CA (CN), masukkan nama CA.
  7. Klik Lanjutkan.
Mengonfigurasi ukuran kunci dan algoritma CA
  1. Pilih algoritma utama yang paling sesuai dengan kebutuhan Anda. Untuk mengetahui detail selengkapnya tentang opsi kunci penandatanganan, lihat Mengonfigurasi kunci penandatanganan CA.
  2. Untuk menggunakan kunci penandatanganan yang dikelola pelanggan, pilih Kunci yang dikelola pelanggan dan berikan versi kunci kripto Cloud Key Management Service.
  3. Klik Lanjutkan.
Mengonfigurasi artefak CA
  1. Pilih apakah Anda ingin menggunakan bucket Cloud Storage yang dikelola Google atau yang dikelola pelanggan.
    1. Untuk bucket Cloud Storage yang dikelola Google, Layanan CA membuat bucket yang dikelola Google di lokasi yang sama dengan CA.
    2. Untuk bucket Cloud Storage yang dikelola pelanggan, klik Jelajahi, lalu pilih salah satu bucket Cloud Storage yang ada.
  2. Klik Lanjutkan.
Menambahkan label

Langkah-langkah berikut bersifat opsional.

Jika Anda ingin menambahkan label ke CA, lakukan hal berikut:

  1. Klik Tambahkan item.
  2. Di kolom Key 1, masukkan kunci label.
  3. Di kolom Value 1, masukkan nilai label.
  4. Jika Anda ingin menambahkan label lain, klik Tambahkan item. Kemudian, tambahkan kunci dan nilai label seperti yang disebutkan di langkah 2 dan 3.
  5. Klik Lanjutkan.
Tinjau setelan

Tinjau semua setelan dengan cermat, lalu klik Selesai untuk membuat CA.

Download CSR

  1. Di halaman Certificate authority, pilih CA yang ingin Anda aktifkan.
  2. Klik Aktifkan.
  3. Pada dialog yang terbuka, klik Download CSR.

    Download CSR CA.

gcloud

  1. Untuk membuat kumpulan CA bagi CA subordinat, jalankan perintah berikut. Untuk mengetahui informasi selengkapnya, lihat Membuat kumpulan CA.

    gcloud privateca pools create SUBORDINATE_POOL_ID --location=LOCATION
    

    Ganti kode berikut:

    • SUBORDINATE_POOL_ID: nama pool CA
    • LOCATION: lokasi kumpulan CA
  2. Untuk membuat CA bawahan di kumpulan CA yang dibuat, jalankan perintah gcloud berikut. Perintah gcloud juga membuat CSR dan menyimpannya ke file FILE_NAME.

      gcloud privateca subordinates create SUBORDINATE_CA_ID \
          --pool=SUBORDINATE_POOL_ID \
          --location=LOCATION \
          --create-csr --csr-output-file=FILE_NAME \
          --key-algorithm="ec-p256-sha256" \
          --subject="CN=Example Server TLS CA, O=Example LLC"
    

    Ganti kode berikut:

    • SUBORDINATE_CA_ID: ID unik CA bawahan
    • SUBORDINATE_POOL_ID: nama pool CA
    • LOCATION: lokasi kumpulan CA
    • FILE_NAME: nama file tempat CSR berenkode PEM ditulis

    Flag --key-algorithm menentukan algoritma kriptografi yang ingin Anda gunakan untuk membuat kunci Cloud HSM terkelola untuk CA.

    Flag --subject menentukan nama X.501 subjek sertifikat.

    Untuk mengetahui informasi selengkapnya tentang perintah gcloud privateca subordinates create, lihat gcloud privateca subordinates create.

    Untuk membuat CA subordinat menggunakan kunci penandatanganan yang dikelola pelanggan, jalankan perintah berikut:

      gcloud privateca subordinates create SUBORDINATE_CA_ID \
          --pool=SUBORDINATE_POOL_ID \
          --location=LOCATION \
          --create-csr --csr-output-file=FILE_NAME \
          --kms-key-version=KMS_KEY_VERSION \
          --subject="CN=Example Server TLS CA, O=Example LLC"
    

    Ganti kode berikut:

    • SUBORDINATE_CA_ID: ID unik CA bawahan
    • SUBORDINATE_POOL_ID: nama pool CA
    • LOCATION: lokasi kumpulan CA
    • FILE_NAME: nama file tempat CSR berenkode PEM ditulis
    • KMS_KEY_VERSION: ID resource lengkap dari versi kunci kriptografis Cloud KMS yang dikelola pelanggan untuk digunakan sebagai kunci penandatanganan

    Untuk mengetahui detail selengkapnya tentang opsi kunci penandatanganan dan menyiapkan kunci penandatanganan yang dikelola pelanggan, lihat Mengonfigurasi kunci penandatanganan CA.

Pernyataan berikut ditampilkan saat CSR dibuat:

Created Certificate Authority [projects/my-project-pki/locations/us-west1/caPools/SUBORDINATE_POOL_ID/certificateAuthorities/SUBORDINATE_CA_ID] and saved CSR to FILE_NAME.

Untuk melihat daftar lengkap setelan yang tersedia, jalankan perintah berikut:

gcloud privateca subordinates create --help

Jika CSR hilang, Anda dapat mendownloadnya lagi menggunakan perintah berikut:

gcloud privateca subordinates get-csr SUBORDINATE_CA_ID \
    --pool=SUBORDINATE_POOL_ID \
    --location=LOCATION

Terraform

  1. Untuk membuat kumpulan CA dan CA subordinat dalam kumpulan CA tersebut, gunakan file konfigurasi berikut:

    resource "google_privateca_ca_pool" "default" {
      name     = "test-ca-pool"
      location = "us-central1"
      tier     = "ENTERPRISE"
    }
    
    resource "google_privateca_certificate_authority" "sub-ca" {
      pool = google_privateca_ca_pool.default.name
      certificate_authority_id = "my-certificate-authority-sub"
      location = "us-central1"
      config {
        subject_config {
          subject {
            organization = "HashiCorp"
            common_name = "my-subordinate-authority"
          }
          subject_alt_name {
            dns_names = ["hashicorp.com"]
          }
        }
        x509_config {
          ca_options {
            is_ca = true
            # Force the sub CA to only issue leaf certs
            max_issuer_path_length = 0
          }
          key_usage {
            base_key_usage {
              cert_sign = true
              crl_sign = true
            }
            extended_key_usage {
            }
         }
       }
      }
      lifetime = "86400s"
      key_spec {
        algorithm = "RSA_PKCS1_4096_SHA256"
      }
      type = "SUBORDINATE"
    }
    
  2. Untuk mengambil CSR, tambahkan konfigurasi berikut.

    data "google_privateca_certificate_authority" "sub-ca-csr" {
      location = "us-central1"
      pool = google_privateca_ca_pool.default.name
      certificate_authority_id = google_privateca_certificate_authority.sub-ca.certificate_authority_id
    }
    
    output "csr" {
      value = data.google_privateca_certificate_authority.sub-ca-csr.pem_csr
    }
    
  3. Jalankan terraform apply.

Menandatangani CSR

Teruskan file CSR yang dibuat kepada anggota organisasi Anda yang bertanggung jawab atas penerbitan sertifikat, dan minta mereka untuk menandatanganinya. Langkah-langkah spesifiknya bergantung pada penyiapan organisasi Anda.

Anda dapat bereksperimen dengan CA root sederhana menggunakan perintah openssl berikut:

Shell

Konfigurasi setelan untuk CA root baru.

cat > root.conf <<- EOM
[ req ]
distinguished_name = req_distinguished_name
x509_extensions    = v3_ca
prompt             = no
[ req_distinguished_name ]
commonName = Sample Root
[ v3_ca ]
subjectKeyIdentifier=hash
basicConstraints=critical, CA:true
EOM

Buat CA root baru.

openssl req -x509 -new -nodes -config root.conf -keyout rootCA.key \
  -days 3000 -out rootCA.crt -batch

Konfigurasi ekstensi yang harus ditambahkan ke sertifikat CA bawahan baru.

cat > extensions.conf <<- EOM
basicConstraints=critical,CA:TRUE,pathlen:0
keyUsage=critical,keyCertSign,cRLSign
extendedKeyUsage=critical,serverAuth
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid
EOM

Tandatangani CSR CA subordinat dengan root ini.

openssl x509 -req -in FILE_NAME -CA rootCA.crt -CAkey rootCA.key \
  -CAcreateserial -out subordinate.crt -days 1095 -sha256 -extfile extensions.conf

Gabungkan seluruh rantai sertifikat ke dalam satu file.

cat subordinate.crt > chain.crt
cat rootCA.crt >> chain.crt

Upload sertifikat yang ditandatangani

Untuk mengaktifkan CA subordinat menggunakan sertifikat bertanda tangan, lakukan hal berikut:

Konsol

  1. Buka halaman Certificate Authority Service di konsolGoogle Cloud .

    Buka Certificate Authority Service

  2. Klik tab Pengelola CA.

  3. Di bagian Certificate authorities, pilih CA subordinat yang Anda buat.

  4. Klik Aktifkan.

  5. Dalam dialog yang terbuka, klik Download CSR untuk mendownload file CSR berenkode PEM yang dapat ditandatangani oleh CA penerbit.

  6. Klik Berikutnya.

  7. Di kolom Upload Certificate Chain, klik Browse.

  8. Upload file sertifikat yang ditandatangani dengan ekstensi .crt.

  9. Klik Activate.

gcloud

gcloud privateca subordinates activate SUBORDINATE_CA_ID \
    --pool=SUBORDINATE_POOL_ID \
    --location=LOCATION \
    --pem-chain ./chain.crt

Ganti kode berikut:

  • SUBORDINATE_CA_ID: ID unik CA subordinat yang ingin Anda aktifkan
  • SUBORDINATE_POOL_ID: nama kumpulan CA yang berisi CA subordinat
  • LOCATION: lokasi pool CA. Untuk mengetahui daftar lengkap lokasi, lihat Lokasi.

Flag --pem-chain wajib diisi. Flag ini menentukan file yang berisi daftar sertifikat berenkode PEM. Daftar sertifikat dimulai dengan sertifikat CA saat ini dan diakhiri dengan sertifikat CA root.

Untuk mengetahui informasi selengkapnya tentang perintah gcloud privateca subordinates activate, lihat gcloud privateca subordinates activate.

Pernyataan berikut ditampilkan saat sertifikat yang ditandatangani diupload:

Activated certificate authority [SUBORDINATE_CA_ID].

Terraform

  1. Simpan sertifikat CA yang ditandatangani secara lokal sebagai subordinate.crt.
  2. Simpan sertifikat CA penanda tangan secara lokal sebagai rootCA.crt.
  3. Hapus konfigurasi untuk mengambil CSR yang disebutkan pada langkah pertama karena mencoba mengambil CSR yang tidak diizinkan setelah aktivasi CA.
  4. Perbarui konfigurasi CA subordinat dengan kolom berikut dan jalankan terraform apply.

    pem_ca_certificate     = file("subordinate.crt")
    subordinate_config {
      pem_issuer_chain {
          pem_certificates = [file("rootCA.crt")]
      }
    }
    

Jika rantai penerbit mencakup lebih dari satu CA, tentukan nilai sebagai [file("intermediateCA.cert"), file("rootCA.crt")].

Langkah berikutnya