All Products
Search
Document Center

Container Service for Kubernetes:Tingkatkan keamanan layanan dengan otentikasi timbal balik HTTPS

Last Updated:Mar 26, 2026

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 authenticationHTTPS mutual authentication
Client verifies serverYesYes
Server verifies clientNoYes
Client holdsSSL or TLS certificate signed by root CA
Server holdsServer certificateRoot 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:

(Optional) Step 1: Generate a self-signed CA certificate

Lewati langkah ini jika Anda sudah memiliki sertifikat root CA.

  1. Buat kunci privat:

    openssl genrsa -out ca.key 4096
  2. Buat permintaan penandatanganan sertifikat (CSR):

    FieldRequiredDescription
    Country NameYesKode negara dua huruf, misalnya, cn
    State or Province NameYesNama provinsi atau wilayah otonom
    Locality NameYesNama kota
    Organization NameYesNama perusahaan atau organisasi
    Organizational Unit NameYesNama departemen
    Common NameNoNama yang umum digunakan
    Email AddressNoAlamat email administrator sertifikat
    A challenge passwordNoKata sandi keamanan CSR opsional. Biarkan kosong jika tidak diperlukan
    openssl req -new -out ca.csr -key ca.key

    OpenSSL 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 []:
  3. Buat sertifikat root CA dengan masa berlaku 3.650 hari:

    FileDescription
    ca.crtSertifikat root CA
    ca.csrFile CSR
    ca.keyKunci privat
    openssl x509 -req -in ca.csr -out ca.crt -signkey ca.key -CAcreateserial -days 3650

    Jalankan ls untuk 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.

  1. 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.

  2. Pada halaman Certificate Application Repository, klik Create Repository. Di panel Create Repository, atur parameter berikut lalu klik OK.

    ParameterDescription
    Repository NameNama kustom untuk repositori
    Data SourcePilih Upload CA Certificates untuk mengunggah sertifikat yang ditandatangani oleh CA pihak ketiga
  3. Klik repositori yang telah Anda buat. Di halaman repositori, klik Uploaded Certificates.

  4. Di panel CA Information, isi bidang-bidang berikut lalu klik Confirm and Enable.

    ParameterDescription
    Package NameNama kustom untuk sertifikat
    CA CertificatesTempel konten sertifikat, atau klik Upload and Parse File untuk mengunggah file sertifikat
  5. 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.

  1. Buat kunci privat untuk klien:

    openssl genrsa -out client.key 4096
  2. Buat CSR untuk sertifikat klien:

    openssl req -new -out client.csr -key client.key

    Isi bidang-bidang yang sama seperti pada Step 1. Nilainya dapat berbeda dari yang ada di sertifikat CA.

  3. Tandatangani sertifikat klien menggunakan root CA:

    FileDescription
    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 3650

    ca.crt dan ca.key adalah sertifikat dan kunci privat root CA yang dibuat pada Step 1. Jalankan ls untuk memastikan file output:

    client.crt  client.csr  client.key

Step 4: Enable and test mutual authentication

Enable mutual authentication

  1. Buka AlbConfig untuk diedit:

    kubectl edit albconfig <ALBCONFIG_NAME>

    Ganti <ALBCONFIG_NAME> dengan nama AlbConfig Anda.

  2. Pada konfigurasi listener HTTPS (port 443), tambahkan caEnabled: true dan atur caCertificates.CertificateId ke 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

  1. Dapatkan hostname dan alamat Ingress:

    kubectl get ingress

    Output yang diharapkan:

    NAME            CLASS                HOSTS                  ADDRESS                         PORTS     AGE
    https-ingress   https-ingressclass   demo.alb.ingress.top   alb-********.alb.aliyuncs.com   80, 443   83m

    Catat nilai pada kolom HOSTS dan ADDRESS.

  2. Uji bahwa permintaan dengan sertifikat klien yang valid berhasil. Ganti demo.alb.ingress.top dan alb-********.alb.aliyuncs.com dengan nilai dari langkah sebelumnya:

    curl -H HOST:demo.alb.ingress.top -k https://alb-********.alb.aliyuncs.com --cert client.crt --key client.key

    Output yang diharapkan:

    old

(Optional) Step 5: Disable mutual authentication

  1. Buka AlbConfig untuk diedit:

    kubectl edit albconfig <ALBCONFIG_NAME>
  2. Atur caEnabled ke false:

    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