全部产品
Search
文档中心

:Konfigurasikan sertifikat HTTPS

更新时间:Jul 02, 2025

Setelah mengonfigurasi sertifikat HTTPS, Anda dapat menerapkan enkripsi Transport Layer Security (TLS) atau Secure Socket Layer (SSL) untuk layanan yang diterapkan melalui gateway Ingress Microservices Engine (MSE). Langkah ini penting untuk melindungi keamanan data aplikasi web modern dan layanan API. Sertifikat HTTPS digunakan untuk mengenkripsi transmisi data antara klien dan server melalui gateway, mencegah pihak ketiga tidak berwenang mencuri atau memalsukan informasi sensitif serta melindungi dari serangan man-in-the-middle.

Prasyarat

Metode konfigurasi

Gateway Ingress MSE memungkinkan Anda mengonfigurasi sertifikat HTTPS menggunakan Kubernetes Secret atau di konsol MSE.

Item

Kubernetes Secret

MSE console

Skenario

  • Sertifikat dikelola berdasarkan konfigurasi anotasi.

  • Sertifikat dikelola secara otomatis menggunakan pipeline CI/CD atau alat cert-manager.

  • Sertifikat dikelola di konsol Layanan Manajemen Sertifikat Alibaba Cloud.

  • Sertifikat diterapkan ke beberapa layanan Alibaba Cloud seperti Web Application Firewall (WAF) dan Server Load Balancer (SLB).

  • Beberapa sertifikat diterapkan atau diganti pada saat yang sama.

Prioritas

Rendah.

Tinggi.

Dukungan lintas namespace

Tidak didukung.

Didukung.

Pembaruan sertifikat

Ganti konten Kubernetes Secret.

Ganti sertifikat di konsol MSE, atau terapkan sertifikat baru untuk menggantikan sertifikat yang ada di konsol Layanan Manajemen Sertifikat Alibaba Cloud.

Terapkan layanan backend

  1. Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.

  2. Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel sebelah kiri, pilih Workloads > Deployments.

  3. Di halaman Deployments, klik Create from YAML. Gunakan kode YAML berikut untuk menerapkan deployment bernama httpbin dan layanan bernama httpbin.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: httpbin
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: httpbin
      template:
        metadata:
          labels:
            app: httpbin
            version: v1
        spec:
          containers:
            - image: registry.cn-hangzhou.aliyuncs.com/mse-ingress/go-httpbin
              args:
                - "--version=v1"
              imagePullPolicy: Always
              name: httpbin
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: httpbin
      namespace: default
    spec:
      ports:
        - port: 8080
          protocol: TCP
      selector:
        app: httpbin

Konfigurasikan sertifikat HTTPS

Konfigurasikan sertifikat HTTPS menggunakan Kubernetes Secret

