全部产品
Search
文档中心

Container Compute Service:Konfigurasikan Sertifikat untuk Komunikasi Terenkripsi melalui HTTPS

更新时间:Jul 02, 2025

Saat mengonfigurasi pendengar HTTPS, Anda harus mengaitkan sertifikat SSL atau TLS dengan pendengar untuk mengenkripsi koneksi antara klien dan pendengar. Topik ini menjelaskan cara menggunakan Application Load Balancer (ALB) Ingress untuk mengonfigurasi sertifikat untuk pendengar HTTPS.

Perbandingan metode konfigurasi sertifikat

ALB Ingress memungkinkan Anda mengonfigurasi penemuan sertifikat otomatis, mengelola sertifikat sebagai Kubernetes Secrets, dan menentukan sertifikat dalam AlbConfigs. Tabel berikut membandingkan metode-metode tersebut.

Item Perbandingan

Konfigurasikan Penemuan Sertifikat Otomatis

Tentukan Sertifikat dalam AlbConfigs

Kelola Sertifikat sebagai Secrets

Penyimpanan Sertifikat

Sertifikat disimpan di Layanan Manajemen Sertifikat.

Sertifikat disimpan sebagai Kubernetes Secrets.

Penemuan Sertifikat

Sertifikat ditemukan berdasarkan nama domain yang terikat pada sertifikat.

Sertifikat ditemukan berdasarkan ID-nya.

Sertifikat ditemukan berdasarkan Secret tempat sertifikat disimpan.

Skenario

Metode ini cocok untuk sertifikat yang dibeli di konsol Layanan Manajemen Sertifikat atau sertifikat yang diunggah ke konsol Layanan Manajemen Sertifikat.

Fitur ini cocok untuk sertifikat yang dikelola di kluster. Misalnya, jika Anda menggunakan cert-manager untuk mengelola sertifikat, Anda dapat menyimpan sertifikat dalam Secrets.

Penggunaan Sertifikat Lintas Namespace

Ya. Anda dapat mengaktifkan akses internal dan eksternal untuk ALB Ingress secara bersamaan.

Tidak didukung. Sertifikat yang disimpan sebagai Secret hanya dapat digunakan dalam namespace Secret tersebut.

Metode Pembaruan Sertifikat

Anda harus mengunggah sertifikat baru atau memperbarui sertifikat asli di Konsol Layanan Manajemen Sertifikat. Kemudian, Anda perlu memodifikasi konfigurasi Ingress yang terkait dengan sertifikat secara manual.

Anda harus memperbarui konfigurasi Secret tempat sertifikat disimpan.

Penting

Instance ALB mendukung maksimal 25 sertifikat. Dalam banyak kasus, jumlah sertifikat yang digunakan oleh instance ALB sama dengan total jumlah sertifikat yang terkait dengan semua pendengar instance tersebut, termasuk sertifikat yang terkait dengan Ingress. Untuk informasi lebih lanjut, lihat Metode untuk Menghitung Kuota ALB.

Kompatibilitas sertifikat yang dikonfigurasi menggunakan metode berbeda

Tabel berikut menjelaskan kompatibilitas metode konfigurasi sertifikat yang berbeda.

Cara Sertifikat Dikonfigurasi

Deskripsi

Sertifikat dikonfigurasi menggunakan penemuan sertifikat otomatis dan sertifikat lain dikonfigurasi menggunakan Kubernetes Secret.

  • Jika kedua sertifikat terkait dengan nama domain yang sama, sertifikat yang dikonfigurasi menggunakan Secret akan lebih dipilih.

  • Jika sertifikat terkait dengan nama domain yang berbeda, kontroler ALB Ingress menggunakan sertifikat untuk nama domain yang sesuai.

Sertifikat dikonfigurasi menggunakan penemuan sertifikat otomatis dan sertifikat lain ditentukan dalam AlbConfig. Kedua sertifikat terkait dengan pendengar yang sama.

Pendengar hanya menggunakan sertifikat yang ditentukan dalam AlbConfig.

Sertifikat dikonfigurasi menggunakan Kubernetes Secret dan sertifikat lain ditentukan dalam AlbConfig. Kedua sertifikat terkait dengan pendengar yang sama.

