Sertifikat klien yang valid harus menunjukkan rantai kepercayaan kembali ke trust anchor (root certificate) di trust store. Halaman ini memberikan petunjuk untuk membuat rantai kepercayaan Anda sendiri dengan mengonfigurasi root certificate dan intermediate certificate Anda sendiri menggunakan library OpenSSL.
Setelah membuat root of trust, dokumen ini menguraikan proses untuk menguploadnya ke trust store resource TrustConfig Certificate Manager. Tindakan ini diikuti dengan menautkan konfigurasi kepercayaan ke resource Autentikasi Klien (ServerTLSPolicy), lalu melampirkan resource Autentikasi Klien ke resource proxy HTTPS target load balancer.
Sebelum memulai
- Tinjau Ringkasan mutual TLS.
- Tinjau panduan untuk Mengelola konfigurasi kepercayaan.
Instal Google Cloud CLI. Untuk ringkasan lengkap alat ini, lihat ringkasan gcloud CLI. Anda dapat menemukan perintah yang terkait dengan load balancing di referensi API dan gcloud CLI.
Jika Anda belum pernah menjalankan gcloud CLI sebelumnya, jalankan perintah
gcloud initterlebih dahulu untuk melakukan autentikasi.Aktifkan API berikut: Compute Engine API, Certificate Manager API, Network Security, dan Network Services API. Untuk mempelajari lebih lanjut, lihat Mengaktifkan API.
Jika Anda menggunakan Load Balancer Aplikasi eksternal global atau Load Balancer Aplikasi klasik, pastikan Anda telah menyiapkan load balancer dengan salah satu backend yang didukung berikut:
- Backend grup instance VM
- Bucket Cloud Storage (Hanya didukung jika ada setidaknya satu layanan backend yang juga terpasang ke load balancer, selain bucket backend)
- Cloud Run, App Engine, atau Cloud Run Functions
- Konektivitas hybrid
- Backend Private Service Connect
Jika Anda menggunakan Load Balancer Aplikasi eksternal regional, Load Balancer Aplikasi internal lintas region, atau Load Balancer Aplikasi internal regional, pastikan Anda telah menyiapkan load balancer dengan salah satu backend yang didukung berikut:
- Backend grup instance VM
- Cloud Run
- Konektivitas hybrid
- Backend Private Service Connect
Tetapkan project Anda.
gcloud
gcloud config set project PROJECT_ID
Izin
Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan panduan ini, minta administrator untuk memberi Anda peran IAM berikut pada project:
-
Untuk membuat resource load balancer seperti
TargetHTTPSProxy: Compute Load Balancer Admin (roles/compute.loadBalancerAdmin) -
Untuk menggunakan resource Certificate Manager:
Certificate Manager Owner (
roles/certificatemanager.owner) -
Untuk membuat komponen keamanan dan jaringan:
Compute Network Admin (
roles/compute.networkAdmin) dan Compute Security Admin (roles/compute.securityAdmin) -
Untuk membuat project (opsional):
Project Creator (
roles/resourcemanager.projectCreator)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Membuat root certificate dan intermediate certificate
Bagian ini menggunakan library OpenSSL untuk membuat root certificate (trust anchor) dan intermediate certificate.
Root certificate berada di bagian atas rantai sertifikat. Intermediate certificate adalah bagian dari chain of trust yang mengarah kembali ke root certificate. Intermediate certificate ditandatangani secara kriptografis oleh root certificate. Saat menerima sertifikat klien, load balancer akan memvalidasinya dengan membuat rantai kepercayaan dari sertifikat klien kembali ke trust anchor yang dikonfigurasi.
Gunakan perintah berikut untuk membuat root certificate dan intermediate certificate. Pembuatan intermediate certificate bersifat opsional. Namun, dalam penyiapan ini, kita menggunakan intermediate certificate untuk menandatangani sertifikat klien.
Buat file konfigurasi Open SSL:
Dalam contoh berikut, file konfigurasi (
example.cnf) berisi bagian[ca_exts], yang menentukan ekstensi X.509 yang menandai sertifikat sebagai sesuai untuk CA. Untuk mempelajari lebih lanjut persyaratan sertifikat root dan perantara, lihat Persyaratan sertifikat.cat > example.cnf << EOF [req] distinguished_name = empty_distinguished_name [empty_distinguished_name] # Kept empty to allow setting via -subj command-line argument. [ca_exts] basicConstraints=critical,CA:TRUE keyUsage=keyCertSign extendedKeyUsage=clientAuth EOFBuat kunci pribadi RSA baru (
root.key) dan gunakan untuk membuat sertifikat CA X.509 yang ditandatangani sendiri (root.cert), yang berfungsi sebagai root certificate authority (CA).openssl req -x509 \ -new -sha256 -newkey rsa:2048 -nodes \ -days 3650 -subj '/CN=root' \ -config example.cnf \ -extensions ca_exts \ -keyout root.key -out root.certBuat permintaan penandatanganan sertifikat (CSR) (
int.req) untuk intermediate certificate.openssl req -new \ -sha256 -newkey rsa:2048 -nodes \ -subj '/CN=int' \ -config example.cnf \ -extensions ca_exts \ -keyout int.key -out int.reqBuat intermediate certificate X.509 (
int.cert) dari CSR. Root CA menggunakan kunci pribadi (root.key) dan sertifikatnya (root.cert) untuk menerbitkan dan menandatangani sertifikat perantara X.509.openssl x509 -req \ -CAkey root.key -CA root.cert \ -set_serial 1 \ -days 3650 \ -extfile example.cnf \ -extensions ca_exts \ -in int.req -out int.cert
Membuat sertifikat yang ditandatangani sendiri yang dapat ditambahkan ke daftar yang diizinkan
Anda dapat membuat sertifikat yang ditandatangani sendiri dan menambahkannya ke daftar yang diizinkan dalam konfigurasi kepercayaan.
Gunakan perintah OpenSSL berikut untuk membuat sertifikat X.509 yang ditandatangani sendiri.
openssl req -x509 \
-new -sha256 -newkey rsa:2048 -nodes \
-days 3650 -subj '/CN=localhost' \
-keyout allowlisted.key -out allowlisted.cert
Sertifikat ini kemudian ditambahkan ke kolom allowlistedCertificates di
konfigurasi kepercayaan.
Memformat sertifikat
Untuk menyertakan sertifikat baru atau yang sudah ada di TrustStore, format
sertifikat menjadi satu baris dan simpan dalam variabel lingkungan, sehingga
dapat direferensikan oleh file YAML konfigurasi kepercayaan.
export ROOT_CERT=$(cat root.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
export INTERMEDIATE_CERT=$(cat int.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
Untuk menyertakan sertifikat baru atau yang sudah ada yang ditambahkan ke daftar yang diizinkan dalam
konfigurasi kepercayaan, format sertifikat menjadi satu baris
dan simpan dalam variabel lingkungan, sehingga dapat dibaca ke dalam file
YAML. Untuk sertifikat yang ada dalam daftar yang diizinkan, gunakan perintah berikut untuk
memformat sertifikat menjadi satu baris dan menyimpannya dalam
variabel lingkungan ALLOWLISTED_CERT.
export ALLOWLISTED_CERT=$(cat allowlisted.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
Membuat resource konfigurasi kepercayaan
Konfigurasi kepercayaan adalah resource yang mewakili konfigurasi Infrastruktur Kunci Publik (PKI) Anda di Certificate Manager.
Untuk membuat resource konfigurasi kepercayaan, selesaikan langkah-langkah berikut:
Konsol
Di konsol Google Cloud , buka halaman Certificate Manager.
Di tab Trust Configs, klik Add Trust Config.
Masukkan nama untuk konfigurasi.
Untuk Location, pilih Global atau Regional.
Lokasi menunjukkan tempat resource konfigurasi kepercayaan disimpan. Untuk Load Balancer Aplikasi eksternal global, Load Balancer Aplikasi klasik, dan Load Balancer Aplikasi internal lintas region, buat resource konfigurasi kepercayaan global. Untuk Load Balancer Aplikasi eksternal regional dan Load Balancer Aplikasi internal regional, buat resource konfigurasi kepercayaan regional.
Jika Anda memilih Regional, pilih region.
Di bagian Trust store, klik Add trust anchor dan upload file sertifikat berenkode PEM, atau salin konten sertifikat.
Klik Tambahkan.
Di bagian Trust store, klik Add intermediate CA dan upload file sertifikat berenkode PEM, atau salin konten sertifikat.
Langkah ini memungkinkan Anda menambahkan tingkat kepercayaan lain antara root certificate dan sertifikat server Anda.
Klik Add untuk menambahkan CA perantara.
Opsional: Di bagian Sertifikat yang diizinkan, klik Tambahkan sertifikat dan upload file sertifikat berenkode PEM, atau salin konten sertifikat.
Klik Tambahkan untuk menambahkan sertifikat yang diizinkan.
Klik Create.
Pastikan resource konfigurasi kepercayaan baru muncul dalam daftar konfigurasi.
gcloud
Buat file YAML konfigurasi kepercayaan (
trust_config.yaml) yang menentukan parameter konfigurasi kepercayaan. Contoh resource konfigurasi kepercayaan ini berisi trust store dengan trust anchor dan intermediate certificate. Langkah ini membaca konten sertifikat dari variabel lingkungan yang dibuat pada langkah Memformat sertifikat sebelumnya.cat << EOF > trust_config.yaml trustStores: - trustAnchors: - pemCertificate: "${ROOT_CERT?}" intermediateCas: - pemCertificate: "${INTERMEDIATE_CERT?}" EOFUntuk membuat trust store dengan trust anchor atau intermediate certificate tambahan, tambahkan baris
pemCertificatedi bagian yang sesuai.Opsional: Tentukan sertifikat yang ditambahkan ke file YAML konfigurasi kepercayaan di kolom
allowlistedCertificates. Anda tidak memerlukan trust store untuk menambahkan sertifikat ke daftar yang diizinkan.cat << EOF >> trust_config.yaml allowlistedCertificates: - pemCertificate: "${ALLOWLISTED_CERT?}" EOFSertifikat yang ditambahkan ke daftar yang diizinkan mewakili sertifikat apa pun yang dapat dienkapsulasi dalam konfigurasi kepercayaan sehingga selalu dianggap valid. Anda dapat menentukan beberapa sertifikat dalam daftar yang diizinkan menggunakan beberapa instance kolom
pemCertificate.Untuk mengimpor file YAML konfigurasi kepercayaan, gunakan perintah
gcloud certificate-manager trust-configs import:global
Untuk Load Balancer Aplikasi eksternal global, Load Balancer Aplikasi klasik, dan Load Balancer Aplikasi internal lintas region, tentukan
globalsebagai lokasi penyimpanan resource konfigurasi kepercayaan.gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME \ --source=trust_config.yaml \ --location=globalGanti kode berikut:
TRUST_CONFIG_NAME: nama resource konfigurasi kepercayaan.
regional
Untuk Load Balancer Aplikasi eksternal regional dan Load Balancer Aplikasi internal regional, tentukan region tempat resource konfigurasi kepercayaan disimpan.
gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME \ --source=trust_config.yaml \ --location=LOCATIONGanti kode berikut:
TRUST_CONFIG_NAME: nama resource konfigurasi kepercayaan.LOCATION: region tempat resource konfigurasi kepercayaan disimpan. Lokasi defaultnya adalahglobal.
Membuat resource Autentikasi Klien
Resource Autentikasi Klien (juga disebut ServerTLSPolicy) memungkinkan
Anda menentukan mode TLS sisi server dan resource konfigurasi kepercayaan yang akan digunakan
saat memvalidasi sertifikat klien. Saat klien memberikan sertifikat yang tidak valid atau tidak memberikan sertifikat ke load balancer, clientValidationMode menentukan cara koneksi klien ditangani. Untuk mengetahui informasi selengkapnya, lihat
Mode validasi klien mTLS.
- Jika
clientValidationModeditetapkan keALLOW_INVALID_OR_MISSING_CLIENT_CERT, semua permintaan akan diteruskan ke backend meskipun validasi gagal atau sertifikat klien tidak ada. - Jika
clientValidationModeditetapkan keREJECT_INVALID, hanya permintaan yang memberikan sertifikat klien yang dapat divalidasi terhadap resourceTrustConfigyang akan diteruskan ke backend. - Jika
clientValidationModeditetapkan keALLOW_VALIDATION_RELAXATIONS, hanya permintaan yang menyediakan sertifikat klien yang dapat divalidasi terhadap resourceTrustConfig—dengan relaksasi validasi yang ditentukan (clientValidationRelaxations) diterapkan—yang diteruskan ke backend.
Untuk membuat resource Autentikasi Klien (ServerTlsPolicy),
selesaikan langkah-langkah berikut:
Konsol
Di konsol Google Cloud , buka halaman Authentication Configuration.
Di tab Client Authentication, klik Create.
Masukkan nama untuk resource Autentikasi Klien.
Untuk Location, pilih Global atau Regional.
Untuk Load Balancer Aplikasi eksternal global, Load Balancer Aplikasi klasik, dan Load Balancer Aplikasi internal lintas region, tetapkan lokasi ke global. Untuk Load Balancer Aplikasi eksternal regional dan Load Balancer Aplikasi internal regional, tetapkan lokasi ke region tempat load balancer dikonfigurasi.
Untuk Client Authentication mode, pilih Load balancing.
Untuk Client Validation Mode, pilih salah satu opsi berikut:
- Menolak yang tidak valid
- Mengizinkan sertifikat klien yang tidak valid atau tidak ada
- Mengizinkan pelonggaran validasi
Untuk mengetahui informasi selengkapnya, lihat Mode validasi klien.
Jika Anda memilih Izinkan pelonggaran validasi, pilih satu atau beberapa pelonggaran validasi berikut:
- Izinkan EKU yang tidak ada
- Mengizinkan hashing SHA-1
- Mengizinkan sertifikat entitas akhir yang sudah tidak berlaku
Pilih resource konfigurasi kepercayaan yang Anda buat sebelumnya.
Opsional: Klik Equivalent code untuk melihat konfigurasi Terraform untuk resource ini.
Klik Create.
Pastikan Client Authentication (ServerTlsPolicy) ditampilkan.
gcloud
Berdasarkan cara Anda ingin menangani koneksi, pilih salah satu opsi berikut untuk menentukan resource Client Authentication (
ServerTlsPolicy) dalam format YAML.Opsi 1:
clientValidationModeditetapkan keALLOW_INVALID_OR_MISSING_CLIENT_CERT.global
Untuk Load Balancer Aplikasi eksternal global, Load Balancer Aplikasi klasik, dan Load Balancer Aplikasi internal lintas region, buat file YAML yang secara deklaratif menentukan mode validasi klien dan resource konfigurasi kepercayaan global:
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 EOFregional
Untuk Load Balancer Aplikasi eksternal regional dan Load Balancer Aplikasi internal regional, buat file YAML yang secara deklaratif menentukan mode validasi klien dan resource konfigurasi kepercayaan regional:
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 EOFOpsi 2:
clientValidationModeditetapkan keREJECT_INVALID.global
Untuk Load Balancer Aplikasi eksternal global, Load Balancer Aplikasi klasik, dan Load Balancer Aplikasi internal lintas region, buat file YAML yang secara deklaratif menentukan mode validasi klien dan resource konfigurasi kepercayaan global:
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 EOFregional
Untuk Load Balancer Aplikasi eksternal regional dan Load Balancer Aplikasi internal regional, buat file YAML yang secara deklaratif menentukan mode validasi klien dan resource konfigurasi kepercayaan regional:
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 EOFOpsi 3:
clientValidationModeditetapkan keALLOW_VALIDATION_RELAXATIONS.global
Untuk Load Balancer Aplikasi eksternal global, Load Balancer Aplikasi klasik, dan Load Balancer Aplikasi internal lintas region, buat file YAML yang secara deklaratif menentukan mode validasi klien, satu atau beberapa relaksasi validasi, dan resource konfigurasi kepercayaan global:
cat << EOF > server_tls_policy.yaml name: SERVER_TLS_POLICY_NAME mtlsPolicy: clientValidationMode: ALLOW_VALIDATION_RELAXATIONS clientValidationRelaxations: - VALIDATION_RELAXATION - VALIDATION_RELAXATION clientValidationTrustConfig: projects/PROJECT_ID/locations/global/trustConfigs/TRUST_CONFIG_NAME EOFregional
Untuk Load Balancer Aplikasi eksternal regional dan Load Balancer Aplikasi internal regional, buat file YAML yang secara deklaratif menentukan mode validasi klien, satu atau beberapa relaksasi validasi, dan resource konfigurasi kepercayaan regional:
cat << EOF > server_tls_policy.yaml name: SERVER_TLS_POLICY_NAME mtlsPolicy: clientValidationMode: ALLOW_VALIDATION_RELAXATIONS clientValidationRelaxations: - VALIDATION_RELAXATION - VALIDATION_RELAXATION clientValidationTrustConfig: projects/PROJECT_ID/locations/REGION/trustConfigs/TRUST_CONFIG_NAME EOF
Ganti kode berikut:
SERVER_TLS_POLICY_NAME: nama resource Autentikasi Klien (ServerTlsPolicy).VALIDATION_RELAXATION: satu atau beberapa nilai berikut:ALLOW_MISSING_EKU,ALLOW_SHA1_HASHING, atauALLOW_EXPIRED_LEAF_CERTIFICATE.PROJECT_ID: ID project Google Cloud Anda.REGION: untuk Load Balancer Aplikasi eksternal regional atau Load Balancer Aplikasi internal regional, gunakan region tempat Anda mengonfigurasi load balancer.TRUST_CONFIG_NAME: nama resource konfigurasi kepercayaan yang Anda buat sebelumnya.
Untuk mengimpor resource
ServerTlsPolicyClient Authentication, gunakan perintahgcloud network-security server-tls-policies import:global
Untuk Load Balancer Aplikasi eksternal global, Load Balancer Aplikasi klasik, dan Load Balancer Aplikasi internal lintas region, tetapkan flag
--locationkeglobal.gcloud network-security server-tls-policies import SERVER_TLS_POLICY_NAME \ --source=server_tls_policy.yaml \ --location=global
Ganti kode berikut:
SERVER_TLS_POLICY_NAME: nama resource Autentikasi Klien (ServerTlsPolicy).regional
Untuk Load Balancer Aplikasi eksternal regional dan Load Balancer Aplikasi internal regional, tetapkan flag
--locationke region tempat load balancer dikonfigurasi.gcloud network-security server-tls-policies import SERVER_TLS_POLICY_NAME \ --source=server_tls_policy.yaml \ --location=LOCATION
Ganti kode berikut:
SERVER_TLS_POLICY_NAME: nama resource Autentikasi Klien (ServerTlsPolicy).Opsional: Untuk mencantumkan semua resource Autentikasi Klien (
ServerTlsPolicies), gunakan perintahgcloud network-security server-tls-policies list:gcloud network-security server-tls-policies list \ --location=LOCATION
Ganti kode berikut:
LOCATION: Untuk Load Balancer Aplikasi eksternal global, Load Balancer Aplikasi klasik, dan Load Balancer Aplikasi internal lintas region, gunakanglobal. Untuk Load Balancer Aplikasi eksternal regional atau Load Balancer Aplikasi internal regional, gunakan region tempat Anda mengonfigurasi load balancer.
Melampirkan resource Autentikasi Klien ke load balancer
Agar autentikasi TLS bersama berfungsi, setelah menyiapkan load balancer, Anda
harus melampirkan resource Autentikasi Klien (ServerTLSPolicy)
ke resource proxy HTTPS target load balancer.
Konsol
Di konsol Google Cloud , buka halaman Load balancing.
Dari daftar load balancer, pilih load balancer yang perlu Anda lampirkan ke resource Client Authentication (
ServerTLSPolicy).Klik Edit.
Di bagian Frontend configuration untuk frontend HTTPS, luaskan bagian Show Advanced features.
Dari daftar Client Authentication, pilih resource Client Authentication.
Klik Done.
Klik Update.
gcloud
Untuk mencantumkan semua resource proxy HTTPS target dalam project Anda, gunakan perintah
gcloud compute target-https-proxies list:gcloud compute target-https-proxies list
Catat nama proxy HTTPS target yang akan dipasangi resource
ServerTLSPolicy. Nama ini disebut sebagaiTARGET_HTTPS_PROXY_NAMEpada langkah-langkah berikut.Untuk mengekspor konfigurasi proxy HTTPS target ke file, gunakan perintah
gcloud compute target-https-proxies export.global
gcloud compute target-https-proxies export TARGET_HTTPS_PROXY_NAME \ --destination=TARGET_PROXY_FILENAME \ --globalGanti kode berikut:
TARGET_HTTPS_PROXY_NAME: nama proxy target.TARGET_PROXY_FILENAME: nama file konfigurasi proxy target dalam format YAML. Contoh,mtls_target_proxy.yaml.
regional
gcloud compute target-https-proxies export TARGET_HTTPS_PROXY_NAME \ --destination=TARGET_PROXY_FILENAME \ --region=REGIONGanti kode berikut:
TARGET_HTTPS_PROXY_NAME: nama proxy target.TARGET_PROXY_FILENAME: nama file konfigurasi proxy target dalam format YAML. Misalnya,mtls_target_proxy.yamlREGION: region tempat Anda mengonfigurasi load balancer.
Untuk mencantumkan semua resource Autentikasi Klien (
ServerTlsPolicy), gunakan perintahgcloud network-security server-tls-policies list:gcloud network-security server-tls-policies list \ --location=LOCATIONGanti kode berikut:
LOCATION: untuk Load Balancer Aplikasi internal lintas region, Load Balancer Aplikasi eksternal global, atau Load Balancer Aplikasi klasik, gunakanglobal. Untuk Load Balancer Aplikasi eksternal regional atau Load Balancer Aplikasi internal regional, gunakan region tempat Anda mengonfigurasi load balancer.Catat nama resource Autentikasi Klien (
ServerTLSPolicy) untuk mengonfigurasi mTLS. Nama ini disebut sebagaiSERVER_TLS_POLICY_NAMEdi langkah berikutnya.Tambahkan Autentikasi Klien (
ServerTlsPolicy) ke proxy HTTPS target.echo "serverTlsPolicy: //networksecurity.googleapis.com/projects/PROJECT_ID/locations/LOCATION/serverTlsPolicies/SERVER_TLS_POLICY_NAME" >> TARGET_PROXY_FILENAME
Ganti kode berikut:
PROJECT_ID: ID project Google Cloud Anda.LOCATION: untuk Load Balancer Aplikasi eksternal global atau Load Balancer Aplikasi klasik, dan Load Balancer Aplikasi internal lintas region, gunakanglobal. Untuk Load Balancer Aplikasi eksternal regional atau Load Balancer Aplikasi internal regional, gunakan region tempat Anda mengonfigurasi load balancer.SERVER_TLS_POLICY_NAME: nama resource Autentikasi Klien (ServerTLSPolicy).TARGET_PROXY_FILENAME: nama file konfigurasi proxy target dalam format YAML.
Untuk mengimpor konfigurasi proxy HTTPS target dari file, gunakan perintah
gcloud compute target-https-proxies import.global
gcloud compute target-https-proxies import TARGET_HTTPS_PROXY_NAME \ --source=TARGET_PROXY_FILENAME \ --globalGanti kode berikut:
TARGET_HTTPS_PROXY_NAME: nama proxy target.TARGET_PROXY_FILENAME: nama file konfigurasi proxy target dalam format YAML. Contoh,mtls_target_proxy.yaml.
regional
gcloud compute target-https-proxies import TARGET_HTTPS_PROXY_NAME \ --source=TARGET_PROXY_FILENAME \ --region=REGIONGanti kode berikut:
TARGET_HTTPS_PROXY_NAME: nama proxy target.TARGET_PROXY_FILENAME: nama file konfigurasi proxy target dalam format YAML. Misalnya,mtls_target_proxy.yamlREGION: region tempat Anda mengonfigurasi load balancer.
Menambahkan header kustom mTLS
Saat mengaktifkan mTLS, Anda dapat meneruskan informasi tentang koneksi mTLS menggunakan header kustom. Anda juga dapat mengaktifkan logging agar kegagalan koneksi mTLS dicatat dalam log Anda. Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi logging, lihat salah satu referensi berikut:
- Logging dan pemantauan Load Balancer Aplikasi eksternal global
- Logging dan pemantauan Load Balancer Aplikasi eksternal regional
Menambahkan header kustom mTLS ke layanan backend
Untuk Load Balancer Aplikasi eksternal global atau Load Balancer Aplikasi klasik, Anda dapat menggunakan header kustom untuk meneruskan informasi tentang koneksi mTLS ke layanan backend.
Untuk mencantumkan semua layanan backend dalam project, gunakan perintah
gcloud compute backend-services list:gcloud compute backend-services list
Catat nama layanan backend untuk mengaktifkan header kustom. Nama ini disebut sebagai
BACKEND_SERVICEpada langkah berikut.Untuk mengupdate layanan backend, gunakan perintah
gcloud compute backend-services update:gcloud compute backend-services update BACKEND_SERVICE \ --global \ --custom-request-header='X-Client-Cert-Present:{client_cert_present}' \ --custom-request-header='X-Client-Cert-Chain-Verified:{client_cert_chain_verified}' \ --custom-request-header='X-Client-Cert-Error:{client_cert_error}' \ --custom-request-header='X-Client-Cert-Hash:{client_cert_sha256_fingerprint}' \ --custom-request-header='X-Client-Cert-Serial-Number:{client_cert_serial_number}' \ --custom-request-header='X-Client-Cert-SPIFFE:{client_cert_spiffe_id}' \ --custom-request-header='X-Client-Cert-URI-SANs:{client_cert_uri_sans}' \ --custom-request-header='X-Client-Cert-DNSName-SANs:{client_cert_dnsname_sans}' \ --custom-request-header='X-Client-Cert-Valid-Not-Before:{client_cert_valid_not_before}' \ --custom-request-header='X-Client-Cert-Valid-Not-After:{client_cert_valid_not_after}'
Menambahkan header kustom mTLS ke peta URL
Untuk Load Balancer Aplikasi internal lintas region, Load Balancer Aplikasi eksternal regional, atau Load Balancer Aplikasi internal regional, Anda dapat menggunakan header kustom untuk meneruskan informasi tentang koneksi mTLS ke peta URL.
Untuk mencantumkan semua peta URL dalam project, gunakan
perintah gcloud compute url-maps list:
gcloud compute url-maps list
Catat nama peta URL untuk mengaktifkan header kustom.
Nama ini disebut sebagai URL_MAP_NAME pada
langkah berikut.
global
Untuk mengedit peta URL untuk Load Balancer Aplikasi internal lintas region, gunakan perintah gcloud compute
url-maps edit:
gcloud compute url-maps edit URL_MAP_NAME --global
Berikut adalah contoh file YAML yang menunjukkan cara menggunakan variabel dalam header permintaan kustom (requestHeadersToAdd). Anda dapat menggunakan variabel yang sama untuk mengirim header respons kustom (responseHeadersToAdd).
headerAction:
requestHeadersToAdd:
- headerName: "X-Client-Cert-Present"
headerValue: "{client_cert_present}"
- headerName: "X-Client-Cert-Chain-Verified"
headerValue: "{client_cert_chain_verified}"
- headerName: "X-Client-Cert-Error"
headerValue: "{client_cert_error}"
- headerName: "X-Client-Cert-Hash"
headerValue: "{client_cert_sha256_fingerprint}"
- headerName: "X-Client-Cert-Serial-Number"
headerValue: "{client_cert_serial_number}"
- headerName: "X-Client-Cert-SPIFFE"
headerValue: "{client_cert_spiffe_id}"
- headerName: "X-Client-Cert-URI-SANs"
headerValue: "{client_cert_uri_sans}"
- headerName: "X-Client-Cert-DNSName-SANs"
headerValue: "{client_cert_dnsname_sans}"
- headerName: "X-Client-Cert-Valid-Not-Before"
headerValue: "{client_cert_valid_not_before}"
- headerName: "X-Client-Cert-Valid-Not-After"
headerValue: "{client_cert_valid_not_after}"
- headerName: "X-Client-Cert-Issuer-Dn"
headerValue: "{client_cert_issuer_dn}"
- headerName: "X-Client-Cert-Subject-Dn"
headerValue: "{client_cert_subject_dn}"
- headerName: "X-Client-Cert-Leaf"
headerValue: "{client_cert_leaf}"
- headerName: "X-Client-Cert-Chain"
headerValue: "{client_cert_chain}"
regional
Untuk mengedit peta URL untuk Load Balancer Aplikasi eksternal regional atau Load Balancer Aplikasi internal regional, gunakan perintah gcloud compute
url-maps edit:
gcloud compute url-maps edit URL_MAP_NAME --region=REGION
Berikut adalah contoh file YAML yang menunjukkan cara menggunakan variabel di header permintaan kustom (requestHeadersToAdd). Anda dapat menggunakan variabel yang sama untuk mengirim header respons kustom (responseHeadersToAdd).
defaultService: regions/REGION/backendServices/BACKEND_SERVICE_1
name: regional-lb-map
region: region/REGION
headerAction:
requestHeadersToAdd:
- headerName: "X-Client-Cert-Present"
headerValue: "{client_cert_present}"
- headerName: "X-Client-Cert-Chain-Verified"
headerValue: "{client_cert_chain_verified}"
- headerName: "X-Client-Cert-Error"
headerValue: "{client_cert_error}"
- headerName: "X-Client-Cert-Hash"
headerValue: "{client_cert_sha256_fingerprint}"
- headerName: "X-Client-Cert-Serial-Number"
headerValue: "{client_cert_serial_number}"
- headerName: "X-Client-Cert-SPIFFE"
headerValue: "{client_cert_spiffe_id}"
- headerName: "X-Client-Cert-URI-SANs"
headerValue: "{client_cert_uri_sans}"
- headerName: "X-Client-Cert-DNSName-SANs"
headerValue: "{client_cert_dnsname_sans}"
- headerName: "X-Client-Cert-Valid-Not-Before"
headerValue: "{client_cert_valid_not_before}"
- headerName: "X-Client-Cert-Valid-Not-After"
headerValue: "{client_cert_valid_not_after}"
- headerName: "X-Client-Cert-Issuer-Dn"
headerValue: "{client_cert_issuer_dn}"
- headerName: "X-Client-Cert-Subject-Dn"
headerValue: "{client_cert_subject_dn}"
- headerName: "X-Client-Cert-Leaf"
headerValue: "{client_cert_leaf}"
- headerName: "X-Client-Cert-Chain"
headerValue: "{client_cert_chain}"
Menandatangani sertifikat klien dengan intermediate certificate
Bagian ini menyediakan opsi konfigurasi tambahan untuk membuat sertifikat klien (entitas akhir). Jika Anda telah membuat resource TrustConfig yang berisi intermediate certificate, lakukan hal berikut:
Buat file konfigurasi untuk membuat CSR bagi sertifikat klien.
File konfigurasi berikut (
client.config) berisi bagian[extension_requirements], yang menentukan ekstensi X.509 yang akan disertakan dalam CSR. Untuk mempelajari lebih lanjut persyaratan sertifikat klien, lihat Persyaratan sertifikat.cat > client.config << EOF [req] default_bits = 2048 req_extensions = extension_requirements distinguished_name = dn_requirements prompt = no [extension_requirements] basicConstraints = critical, CA:FALSE keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment extendedKeyUsage = clientAuth [dn_requirements] countryName = US stateOrProvinceName = California localityName = San Francisco 0.organizationName = example organizationalUnitName = test commonName = test.example.com emailAddress = test@example.com EOFJika Anda ingin melampirkan identitas SPIFFE ke file konfigurasi, lakukan hal berikut:
Tambahkan kolom
subjectAltNameke bagian[extension_requirements]sebagai berikut:subjectAltName = @sans_list
Tambahkan bagian baru (
[sans_list]) di bagian bawah fileclient.configsebagai berikut:[sans_list] URI.1 = spiffe://example.com/test-identity
Buat CSR (
client.csr) untuk sertifikat klien.openssl req -new \ -config client.config \ -keyout client.key -out client.csrBuat sertifikat klien (
client.cert) dari CSR. CA perantara menggunakan kunci pribadi (int.key) dan sertifikatnya (int.cert) untuk menerbitkan dan menandatangani sertifikat klien X.509.openssl x509 -req \ -CAkey int.key -CA int.cert \ -days 365 \ -extfile client.config \ -extensions extension_requirements \ -in client.csr -out client.certKirim permintaan HTTPS yang aman ke alamat IP load balancer menggunakan sertifikat SSL sisi klien. Klien memberikan sertifikatnya (
client.cert) untuk mengautentikasi dirinya sendiri ke load balancer.curl -v --key client.key --cert client.cert https://IP_ADDRESS
Ganti IP_ADDRESS dengan alamat IP load balancer.