Anda dapat mengonfigurasi sertifikat HTTPS untuk nama domain menggunakan semantik asli Ingress untuk merujuk ke Kubernetes Secret.

  1. Siapkan sertifikat nama domain. Dalam contoh ini, sertifikat tanda tangan sendiri disiapkan.

    Catatan

    Dalam skenario produksi, Anda harus mengganti kunci dan sertifikat contoh dengan kunci dan sertifikat aktual. Anda dapat mengunduh kunci dan sertifikat nama domain dari konsol Layanan Manajemen Sertifikat Alibaba Cloud.

    1. Jalankan perintah berikut untuk menghasilkan file sertifikat bernama tls.crt dan file kunci privat bernama tls.key:

      openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=foo.bar.com/O=foo.bar.com"
    2. Buat Secret untuk menyimpan sertifikat TLS.

      1. Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.

      2. Di halaman Clusters, klik nama kluster yang ingin Anda ubah. Di panel sebelah kiri, pilih Configurations > Secrets.

      3. Klik Create. Di panel Create, atur Name menjadi tls-test, atur Type menjadi TLS Certificate, salin file tls.crt dan tls.key ke bidang terkait, lalu klik OK.

      image.png

  2. Buat aturan MSE Ingress dan konfigurasikan Sertifikat HTTPS untuk nama domain foo.bar.com.

    1. Di panel navigasi sebelah kiri, pilih Network > Ingresses.

    2. Di halaman Ingresses, klik Create Ingress.

    3. Di kotak dialog Create Ingress, pilih MSE Cloud-native Gateway untuk Gateway Type, tentukan informasi seperti services, annotations, dan certificates yang terkait dengan layanan backend, lalu klik OK.

      Atur Ingress Class menjadi mse. Di aturan yang ingin Anda tambahkan, pilih Prefix (Prefix-based Match) dari daftar drop-down Rule, masukkan / di kolom Path, pilih httpbin dari daftar drop-down Service, lalu konfigurasikan sertifikat domain dengan merujuk pada Kubernetes Secret.

      16621a99be546fbf7a3f98d7013cfeda

  3. Uji lalu lintas HTTPS. Jalankan perintah berikut untuk menguji lalu lintas. Ganti x.x.x.x dengan alamat IP sebenarnya dari gateway Anda. Anda dapat melihat alamat IP gateway di halaman Ingresses.

    Catatan

    Dalam contoh ini, sertifikat tanda tangan sendiri digunakan dan nama domain tidak didaftarkan dengan penyedia layanan DNS. Dalam kasus ini, Anda harus secara manual menyelesaikan nama domain ke alamat IP gateway dengan menggunakan --resolve dan melewati pemeriksaan validitas sertifikat dengan menggunakan -k.

    curl -v -k https://foo.bar.com/version --resolve "foo.bar.com:443:x.x.x.x"

    Output yang diharapkan:

    * Terhubung ke foo.bar.com (X.X.X.X) port 443 (#0)
    * ALPN, menawarkan h2
    * ALPN, menawarkan http/1.1
    * berhasil menetapkan lokasi verifikasi sertifikat:
    *   CAfile: /etc/ssl/cert.pem
      CApath: none
    * TLSv1.2 (OUT), Proses jabat tangan TLS, Client hello (1):
    * TLSv1.2 (IN), Proses jabat tangan TLS, Server hello (2):
    * TLSv1.2 (IN), Proses jabat tangan TLS, Sertifikat (11):
    * TLSv1.2 (IN), Proses jabat tangan TLS, Pertukaran kunci server (12):
    * TLSv1.2 (IN), Proses jabat tangan TLS, Server selesai (14):
    * TLSv1.2 (OUT), Proses jabat tangan TLS, Pertukaran kunci klien (16):
    * TLSv1.2 (OUT), Perubahan sandi TLS, Ubah spesifikasi sandi (1):
    * TLSv1.2 (OUT), Proses jabat tangan TLS, Selesai (20):
    * TLSv1.2 (IN), Perubahan sandi TLS, Ubah spesifikasi sandi (1):
    * TLSv1.2 (IN), Proses jabat tangan TLS, Selesai (20):
    * Koneksi SSL menggunakan TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
    * ALPN, server menerima penggunaan http/1.1
    * Sertifikat server:
    *  subjek: CN=foo.bar.com; O=foo.bar.com
    *  tanggal mulai: 17 Jan 06:47:23 2024 GMT
    *  tanggal kedaluwarsa: 16 Jan 06:47:23 2025 GMT
    *  penerbit: CN=foo.bar.com; O=foo.bar.com
    *  Hasil verifikasi sertifikat SSL: sertifikat tanda tangan sendiri (18), tetap melanjutkan.
    > GET /version HTTP/1.1
    > Host: foo.bar.com
    > User-Agent: curl/7.64.1
    > Accept: */*
    >
    < HTTP/1.1 200 OK
    < date: Rab, 17 Jan 2024 07:49:39 GMT
    < content-length: 53
    < content-type: text/plain; charset=utf-8
    < req-cost-time: 3
    < req-arrive-time: 1705477779046
    < resp-start-time: 1705477779049
    < x-envoy-upstream-service-time: 2
    < server: istio-envoy
    <
    version: v1
    hostname: httpbin-xxxxxx

Konfigurasikan Sertifikat HTTPS di Konsol MSE

Anda dapat mengonfigurasi sertifikat untuk nama domain di konsol MSE. Dengan cara ini, Anda tidak perlu merujuk pada Kubernetes Secret di Ingress. Anda hanya perlu mengonfigurasi aturan routing.

Penting

Untuk nama domain yang sama, metode menggunakan konsol MSE memiliki prioritas lebih tinggi dibandingkan dengan metode menggunakan Kubernetes Secret. Jika Anda mengonfigurasi sertifikat untuk nama domain yang sama baik di konsol MSE maupun di Kubernetes Ingress, sertifikat yang dikonfigurasi di konsol MSE akan memiliki prioritas.

  1. Siapkan sertifikat nama domain. Dalam contoh ini, sertifikat tanda tangan sendiri telah disiapkan.

    Catatan

    Dalam skenario produksi, Anda harus mengganti kunci dan sertifikat contoh dengan kunci dan sertifikat sebenarnya. Anda dapat mengunduh kunci dan sertifikat nama domain dari konsol Layanan Manajemen Sertifikat Alibaba Cloud.

    1. Jalankan perintah berikut untuk menghasilkan file sertifikat bernama tls.crt dan file kunci privat bernama tls.key:

    openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=foo.bar.com/O=foo.bar.com"
    1. Unggah sertifikat tanda tangan sendiri ke konsol Layanan Manajemen Sertifikat Alibaba Cloud. Untuk informasi lebih lanjut, lihat Unggah dan bagikan sertifikat SSL. Jika sertifikat Anda dikelola oleh konsol Layanan Manajemen Sertifikat Alibaba Cloud, lanjutkan ke langkah berikutnya.

  2. Buat nama domain dan konfigurasikan sertifikat.

    1. Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.

    2. Di panel navigasi sisi kiri, pilih Cloud-native Gateway > Gateways. Pada halaman Gateways, klik ID gateway.

    3. Domain Names

    4. Klik Add Domain Name. Di panel Add Domain Name, masukkan foo.bar.com di bidang Domain Name, pilih HTTPS dari daftar drop-down Protocol, lalu pilih sertifikat dari daftar drop-down Certificate.

      image.png

  3. Buat MSE Ingress.

    1. Masuk ke Konsol ACK. Di panel navigasi sisi kiri, klik Clusters.

    2. Pada halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel sisi kiri, pilih Network > Ingresses.

    3. Pada halaman Ingresses, klik Create Ingress.

    4. Di kotak dialog Create Ingress, pilih MSE Ingress untuk Gateway Type, tentukan parameter yang terkait dengan layanan backend seperti service name dan annotations, lalu klik OK.

      Atur Ingress Class menjadi mse. Di aturan yang ingin ditambahkan, pilih Prefix (Prefix-based Match) dari daftar drop-down Rule, masukkan / di bidang Path, lalu pilih httpbin dari daftar drop-down Service.

      Catatan

      Anda tidak perlu mengonfigurasi sertifikat TLS.

      image.png

  4. Uji lalu lintas HTTPS. Jalankan perintah berikut untuk menguji lalu lintas. Ganti x.x.x.x dengan alamat IP sebenarnya dari gateway Anda. Anda dapat melihat alamat IP gateway di halaman Ingresses.

    Catatan

    Dalam contoh ini, sertifikat tanda tangan sendiri digunakan dan nama domain belum didaftarkan dengan penyedia layanan DNS. Dalam kasus ini, Anda harus secara manual menyelesaikan nama domain ke alamat IP gateway dengan menggunakan --resolve dan melewati pemeriksaan validitas sertifikat dengan menggunakan -k.

    curl -v -k https://foo.bar.com/version --resolve "foo.bar.com:443:x.x.x.x"

    Output yang diharapkan:

    * Connected to foo.bar.com (X.X.X.X) port 443 (#0)
    * ALPN, offering h2
    * ALPN, offering http/1.1
    * successfully set certificate verify locations:
    *   CAfile: /etc/ssl/cert.pem
      CApath: none
    * TLSv1.2 (OUT), TLS handshake, Client hello (1):
    * TLSv1.2 (IN), TLS handshake, Server hello (2):
    * TLSv1.2 (IN), TLS handshake, Certificate (11):
    * TLSv1.2 (IN), TLS handshake, Server key exchange (12):
    * TLSv1.2 (IN), TLS handshake, Server finished (14):
    * TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
    * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
    * TLSv1.2 (OUT), TLS handshake, Finished (20):
    * TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
    * TLSv1.2 (IN), TLS handshake, Finished (20):
    * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
    * ALPN, server accepted to use http/1.1
    * Server certificate:
    *  subject: CN=foo.bar.com; O=foo.bar.com
    *  start date: Jan 17 06:47:23 2024 GMT
    *  expire date: Jan 16 06:47:23 2025 GMT
    *  issuer: CN=foo.bar.com; O=foo.bar.com
    *  SSL certificate verify result: self signed certificate (18), continuing anyway.
    > GET /version HTTP/1.1
    > Host: foo.bar.com
    > User-Agent: curl/7.64.1
    > Accept: */*
    >
    < HTTP/1.1 200 OK
    < date: Wed, 17 Jan 2024 08:16:27 GMT
    < content-length: 46
    < content-type: text/plain; charset=utf-8
    < req-cost-time: 5
    < req-arrive-time: 1705479387567
    < resp-start-time: 1705479387573
    < x-envoy-upstream-service-time: 4
    < server: istio-envoy
    <
    version: v1
    hostname: httpbin-xxxxxx