HTTPS standar hanya memverifikasi server—klien mana pun dapat terhubung. Mutual TLS (mTLS) mengharuskan baik server maupun klien untuk menunjukkan sertifikat yang valid, sehingga hanya klien dengan sertifikat yang ditandatangani oleh CA tepercaya Anda yang dapat membuat koneksi. Dengan menerapkan mTLS pada pendengar Application Load Balancer (ALB), koneksi yang tidak sah ditolak sebelum mencapai backend Anda.
Pengaturan ini cocok untuk layanan keuangan, IoT, layanan internal perusahaan, dan aplikasi sektor publik yang menangani data pribadi.
Cara kerja
| Jenis autentikasi | Server diverifikasi oleh klien | Klien diverifikasi oleh server |
|---|---|---|
| Satu arah (HTTPS standar) | Ya | Tidak |
| Mutual (mTLS) | Ya | Ya |
Dalam autentikasi timbal balik, server menyimpan sertifikat CA dan klien menyimpan sertifikat SSL atau TLS yang ditandatangani oleh CA tersebut. ALB memvalidasi sertifikat klien terhadap sertifikat CA pada setiap koneksi. Saluran aman hanya dibentuk setelah kedua pihak saling memverifikasi identitasnya.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Sertifikat SSL atau TLS yang dikonfigurasi pada pendengar ALB Anda. Untuk detailnya, lihat Konfigurasikan sertifikat HTTPS untuk komunikasi terenkripsi
Sertifikat root CA, yang diperoleh dengan salah satu cara berikut:
Membeli CA pribadi dari Konsol Layanan Manajemen Sertifikat — lihat Beli dan aktifkan CA pribadi
Men-generate sertifikat root CA self-signed dengan mengikuti Langkah 1 dalam topik ini
(Opsional) Langkah 1: Generate sertifikat root CA self-signed
Generate sertifikat root CA secara lokal dan unggah ke Konsol Layanan Manajemen Sertifikat.
Generate sertifikat
Buat kunci privat:
openssl genrsa -out ca.key 4096Buat permintaan penandatanganan sertifikat (CSR):
Bidang Deskripsi Wajib Country Name Kode negara dua huruf, misalnya cnuntuk TiongkokYa State or Province Name Nama lengkap provinsi atau negara bagian Ya Locality Name Nama kota Ya Organization Name Nama perusahaan atau organisasi Ya Organizational Unit Name Nama departemen atau unit Ya Common Name Nama domain untuk sertifikat Tidak Email Address Email kontak administrator sertifikat Tidak A challenge password Password untuk mengautentikasi akses CSR. Biarkan kosong jika tidak diperlukan Tidak An optional company name Biarkan kosong jika tidak diperlukan Tidak openssl req -new -out ca.csr -key ca.keySaat diminta, masukkan nilai untuk bidang-bidang berikut:
Country Name (2 letter code) [XX]:cn State or Province Name (full name) []:bj Locality Name (eg, city) [Default City]:bj Organization Name (eg, company) [Default Company Ltd]:alibaba Organizational Unit Name (eg, section) []:test Common Name (eg, your name or your servers hostname) []:root Email Address []:a.alibaba.com A challenge password []: An optional company name []:Buat sertifikat root CA:
ca.crt— sertifikat root CA (digunakan di Langkah 3 untuk mengonfigurasi AlbConfig)ca.csr— CSR yang dikirim ke CAca.key— kunci privat (digunakan di Langkah 2 untuk menandatangani sertifikat klien)
PentingJaga kerahasiaan
ca.key. Siapa pun yang memiliki akses ke kunci privat dapat menerbitkan sertifikat klien yang tepercaya.openssl x509 -req -in ca.csr -out ca.crt -signkey ca.key -CAcreateserial -days 3650Jalankan
lsuntuk memastikan file-file berikut tersedia:ca.crt ca.csr ca.key
Upload the CA certificate
Login ke Konsol Layanan Manajemen Sertifikat. Di panel navigasi kiri, klik Certificate Application Repository.
Klik Create Repository. Di panel yang muncul, atur parameter berikut lalu klik OK:
Parameter Deskripsi Repository Name Masukkan nama kustom Data Source Klik Uploaded Certificates, lalu pilih sertifikat pribadi yang dibeli dan diterbitkan dari penyedia layanan sertifikat pihak ketiga Klik repositori yang telah Anda buat. Di halaman Manage Certificates, klik Uploaded Certificates.
Di panel CA Information, atur parameter berikut lalu klik Confirm and Enable:
Parameter Deskripsi Package Name Masukkan nama kustom untuk sertifikat CA Certificates Tempel konten ca.crtdalam format PEM, atau klik Upload untuk memilih fileCertificate Key Tempelkan konten berformat PEM dari ca.key
Langkah 2: Generate sertifikat klien
Gunakan sertifikat CA self-signed dari Langkah 1 untuk menerbitkan sertifikat klien. Sertifikat ini diserahkan oleh klien untuk mengautentikasi diri ke pendengar ALB.
Generate kunci privat untuk sertifikat klien:
openssl genrsa -out client.key 4096Generate CSR untuk sertifikat klien:
openssl req -new -out client.csr -key client.keyTandatangani sertifikat klien dengan root CA dari Langkah 1:
openssl x509 -req -in client.csr -out client.crt -signkey client.key -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650Jalankan
lsuntuk memastikan file-file berikut tersedia:client.crt client.csr client.key
Langkah 3: Konfigurasikan AlbConfig untuk mengaktifkan autentikasi timbal balik
Resource AlbConfig mendefinisikan instans ALB dan pendengarnya. Mengatur caEnabled: true pada pendengar akan mengaktifkan mTLS—ALB meminta dan memverifikasi sertifikat klien pada setiap koneksi HTTPS ke pendengar tersebut.
Anda memerlukan dua ID sertifikat dari Konsol Layanan Manajemen Sertifikat:
ID sertifikat server — navigasi ke SSL Certificates > ikon Actions > Details > panel Certificate Details
ID sertifikat root CA — navigasi ke Certificate Application Repository > repositori Anda > Manage Certificates > Details > panel Certificate Details
Terapkan AlbConfig dengan struktur berikut:
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb-demo
spec:
config:
name: alb-test
addressType: Intranet
# Tentukan minimal dua vSwitch di zona berbeda.
# Zona tersebut harus didukung oleh ALB dan berada dalam virtual private cloud (VPC) yang sama dengan kluster.
zoneMappings:
- vSwitchId: vsw-2zednnurkug2xl4******
- vSwitchId: vsw-2zeusdspvojoumx******
listeners:
- port: 443
protocol: HTTPS
caEnabled: true # Mengaktifkan autentikasi timbal balik
caCertificates:
- CertificateId: 0e40dda998174723af39d37fcaf***** # ID sertifikat root CA
certificates:
- CertificateId: 108*****-cn-hangzhou # ID sertifikat server
IsDefault: trueLangkah 4: Uji autentikasi timbal balik
Terapkan layanan uji dan verifikasi bahwa ALB menerapkan validasi sertifikat klien.
Buat file bernama
coffee.yamldengan konten berikut:apiVersion: apps/v1 kind: Deployment metadata: name: coffee spec: replicas: 2 selector: matchLabels: app: coffee template: metadata: labels: app: coffee spec: containers: - name: coffee image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: coffee-svc spec: ports: - port: 80 targetPort: 80 protocol: TCP selector: app: coffee type: NodePort --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: alb.ingress.kubernetes.io/listen-ports: | [{"HTTPS": 443}] name: alb-ingress spec: ingressClassName: alb rules: - host: alb.ingress.alibaba.com # Ganti dengan nama domain aktual Anda. http: paths: - path: / pathType: Prefix backend: service: name: coffee-svc port: number: 80Terapkan layanan uji:
kubectl apply -f coffee.yamlOutput yang diharapkan:
deployment.apps/coffee created service/coffee-svc created ingress.networking.k8s.io/alb-ingress createdDapatkan alamat IP elastis (EIP) instans ALB:
Login ke Konsol ALB dan pilih wilayah tempat instans ALB diterapkan.
Di halaman Instances, klik instans ALB.
Di bagian Zone pada halaman detail instans, temukan EIP yang terkait dengan vSwitch.
Tambahkan rekaman DNS ke file
hostslokal Anda untuk memetakan nama domain ke EIP:123.XX.XX.XX alb.ingress.alibaba.comUji akses dengan sertifikat klien:
curl https://alb.ingress.alibaba.com/ --cert client.crt --key client.keyServer mengembalikan respons dan mengarahkan ke halaman HTML. Hal ini mengonfirmasi bahwa ALB menerima sertifikat klien.
Langkah selanjutnya
Jika terjadi error saat menggunakan ALB, rujuk terlebih dahulu ke dokumentasi ALB. Untuk informasi lebih lanjut, lihat Troubleshooting controller ALB Ingress dan FAQ tentang ALB Ingress.