HTTPS mutual authentication (mutual TLS atau mTLS) mengharuskan server dan klien saling memverifikasi identitas sebelum membangun saluran yang aman. Berbeda dengan HTTPS satu arah—di mana hanya klien yang memverifikasi server—mTLS juga mengharuskan klien menyerahkan sertifikat SSL atau TLS yang valid yang ditandatangani oleh certificate authority (CA) tepercaya. Oleh karena itu, mTLS cocok untuk layanan keuangan, IoT, layanan internal perusahaan, dan layanan publik—yaitu skenario yang memerlukan pembatasan akses hanya kepada klien yang dikenal dan tepercaya serta pencegahan serangan man-in-the-middle.
Cara kerja
| HTTPS one-way authentication | HTTPS mutual authentication | |
|---|---|---|
| Client verifies server | Yes | Yes |
| Server verifies client | No | Yes |
| Client holds | — | SSL or TLS certificate signed by root CA |
| Server holds | Server certificate | Root CA certificate |
Dalam mutual authentication, server menyimpan sertifikat root CA, sedangkan klien menyimpan sertifikat SSL atau TLS yang ditandatangani oleh root CA tersebut. Kedua pihak saling memverifikasi sebelum koneksi dibangun.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Sertifikat SSL atau TLS yang dikonfigurasi pada listener ALB. Untuk petunjuk pengaturan, lihat Configure certificates for encrypted communication over HTTPS.
Sertifikat root CA. Dapatkan dengan salah satu cara berikut:
Membeli private CA di Konsol Certificate Management Service — lihat Purchase and enable a private CA.
Membuat sertifikat CA self-signed menggunakan langkah-langkah dalam (Optional) Step 1: Generate a self-signed CA certificate.
(Optional) Step 1: Generate a self-signed CA certificate
Lewati langkah ini jika Anda sudah memiliki sertifikat root CA.
Buat kunci privat:
openssl genrsa -out ca.key 4096Buat permintaan penandatanganan sertifikat (CSR):
Field Required Description Country Name Yes Kode negara dua huruf, misalnya, cnState or Province Name Yes Nama provinsi atau wilayah otonom Locality Name Yes Nama kota Organization Name Yes Nama perusahaan atau organisasi Organizational Unit Name Yes Nama departemen Common Name No Nama yang umum digunakan Email Address No Alamat email administrator sertifikat A challenge password No Kata sandi keamanan CSR opsional. Biarkan kosong jika tidak diperlukan openssl req -new -out ca.csr -key ca.keyOpenSSL akan meminta Anda mengisi 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 []:example@ali A challenge password []:Buat sertifikat root CA dengan masa berlaku 3.650 hari:
File Description ca.crtSertifikat root CA ca.csrFile CSR ca.keyKunci privat openssl x509 -req -in ca.csr -out ca.crt -signkey ca.key -CAcreateserial -days 3650Jalankan
lsuntuk memastikan file output:ca.crt ca.csr ca.key
Step 2: Upload the CA certificate
Unggah sertifikat root CA ke Certificate Management Service untuk mendapatkan identifier sertifikat yang akan digunakan dalam AlbConfig.
Masuk ke Konsol Layanan Manajemen Sertifikat. Pada bilah navigasi atas, pilih Outside Chinese Mainland dari daftar tarik-turun wilayah. Di panel navigasi kiri, klik Certificate Application Repository.
Pada halaman Certificate Application Repository, klik Create Repository. Di panel Create Repository, atur parameter berikut lalu klik OK.
Parameter Description Repository Name Nama kustom untuk repositori Data Source Pilih Upload CA Certificates untuk mengunggah sertifikat yang ditandatangani oleh CA pihak ketiga Klik repositori yang telah Anda buat. Di halaman repositori, klik Uploaded Certificates.
Di panel CA Information, isi bidang-bidang berikut lalu klik Confirm and Enable.
Parameter Description Package Name Nama kustom untuk sertifikat CA Certificates Tempel konten sertifikat, atau klik Upload and Parse File untuk mengunggah file sertifikat Klik Details di sisi kanan baris sertifikat yang diunggah dan catat identifier sertifikat tersebut. Anda akan membutuhkannya di Step 4.
Step 3: Generate a client certificate
Gunakan sertifikat root CA untuk menandatangani sertifikat klien.
Buat kunci privat untuk klien:
openssl genrsa -out client.key 4096Buat CSR untuk sertifikat klien:
openssl req -new -out client.csr -key client.keyIsi bidang-bidang yang sama seperti pada Step 1. Nilainya dapat berbeda dari yang ada di sertifikat CA.
Tandatangani sertifikat klien menggunakan root CA:
File Description client.crtSertifikat client yang ditandatangani oleh root CA client.csrFile CSR client.keyKunci privat client openssl x509 -req -in client.csr -out client.crt -signkey client.key -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650ca.crtdanca.keyadalah sertifikat dan kunci privat root CA yang dibuat pada Step 1. Jalankanlsuntuk memastikan file output:client.crt client.csr client.key
Step 4: Enable and test mutual authentication
Enable mutual authentication
Buka AlbConfig untuk diedit:
kubectl edit albconfig <ALBCONFIG_NAME>Ganti
<ALBCONFIG_NAME>dengan nama AlbConfig Anda.Pada konfigurasi listener HTTPS (port 443), tambahkan
caEnabled: truedan aturcaCertificates.CertificateIdke identifier sertifikat yang dicatat pada Step 2:apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: #... spec: config: #... listeners: - port: 443 protocol: HTTPS caEnabled: true # Enable mutual authentication caCertificates: - CertificateId: 0e40dda998174723af39d37fcaf***** # Certificate identifier from Step 2 certificates: #...
Test mutual authentication
Dapatkan hostname dan alamat Ingress:
kubectl get ingressOutput yang diharapkan:
NAME CLASS HOSTS ADDRESS PORTS AGE https-ingress https-ingressclass demo.alb.ingress.top alb-********.alb.aliyuncs.com 80, 443 83mCatat nilai pada kolom
HOSTSdanADDRESS.Uji bahwa permintaan dengan sertifikat klien yang valid berhasil. Ganti
demo.alb.ingress.topdanalb-********.alb.aliyuncs.comdengan nilai dari langkah sebelumnya:curl -H HOST:demo.alb.ingress.top -k https://alb-********.alb.aliyuncs.com --cert client.crt --key client.keyOutput yang diharapkan:
old
(Optional) Step 5: Disable mutual authentication
Buka AlbConfig untuk diedit:
kubectl edit albconfig <ALBCONFIG_NAME>Atur
caEnabledkefalse:apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: #... spec: config: #... listeners: - port: 443 protocol: HTTPS caEnabled: false # Disable mutual authentication caCertificates: - CertificateId: 0e40dda998174723af39d37fcaf***** certificates: #...
What's next
Untuk mengaktifkan HTTP/3 pada listener Anda, lihat Use a QUIC listener to support HTTP/3.
Untuk menambahkan perlindungan WAF ke instans ALB Anda, lihat Use WAF-enabled ALB instances to protect applications.