Mekanisme autentikasi bersama HTTPS memastikan bahwa server dan klien dapat saling memverifikasi identitas. Anda dapat menggunakan autentikasi bersama HTTPS untuk menjamin keamanan informasi dalam skenario seperti keuangan, IoT, layanan internal perusahaan, serta sektor layanan publik yang melibatkan informasi pribadi.
Perbandingan antara autentikasi satu arah HTTPS dan autentikasi bersama HTTPS
Autentikasi satu arah HTTPS: Klien mengunduh Sertifikat SSL atau TLS dari server untuk memverifikasi identitas server dan membangun saluran aman. Server tidak dapat memverifikasi identitas klien.
Autentikasi bersama HTTPS: Klien mengunduh Sertifikat SSL atau TLS dari server untuk memverifikasi identitas server. Selain itu, klien mengirimkan Sertifikat SSL atau TLS miliknya ke server sebagai bukti identitas. Saluran aman hanya dibangun setelah klien dan server saling memverifikasi identitas. Dalam banyak kasus, server memiliki sertifikat otoritas sertifikat (CA), dan klien memiliki Sertifikat SSL atau TLS yang ditandatangani dan diterbitkan berdasarkan sertifikat CA root. Oleh karena itu, server dapat memverifikasi identitas klien. Menggunakan autentikasi bersama HTTPS memungkinkan Anda mengekspos layanan hanya kepada klien tepercaya, mencegah serangan man-in-the-middle, dan meningkatkan keamanan layanan.
Prasyarat
Sertifikat SSL atau TLS dikonfigurasi dengan mengikuti langkah-langkah di Konfigurasikan Sertifikat HTTPS untuk Komunikasi Terenkripsi.
Sertifikat CA root telah diperoleh. Anda dapat memperoleh sertifikat CA root melalui salah satu cara berikut:
Beli sertifikat di konsol Layanan Manajemen Sertifikat. Untuk informasi lebih lanjut, lihat Beli dan Aktifkan CA Privat.
Ikuti langkah-langkah dalam topik ini untuk menghasilkan sertifikat tanda tangan sendiri.
(Opsional) Langkah 1: Hasilkan sertifikat CA root tanda tangan sendiri
Anda dapat melakukan langkah-langkah berikut untuk menghasilkan sertifikat CA root dan mengunggahnya ke konsol Layanan Manajemen Sertifikat.
Jalankan perintah berikut untuk membuat kunci privat:
openssl genrsa -out ca.key 4096Jalankan perintah berikut untuk membuat permintaan penandatanganan sertifikat (CSR):
openssl req -new -out ca.csr -key ca.keySetelah menjalankan perintah di atas, sistem akan meminta Anda untuk menentukan informasi tentang sertifikat. Blok kode sampel berikut menunjukkan parameter dan nilai contoh:
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 []:Tabel berikut menjelaskan parameter tersebut.
Parameter
Deskripsi
Nama Negara
Kode negara, yaitu kode dua huruf. Contohnya, cn mewakili Tiongkok. Parameter ini wajib.
Nama Negara Bagian atau Provinsi
Nama negara bagian atau provinsi. Parameter ini wajib.
Nama Kota
Nama kota. Parameter ini wajib.
Nama Organisasi
Nama organisasi, misalnya nama perusahaan. Parameter ini wajib.
Nama Unit Organisasi
Nama unit organisasi. Parameter ini wajib.
Nama Umum
Nama domain tempat sertifikat digunakan. Parameter ini opsional.
Alamat Email
Alamat email yang digunakan untuk menghubungi administrator sertifikat. Parameter ini opsional.
Kata sandi tantangan
Kata sandi yang digunakan untuk mengotentikasi akses ke CSR. Parameter ini opsional. Dalam contoh ini, parameter ini dibiarkan kosong.
Nama perusahaan opsional
Nama perusahaan. Parameter ini opsional. Dalam contoh ini, parameter ini dibiarkan kosong.
Jalankan perintah berikut untuk membuat sertifikat CA root:
openssl x509 -req -in ca.csr -out ca.crt -signkey ca.key -CAcreateserial -days 3650Setelah operasi di atas dilakukan, jalankan perintah
lsuntuk melihat file kunci privat dan file sertifikat dari sertifikat root di direktori saat ini.ca.crt ca.csr ca.keyFile ca.crt adalah sertifikat root yang diterbitkan oleh CA. File ca.csr adalah CSR yang dikirim ke CA. File ca.key adalah kunci privat. File ca.key dan ca.crt digunakan di Langkah 7 untuk mengonfigurasi sertifikat CA root tanda tangan sendiri.
PentingAnda harus menjaga kerahasiaan kunci privat.
Masuk ke konsol Layanan Manajemen Sertifikat. Di panel navigasi di sebelah kiri, klik Certificate Application Repository.
Di halaman Certificate Application Repository, klik Create Repository. Di panel Create Repository, atur parameter berikut dan klik OK.
Parameter
Deskripsi
Nama Repository
Nama repository. Anda dapat menentukan nama kustom.
Sumber Data
Dalam contoh ini, klik Sertifikat yang Diunggah lalu pilih sertifikat privat yang dibeli dan diterbitkan dari penyedia layanan sertifikat pihak ketiga.
Di halaman Certificate Application Repository, klik repository yang Anda buat. Di halaman Manage Certificates, klik Uploaded Certificates.
Di panel CA Information, atur parameter berdasarkan tabel berikut untuk mengunggah sertifikat CA yang Anda buat di Langkah 3 dan klik Confirm and Enable.
Parameter
Deskripsi
Nama Paket
Masukkan nama kustom untuk sertifikat yang ingin Anda unggah.
Sertifikat CA
Masukkan konten file yang dikodekan dalam format PEM dari sertifikat yang ingin Anda unggah.
Anda dapat menggunakan editor teks untuk membuka file sertifikat dalam format PEM atau CRT. Lalu, salin kontennya ke bidang Sertifikat CA. Anda juga dapat mengklik Upload lalu pilih file sertifikat dari mesin lokal Anda untuk mengunggah konten file tersebut.
Kunci Sertifikat
Masukkan konten file yang dikodekan dalam format PEM dari sertifikat yang ingin Anda unggah.
Langkah 2: Hasilkan sertifikat klien
Anda dapat membeli sertifikat klien dari konsol Layanan Manajemen Sertifikat atau menerbitkan sertifikat klien menggunakan sertifikat CA tanda tangan sendiri.
Dalam contoh berikut, sertifikat CA tanda tangan sendiri yang dibuat di Langkah 1 digunakan untuk menerbitkan sertifikat klien, dan autentikasi bersama diaktifkan untuk listener berdasarkan sertifikat klien dan sertifikat server tanda tangan sendiri yang Anda buat.
Jalankan perintah berikut untuk menghasilkan kunci privat untuk sertifikat klien:
openssl genrsa -out client.key 4096Jalankan perintah berikut untuk menghasilkan CSR untuk membuat sertifikat klien:
openssl req -new -out client.csr -key client.keyJalankan perintah berikut untuk menghasilkan sertifikat klien:
openssl x509 -req -in client.csr -out client.crt -signkey client.key -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650CA dan CAkey sesuai dengan sertifikat root yang dibuat di Langkah 1.
Setelah operasi di atas dilakukan, jalankan perintah
lsuntuk melihat sertifikat klien yang dihasilkan di direktori saat ini.client.crt client.csr client.key
Langkah 3: Buat AlbConfig untuk mengaktifkan autentikasi bersama untuk listener
Tentukan sertifikat server yang dibuat di Langkah 1 di parameter Certificates dari AlbConfig. Sertifikat tersebut diatur sebagai sertifikat server default.
Masuk ke konsol Layanan Manajemen Sertifikat. Di panel navigasi di sebelah kiri, klik SSL Certificates.
Di halaman SSL Certificates, klik ikon
di kolom Actions dan klik Details.Di panel Certificate Details, Anda dapat melihat informasi sertifikat.
Tentukan pengenal sertifikat root yang dibuat di Langkah 1 di bidang CertificateId dari parameter CaCertificates dari AlbConfig.
Masuk ke konsol Layanan Manajemen Sertifikat. Di panel navigasi di sebelah kiri, klik Certificate Application Repository.
Di halaman Certificate Application Repository, klik repository yang Anda buat. Di halaman Manage Certificates, klik Details.
Di panel Certificate Details, Anda dapat melihat pengenal sertifikat.
Contoh konfigurasi AlbConfig:
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb-demo
spec:
config:
name: alb-test
addressType: Intranet
# Tentukan setidaknya dua vSwitch yang berada di zona berbeda. Pastikan zona tersebut didukung oleh Application Load Balancer (ALB) dan termasuk dalam virtual private cloud (VPC) yang sama dengan kluster.
zoneMappings:
- vSwitchId: vsw-2zednnurkug2xl4******
- vSwitchId: vsw-2zeusdspvojoumx******
listeners:
- port: 443
protocol: HTTPS
caEnabled: true
caCertificates:
- CertificateId: 0e40dda998174723af39d37fcaf*****
certificates:
- CertificateId: 108*****-cn-hangzhou
IsDefault: trueLangkah 4: Uji autentikasi bersama
Buat file bernama coffee.yaml dan salin blok kode berikut ke file tersebut. File ini digunakan untuk menyebarkan layanan uji yang diekspos oleh Ingress. Layanan ini terkait dengan listener yang dikonfigurasi di Langkah 3.
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 # Tambahkan catatan DNS untuk nama domain ini. http: paths: - path: / pathType: Prefix backend: service: name: coffee-svc port: number: 80Jalankan perintah berikut untuk menyebarkan layanan uji:
kubectl apply -f coffee.yamlKeluaran yang diharapkan:
deployment.apps/coffee created service/coffee-svc created ingress.networking.k8s.io/alb-ingress createdGunakan sertifikat klien yang dihasilkan di Langkah 2 untuk mengakses layanan.
Masuk ke konsol ALB. Di bilah navigasi atas, pilih wilayah tempat instance ALB ditempatkan.
Di halaman Instances, klik instance ALB.
Di bagian Zone pada halaman instance details, peroleh alamat IP elastis (EIP) yang terkait dengan vSwitch dari instance ALB.
Tambahkan catatan DNS ke file hosts untuk memetakan nama domain ke EIP.
123.XX.XX.XX alb.ingress.alibaba.comSetelah catatan DNS ditambahkan, Anda dapat mengakses layanan menggunakan nama domain.
Ganti alb.ingress.alibaba.com dengan nama domain aktual yang ingin Anda gunakan. Anda juga harus menentukan jalur file client.crt dan client.key. curl https://alb.ingress.alibaba.com/ --cert client.crt --key client.keySetelah menjalankan perintah tersebut, server akan mengembalikan respons untuk mengarahkan Anda ke halaman HTML.
Referensi
Jika terjadi kesalahan saat menggunakan ALB, lihat dokumentasi ALB terlebih dahulu. Untuk informasi lebih lanjut, lihat Pemecahan Masalah Controller Ingress ALB dan FAQ tentang ALB Ingresses.