Membuat CA subordinat dari CA eksternal

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

Jika sudah memiliki hierarki infrastruktur kunci publik (PKI) yang berisi root CA dan CA subordinat, Anda dapat mempertahankan root CA yang sama dan membuat CA subordinat di Layanan CA yang tertaut ke root CA 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 subordinasi langsung dipercaya oleh workload apa pun yang mempercayai root CA eksternal. Kemudian, Anda dapat menggunakan CA subordinat untuk menerbitkan sertifikat tanpa perlu menghubungi kembali root CA eksternal pada waktu proses.

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 root CA eksternal.
  • Tentukan nama, subjek, periode validitas, dan ukuran kunci untuk CA subordinat. Untuk mengetahui informasinya, lihat Menentukan Setelan CA.

Membuat CA subordinat dari CA eksternal

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

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

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

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

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

Membuat CSR

Konsol

  1. Buka menu Security > Certificate Authority Service di Konsol Google Cloud.

    Buka Certificate Authority Service

  2. Klik tab Pengelola CA.

  3. Klik Create CA.

Pilih jenis CA:

  1. Klik Subordinate CA.
  2. Di kolom Valid for, masukkan durasi yang Anda inginkan untuk sertifikat yang diterbitkan oleh sertifikat CA agar valid.
  3. Klik Root CA bersifat eksternal.
  4. Pilih salah satu opsi yang tersedia untuk Tingkat CA. Untuk informasi selengkapnya, lihat Memilih tingkat operasi.
  5. Di bagian Regionalisasi, pilih Lokasi CA dari daftar.
  6. Klik Berikutnya.
Mengonfigurasi nama subjek CA
  1. Di kolom Organization (O), masukkan nama perusahaan Anda.
  2. Opsional: Di kolom Unit organisasi (OU), masukkan subdivisi atau unit bisnis perusahaan.
  3. Opsional: Di kolom Country name, masukkan kode negara yang terdiri atas dua huruf.
  4. Opsional: Di kolom Nama negara bagian atau provinsi, masukkan nama negara bagian Anda.
  5. Opsional: Di kolom Locality name, masukkan nama kota Anda.
  6. Di kolom CA common name (CN), masukkan nama CA.
  7. Di kolom Pool ID, masukkan nama kumpulan CA. Anda tidak dapat mengubah kumpulan CA setelah membuat CA.
  8. Klik Berikutnya.
Mengonfigurasi ukuran kunci dan algoritma CA
  1. Pilih algoritma kunci yang paling sesuai dengan kebutuhan Anda. Untuk mengetahui informasi tentang cara menentukan algoritma kunci yang sesuai, lihat Memilih algoritma kunci.
  2. Klik Berikutnya.
Mengonfigurasi artefak CA

Langkah-langkah berikut bersifat opsional. Jika Anda melewati langkah-langkah ini, setelan default akan diterapkan.

  1. Pilih apakah Anda ingin menggunakan bucket Cloud Storage yang dikelola Google atau dikelola sendiri.
  2. Jika Anda tidak memilih bucket Cloud Storage yang dikelola sendiri, Layanan CA akan membuat bucket yang dikelola Google di lokasi yang sama dengan CA.

  3. Pilih apakah Anda ingin menonaktifkan publikasi daftar pencabutan sertifikat (CRL) dan sertifikat CA ke bucket Cloud Storage.
  4. Publikasi CRL dan sertifikat CA di bucket Cloud Storage diaktifkan secara default. Untuk menonaktifkan setelan ini, klik tombol.

  5. Klik Berikutnya.
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 pada langkah 2 dan 3.
  5. Klik Berikutnya.
Tinjau setelan

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

Download CSR

  1. Di halaman Certificate authority, pilih CA yang ingin diaktifkan.
  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
    

    Ganti SUBORDINATE_POOL_ID dengan nama kumpulan CA.

  2. Untuk membuat CA subordinat 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 \
      --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 subordinasi.
    • SUBORDINATE_POOL_ID: Nama kumpulan CA.
    • FILE_NAME: Nama file tempat CSR yang dienkode PEM ditulis.

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

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

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

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 kehilangan CSR, Anda dapat mendownloadnya lagi menggunakan perintah berikut:

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

Terraform

  1. Untuk membuat kumpulan CA dan CA subordinat di 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 dihasilkan kepada anggota organisasi Anda yang bertanggung jawab untuk menerbitkan sertifikat, dan minta mereka untuk menandatanganinya. Langkah-langkah tertentu bergantung pada penyiapan organisasi Anda.

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

Shell

Konfigurasikan 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

Konfigurasikan ekstensi yang harus ditambahkan ke sertifikat CA turunan baru.

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

Tanda tangani 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 yang ditandatangani, lakukan hal berikut:

Konsol

  1. Buka halaman Certificate Authority Service di konsol Google 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. Pada 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 Aktifkan.

gcloud

gcloud privateca subordinates activate SUBORDINATE_CA_ID \
  --pool=SUBORDINATE_POOL_ID \
  --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.

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

Untuk 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 CSR tersebut 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 menyertakan lebih dari satu CA, tentukan nilainya sebagai [file("intermediateCA.cert"), file("rootCA.crt")].

Langkah selanjutnya