Menyiapkan TLS bersama dengan CA pribadi

Halaman ini memberikan petunjuk untuk membuat certificate authority (CA) pribadi menggunakan Certificate Authority Service dan mengupload sertifikat Anda ke resource TrustConfig Certificate Manager.

Anda juga membuat resource keamanan jaringan yang diperlukan untuk mengonfigurasi TLS bersama untuk Load Balancer Aplikasi.

Sebelum memulai

Izin

Untuk mendapatkan izin yang Anda perlukan guna menyelesaikan panduan ini, minta administrator Anda untuk memberi Anda peran IAM berikut pada project:

  • Untuk membuat resource load balancer seperti TargetHTTPProxy: Admin Load Balancer Compute (roles/compute.loadBalancerAdmin)
  • Untuk menggunakan resource Certificate Manager: Certificate Manager Owner (roles/certificatemanager.owner)
  • Untuk membuat komponen keamanan dan jaringan: Admin Jaringan Compute (roles/compute.networkAdmin) dan Admin Keamanan Compute (roles/compute.securityAdmin)
  • Untuk membuat project (opsional): Project Creator (roles/resourcemanager.projectCreator)

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Membuat CA pribadi

Buat CA pribadi dengan menggunakan Layanan CA, lalu buat root certificate:

  1. Untuk membuat kumpulan CA, gunakan perintah gcloud privateca pools create:

    gcloud privateca pools create CA_POOL \
       --location=us-central1
    

    Ganti CA_POOL dengan ID atau nama kumpulan CA induk.

  2. Untuk membuat CA pribadi di kumpulan CA, gunakan perintah gcloud privateca roots create:

    gcloud privateca roots create CA_ROOT \
       --pool=CA_POOL \
       --subject="CN=my-ca, O=Test LLC" \
       --location=us-central1
    

    Ganti kode berikut:

    • CA_ROOT: ID atau nama CA pribadi
    • CA_POOL: ID atau nama kumpulan CA induk
  3. Untuk menjelaskan CA baru dan membuat file root.cert, gunakan perintah gcloud privateca roots describe:

    gcloud privateca roots describe CA_ROOT \
       --pool=CA_POOL \
       --location=us-central1 \
       --format='value(pemCaCertificates)' > root.cert
    
    export ROOT=$(cat root.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
    

    Ganti kode berikut:

    • CA_ROOT: ID atau nama CA pribadi
    • CA_POOL: ID atau nama kumpulan CA induk

    Untuk informasi selengkapnya, lihat referensi berikut:

Membuat TrustConfig dengan CA pribadi

Buat resource TrustConfig Pengelola Sertifikat yang mewakili IKP Anda menggunakan root certificate yang dibuat menggunakan CA pribadi. Kami berasumsi bahwa resource TrustConfig adalah penyimpanan kepercayaan sederhana dengan satu trust anchor yang mewakili root certificate.

Pada langkah-langkah berikut, ganti TRUST_CONFIG_NAME dengan nama resource TrustConfig.

  • Untuk membuat file trust_config.yaml, gunakan perintah berikut:

    cat << EOF > trust_config.yaml
    name: TRUST_CONFIG_NAME
    trustStores:
    - trustAnchors:
       - pemCertificate: "${ROOT?}"
    EOF
    
  • Untuk membuat resource TrustConfig Pengelola Sertifikat, gunakan perintah gcloud certificate-manager trust-configs import:

    gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME  \
       --source=trust_config.yaml \
       --location=REGION
    

    Ganti kode berikut:

    REGION: gunakan global untuk Load Balancer Aplikasi internal lintas region, Load Balancer Aplikasi eksternal global, atau Load Balancer Aplikasi klasik. Untuk Load Balancer Aplikasi eksternal regional atau Load Balancer Aplikasi internal regional, gunakan region tempat Anda mengonfigurasi load balancer.

Membuat resource keamanan jaringan

Kebijakan TLS server (resource keamanan jaringan ServerTLSPolicy) memungkinkan Anda menentukan mode TLS sisi server dan resource TrustConfig yang akan digunakan saat memvalidasi sertifikat klien. Jika klien menyajikan sertifikat yang tidak valid atau tidak ada sertifikat ke load balancer, clientValidationMode akan menentukan cara penanganan koneksi klien.

  • Jika clientValidationMode disetel ke ALLOW_INVALID_OR_MISSING_CLIENT_CERT, semua permintaan akan diteruskan ke backend meskipun validasi gagal atau sertifikat klien tidak ada.
  • Jika clientValidationMode disetel ke REJECT_INVALID, hanya permintaan yang menyediakan sertifikat klien yang dapat divalidasi terhadap resource TrustConfig yang akan diteruskan ke backend.

Untuk membuat resource ServerTLSPolicy, selesaikan langkah-langkah berikut:

  1. Berdasarkan cara Anda ingin menangani koneksi, pilih salah satu opsi berikut.

    Pada langkah-langkah berikut, ganti SERVER_TLS_POLICY_NAME dengan nama kebijakan TLS server, lalu ganti PROJECT_ID dengan ID project Google Cloud Anda.

    • Opsi 1: clientValidationMode ditetapkan ke ALLOW_INVALID_OR_MISSING_CLIENT_CERT.

      Untuk membuat file server_tls_policy.yaml, gunakan perintah berikut:

      global

      Untuk Load Balancer Aplikasi eksternal dan Load Balancer Aplikasi internal lintas region, gunakan perintah:

      cat << EOF > server_tls_policy.yaml
      name: SERVER_TLS_POLICY_NAME
      mtlsPolicy:
      clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT
      clientValidationTrustConfig: projects/PROJECT_ID/locations/global/trustConfigs/TRUST_CONFIG_NAME
      EOF
      

      regional

      Untuk Load Balancer Aplikasi eksternal regional dan Load Balancer Aplikasi internal regional, gunakan perintah:

      cat << EOF > server_tls_policy.yaml
      name: SERVER_TLS_POLICY_NAME
      mtlsPolicy:
      clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT
      clientValidationTrustConfig: projects/PROJECT_ID/locations/REGION/trustConfigs/TRUST_CONFIG_NAME
      EOF
      
    • Opsi 2: clientValidationMode disetel ke REJECT_INVALID.

      Untuk membuat file server_tls_policy.yaml, gunakan perintah berikut:

      global

      Untuk Load Balancer Aplikasi eksternal dan Load Balancer Aplikasi internal lintas region, gunakan perintah:

      cat << EOF > server_tls_policy.yaml
      name: SERVER_TLS_POLICY_NAME
      mtlsPolicy:
      clientValidationMode: REJECT_INVALID
      clientValidationTrustConfig: projects/PROJECT_ID/locations/global/trustConfigs/TRUST_CONFIG_NAME
      EOF
      

      regional

      Untuk Load Balancer Aplikasi eksternal regional dan Load Balancer Aplikasi internal regional, gunakan perintah:

      cat << EOF > server_tls_policy.yaml
      name: SERVER_TLS_POLICY_NAME
      mtlsPolicy:
      clientValidationMode: REJECT_INVALID
      clientValidationTrustConfig: projects/PROJECT_ID/locations/REGION/trustConfigs/TRUST_CONFIG_NAME
      EOF
      
  2. Untuk membuat resource ServerTlsPolicy, gunakan perintah gcloud network-security server-tls-policies import:

    global

    Untuk Load Balancer Aplikasi eksternal dan Load Balancer Aplikasi internal lintas region, gunakan perintah:

    gcloud network-security server-tls-policies import SERVER_TLS_POLICY_NAME \
      --source=server_tls_policy.yaml \
      --location=global
    

    regional

    Untuk Load Balancer Aplikasi eksternal regional dan Load Balancer Aplikasi internal regional, gunakan perintah:

    gcloud network-security server-tls-policies import SERVER_TLS_POLICY_NAME \
      --source=server_tls_policy.yaml \
      --location=REGION
    

Untuk mengetahui informasi selengkapnya, lihat Mode validasi klien MTLS.

Langkah selanjutnya