Kedua sertifikat digunakan.

Prasyarat

Sertifikat tepercaya telah diperoleh. Anda dapat memperoleh sertifikat dengan salah satu cara berikut:

  • Beli sertifikat di konsol Layanan Manajemen Sertifikat. Untuk informasi lebih lanjut, lihat Beli Sertifikat Resmi.

  • Beli sertifikat yang diterbitkan oleh otoritas sertifikat (CA) lain.

  • (Opsional) Ikuti langkah-langkah dalam Hasilkan Sertifikat Tanda Tangan Sendiri untuk menghasilkan sertifikat tanda tangan sendiri.

Prosedur

Penting

Secara default, AlbConfig dikonfigurasi dengan pendengar HTTP pada port 80. Anda harus membuat pendengar HTTPS dan mengonfigurasi sertifikat. Jika tidak ada sertifikat yang dikonfigurasi, pendengar HTTPS menjadi tidak tersedia dan kontroler gagal karena kurangnya sertifikat.

Langkah 1: Buat pendengar HTTPS dalam AlbConfig

  1. Jalankan perintah berikut untuk mengedit file konfigurasi albconfig:

    kubectl edit albconfig <Albconfig_Name>
  2. Modifikasi konfigurasi berdasarkan kebutuhan bisnis Anda. Anda dapat mengonfigurasi parameter port dan protocol dalam Albconfig untuk membuat pendengar yang sesuai.

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb
    spec:
      config:
        addressAllocatedMode: Fixed
        addressType: Internet
        zoneMappings:
        - vSwitchId: vsw-bp19sXXXXXXX176iv
        - vSwitchId: vsw-bp1boXXXXXXXu74xz
      listeners:
      - port: 80
        protocol: HTTP
      - port: 443           # Konten baru  
        protocol: HTTPS     # Konten baru

(Opsional) Langkah 2: Hasilkan sertifikat tanda tangan sendiri

Jalankan perintah OpenSSL berikut untuk menghasilkan sertifikat tanda tangan sendiri:

Penting

Secara default, sertifikat tanda tangan sendiri tidak dipercayai oleh browser atau klien. Jika Anda mengaitkan sertifikat tanda tangan sendiri dengan Ingress, Anda mungkin menerima peringatan keamanan saat mengakses aplikasi yang menggunakan Ingress. Sertifikat tanda tangan sendiri yang dihasilkan dalam contoh ini hanya untuk referensi. Jangan gunakan sertifikat ini di lingkungan produksi.

openssl genrsa -out albtop-key.pem 4096
openssl req -subj "/CN=demo.alb.ingress.top" -sha256  -new -key albtop-key.pem -out albtop.csr
echo subjectAltName = DNS:demo.alb.ingress.top > extfile.cnf
openssl x509 -req -days 3650 -sha256 -in albtop.csr -signkey albtop-key.pem -out albtop-cert.pem -extfile extfile.cnf

Hasil yang Diharapkan:

Permintaan sertifikat berhasil ditandatangani sendiri
subject=CN=demo.alb.ingress.top
Catatan

Dalam baris perintah sebelumnya, nama domain demo.alb.ingress.top terkait dengan sertifikat tanda tangan sendiri. Anda dapat mengganti nama domain dengan nama domain kustom.

Langkah 3: Buat sumber daya sampel

Selain AlbConfig yang Anda buat, Anda perlu membuat Deployment, Service, IngressClass, dan Ingress agar ALB Ingress berfungsi dengan normal. Anda dapat menggunakan template YAML berikut untuk membuat sumber daya tersebut.

  1. Buat file bernama https-quickstart.yaml dan salin konten berikut ke file tersebut:

    Tampilkan Konten File YAML

    apiVersion: networking.k8s.io/v1
    kind: IngressClass
    metadata:
      name: https-ingressclass
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: alb # Atur nilai ini ke nama AlbConfig yang Anda buat.
    ---
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: https-ingress
    spec:
      ingressClassName: https-ingressclass
      rules:
      - host: demo.alb.ingress.top # Ganti demo.alb.ingress.top dengan nama domain yang ingin Anda gunakan.
        http:
          paths:
          - backend:
              service:
                name: https-svc
                port:
                  number: 443
            path: /
            pathType: Prefix
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: https-deploy
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: https-deploy
      template:
        metadata:
          labels:
            app: https-deploy
        spec:
          containers:
            - image: registry.cn-hangzhou.aliyuncs.com/acs-sample/old-nginx:latest
              imagePullPolicy: IfNotPresent
              name: https-deploy
              ports:
                - containerPort: 80
                  protocol: TCP
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: https-svc
    spec:
      ports:
        - name: port1
          port: 443
          protocol: TCP
          targetPort: 80
      selector:
        app: https-deploy
      sessionAffinity: None
      type: ClusterIP
  2. (Opsional) Jika pendengar HTTP dan HTTPS dikonfigurasi dalam AlbConfig, tambahkan bidang annotations ke konfigurasi Ingress. Contoh:

    Tambahkan Anotasi jika Beberapa Pendengar Digunakan

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: https-ingress
      annotations:
        alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80},{"HTTPS": 443}]' # Tambahkan anotasi ini jika ALB Ingress terkait dengan beberapa pendengar.
    spec:
      #...
  3. Jalankan perintah berikut untuk membuat sumber daya tersebut:

    kubectl apply -f https-quickstart.yaml

Langkah 4: Konfigurasikan sertifikat

Konfigurasikan penemuan sertifikat otomatis

Setelah Anda mengunggah sertifikat tanda tangan sendiri ke Layanan Manajemen Sertifikat, Anda dapat menentukan nama domain yang terikat pada bidang tls konfigurasi Ingress. Dengan cara ini, ALB Ingress dapat menemukan dan menggunakan sertifikat yang diunggah secara otomatis.

  1. Unggah sertifikat tanda tangan sendiri ke konsol Layanan Manajemen Sertifikat. Untuk informasi lebih lanjut, lihat Unggah Sertifikat SSL.

  2. Perbarui konfigurasi Ingress.

    1. Jalankan perintah berikut untuk memodifikasi Ingress:

      kubectl edit ingress https-ingress
    2. Tambahkan bidang tls dan tentukan nama domain yang terikat pada sertifikat.

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: https-ingress
        namespace: default
      spec:
        ingressClassName: alb
        rules:
        - host: demo.alb.ingress.top
          http:
            #...
        tls:
        - hosts:
          - demo.alb.ingress.top # Atur nilai ini ke nama domain yang terikat pada sertifikat. Nama domain harus sama dengan nama domain yang ditentukan di bidang “rules: host“.

Catatan

Setelah penemuan sertifikat otomatis dikonfigurasi, instance ALB terkait secara otomatis membuat pendengar HTTPS:443.

Kelola sertifikat sebagai Secrets

Anda dapat menyimpan sertifikat tanda tangan sendiri dalam Secret dan kemudian menentukan Secret dalam konfigurasi Ingress.

  1. Jalankan perintah berikut untuk mengkodekan file sertifikat dan kunci privat dalam Base64: Ganti albtop-key.pem dan albtop-cert.pem dengan file kunci dan sertifikat aktual.

    echo -n `cat albtop-key.pem` | base64 
    echo -n `cat albtop-cert.pem` | base64
  2. Buat Secret.

    1. Buat file bernama albconfig.yaml dan salin konten berikut ke file tersebut: Ganti {base64 albtop-key.pem} dan {base64 albtop-cert.pem} dengan kode Base64 dari langkah sebelumnya.

      apiVersion: v1
      kind: Secret
      metadata:
        name: https-secret
      type: kubernetes.io/tls
      data:
        tls.key: |                  
          {base64 albtop-key.pem} 
        tls.crt: |                 
          {base64 albtop-cert.pem} 
    2. Jalankan perintah berikut untuk membuat Secret:

      kubectl apply -f https-secret.yaml
  3. Perbarui konfigurasi Ingress.

    1. Jalankan perintah berikut untuk memodifikasi Ingress:

      kubectl edit ingress https-ingress
    2. Tambahkan bidang tls dan tentukan nama domain yang terikat pada sertifikat dan Secret tempat sertifikat disimpan.

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: https-ingress
        namespace: default
      spec:
        ingressClassName: alb
        rules:
        - host: demo.alb.ingress.top
          http:
            #...
        tls:
        - hosts:
          - demo.alb.ingress.top # Atur nilai ini ke nama domain yang terikat pada sertifikat. Nama domain harus sama dengan nama domain yang ditentukan di bidang “rules: host“.
          secretName: https-secret
Catatan

Setelah Anda mengonfigurasi Secret, sertifikat bernama default-https-secret-****** secara otomatis diunggah ke halaman manajemen sertifikat SSL di konsol Layanan Manajemen Sertifikat. Instance ALB terkait secara otomatis membuat pendengar HTTPS:443.

Tentukan sertifikat dalam AlbConfigs

Setelah Anda mengunggah sertifikat tanda tangan sendiri ke Layanan Manajemen Sertifikat, Anda dapat menentukan ID sertifikat di bidang CertificateId dalam konfigurasi pendengar AlbConfig. Dengan cara ini, sertifikat terkait dengan pendengar.

Catatan

Jika pendengar terkait dengan sertifikat, Ingress tidak lagi menggunakan fitur penemuan sertifikat otomatis.

  1. Unggah sertifikat tanda tangan sendiri ke konsol Layanan Manajemen Sertifikat. Untuk informasi lebih lanjut, lihat Unggah dan Bagikan Sertifikat SSL.

  2. Peroleh ID Sertifikat.

    1. Masuk ke Konsol Layanan Manajemen Sertifikat.

    2. Di panel navigasi sisi kiri, pilih Certificate Management > SSL Certificate Management.

    3. Di halaman SSL Certificate Management, klik tab Manage Uploaded Certificates. Pilih sertifikat yang Anda unggah dan klik More di kolom Actions.

      Di panel Certificate Details, Anda dapat melihat ID sertifikat di bidang CertIdentifier.

Tentukan sertifikat dalam AlbConfig.

  1. Jalankan perintah berikut untuk memodifikasi AlbConfig:

    kubectl edit albconfig <ALBCONFIG_NAME> # Ganti <ALBCONFIG_NAME> dengan nama AlbConfig.
  2. Tambahkan bidang certificates ke konfigurasi pendengar AlbConfig dan tentukan certificate ID yang Anda peroleh di langkah sebelumnya.

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb
    spec:
      config:
        addressType: Intranet
        name: xiaosha-alb-test
      listeners:
        - port: 80
          protocol: HTTP
        - certificates:
            - CertificateId: 756****-cn-hangzhou   # ID sertifikat. 
              IsDefault: true                      # Tentukan apakah sertifikat adalah default. 
          port: 443
          protocol: HTTPS
  3. Jalankan perintah berikut untuk memodifikasi Ingress:

    kubectl edit ingress https-ingress
  4. Tambahkan anotasi alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS": 443}]'.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      annotations:
        alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS": 443}]'  # Bidang baru. Jika Anda ingin mendengarkan permintaan HTTP dan HTTPS, ubah nilainya menjadi '[{"HTTP": 80},{"HTTPS": 443}]'. 
      name: https-ingress
    spec:
      ingressClassName: https-ingressclass
      rules:
      - host: demo.alb.ingress.top # Ganti demo.alb.ingress.top dengan nama domain yang ingin Anda gunakan.
        http:
          paths:
          - backend:
              service:
                name: https-svc
                port:
                  number: 443
            path: /
            pathType: Prefix
Catatan

Setelah AlbConfig dikonfigurasi, instance ALB terkait secara otomatis membuat pendengar HTTPS:443.

Langkah 5: Verifikasi hasil

Akses aplikasi melalui HTTPS untuk memeriksa apakah sertifikat telah dikonfigurasi.

  1. Jalankan perintah berikut untuk menanyakan Ingress:

    kubectl get ingress

    Hasil 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-nilai di kolom HOSTS dan ADDRESS.

  2. Jalankan perintah berikut untuk mengakses Service backend dari ALB Ingress: Ganti demo.alb.ingress.top dan alb-********.alb.aliyuncs.com dengan nilai-nilai yang Anda peroleh di langkah sebelumnya.

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

    Jika keluaran berikut dikembalikan, sertifikat telah dikonfigurasi:

    old

Referensi