Mendapatkan sertifikat TLS: Contoh

Topik ini hanya dimaksudkan sebagai contoh. Dokumen ini menjelaskan cara mendapatkan sertifikat TLS dari otoritas sertifikat (CA) Let's Encrypt. Langkah-langkah ini diberikan terutama sebagai contoh untuk diikuti jika Anda tidak memiliki cara lain untuk mendapatkan sertifikat/kunci yang diizinkan oleh CA. Contoh ini menunjukkan cara membuat sertifikat menggunakan CA Let's Encrypt, Klien Certbot, dan DNS Cloud Google Cloud Platform.

Tempat Anda dapat menggunakan sertifikat ini

Anda harus memberikan sertifikat TLS untuk dua gateway masuk Istio yang terekspos di luar cluster:

Gateway Persyaratan TLS
Gateway masuk runtime Anda dapat menggunakan pasangan sertifikat/kunci yang ditandatangani sendiri atau sertifikat TLS yang diotorisasi.
Gateway masuk MART (opsional saat tidak menggunakan Apigee Connect) Memerlukan pasangan sertifikat/kunci TLS yang diotorisasi atau secret Kubernetes.
Lihat juga Koneksi eksternal.

Persyaratan

Anda akan memerlukan nama domain yang diperoleh melalui pendaftar nama domain. Anda dapat mendaftarkan nama domain melalui Google Domains atau registrar domain lainnya pilihan Anda.

Mengonfigurasi Cloud DNS

Untuk mendapatkan sertifikat TLS yang diotorisasi, Anda harus memiliki nama domain yang memenuhi syarat. Hal berikut langkah yang menjelaskan cara menggunakan Google Cloud DNS untuk mendapatkan nama domain dan mengelola server domain Anda.
  1. Buka Konsol Google Cloud dan login dengan akun yang Anda buat di Langkah 1: Buat akun Google Cloud.
  2. Pilih project yang Anda buat di Langkah 2: Buat project GCP.
  3. Jika Anda belum melakukannya, aktifkan Cloud DNS API. Lihat Mengaktifkan API.
  4. Buat alamat IP statis:
    • Jika Anda menggunakan GKE, ikuti petunjuk di Melakukan reservasi alamat IP eksternal statis untuk membuat alamat IP statis yang diproses eksternal dapat digunakan untuk berkomunikasi dengan ingress runtime hybrid. Anda dapat memberi nama apa pun pada alamat yang Anda inginkan, misalnya: apigee-hybrid-runtime. Setelah selesai, Anda akan menggunakan IP di konfigurasi cluster pada langkah berikutnya. Contoh: 34.66.75.196
    • Jika Anda menggunakan Anthos GKE, ikuti petunjuk di dokumentasi Anthos GKE untuk membuat alamat IP statis.
  5. Dapatkan IP Eksternal yang baru saja Anda cadangkan.
  6. Membuat kumpulan data untuk endpoint masuk Istio runtime. Ini adalah alamat untuk membuat API panggilan ke gateway hybrid. Masukkan IP Eksternal yang Anda peroleh di langkah sebelumnya dan tambahkan awalan ke nama domain, seperti example-endpoint. Untuk mengetahui petunjuknya, lihat Buat data baru.
    1. Membuat zona publik terkelola. Untuk petunjuk, lihat Membuat zona publik terkelola.
    2. Buat kumpulan data baru dengan:
      • Nama DNS: Nama panggilan API eksternal endpoint yang akan berkomunikasi dengan, seperti api-services atau example-endpoint
      • Jenis Data Resource: A
      • TTL dan Unit TTL: Menerima setelan default
      • IP Adddress: IP statis yang Anda buat.
  7. Tampilan Detail zona akan mencantumkan server DNS sebagai data NS untuk zona waktu. Salin data data DNS, seperti yang ditunjukkan pada contoh berikut:

  8. Kembali ke halaman domain di registrar Anda (misalnya, Google Domain).
  9. Pilih domain Anda.
  10. Pilih DNS.
  11. Di bagian Server Nama, klik Edit.
  12. Masukkan server nama domain yang Anda salin dari Cloud DNS Layanan Jaringan kami. Contoh:

Sekarang, DNS Google Cloud Anda akan mengelola data DNS untuk domain Anda.

Menginstal Certbot di VM

Setelah Cloud DNS disiapkan untuk mengelola server domain, Anda akan menginstal klien Certbot dengan dns_google di VM Cloud. Klien memungkinkan Anda untuk mendapatkan sertifikat resmi untuk domain Anda dari endpoint Let's Encrypt.

  1. Buka Konsol Google Cloud dan login dengan akun yang Anda buat di Langkah 1: Buat akun Google Cloud.
  2. Pilih project yang Anda buat di Langkah 2: Buat project GCP.
  3. Pilih IAM & admin > Akun layanan.

    Tampilan akun layanan menampilkan daftar akun layanan project.

  4. Untuk membuat akun layanan baru, klik +Create Service Account di bagian atas tampilan.

    Tampilan Detail akun layanan akan ditampilkan.

  5. Di kolom Nama akun layanan, masukkan nama akun layanan.

    Anda dapat menambahkan deskripsi di Deskripsi akun layanan (opsional) kolom tersebut. Deskripsi sangat membantu untuk mengingatkan Anda tentang penggunaan akun layanan tertentu untuk mereka.

  6. Klik Create.

    GCP membuat akun layanan baru dan menampilkan Akun layanan izin akses. Gunakan tampilan ini untuk menetapkan peran ke akun layanan yang baru.

  7. Klik menu drop-down Select a role.
  8. Pilih peran Project Owner.
  9. Klik Lanjutkan.
  10. Klik Done.
  11. Di konsol GCP, pilih Compute Engine > Instance VM.
  12. Buat instance VM dengan nama certmanager.
  13. Di bawah bagian Boot Disk, pilih CentOS7 and 20 GB untuk persistent drive SSD.
  14. Setel Akun Layanan ke akun yang Anda buat di atas.
  15. Instal Certbot dan dns_google plugin pada komputer dan jalankan klien Certbot:
      sudo su -
      yum -y install yum-utils
      yum install certbot -y
      yum install certbot-dns-google -y
      certbot certonly --dns-google -d *.your_domain_name,*.your_domain_name --server https://acme-v02.api.letsencrypt.org/directory
      

    Contoh:

    sudo su -
    yum -y install yum-utils
    yum install certbot -y
    yum install certbot-dns-google -y
    certbot certonly --dns-google -d *.apigee-hybrid-docs.net,*.apigee-hybrid-docs.net --server https://acme-v02.api.letsencrypt.org/directory
  16. Sekarang Anda dapat menemukan sertifikat yang diotorisasi dan file kunci pribadi dalam direktori ini: cd /etc/letsencrypt/live/your_domain_name/

    Contoh:

    cd /etc/letsencrypt/live/apigee-hybrid-docs.net
    ls
      cert.pem  chain.pem  fullchain.pem  privkey.pem  README
  17. Salin file fullchain.pem dan privkey.pem ke komputer lokal.
  18. Opsional: Buat secret Kubernetes dengan pasangan sertifikat/kunci. Lihat petunjuknya di Opsi 2: Rahasia Kubernetes di Mengonfigurasi TLS dan mTLS pada traffic masuk Istio.
  19. Perbarui file penggantian agar mengarah ke sertifikat dan kunci pribadi.

    Contoh:

    ...
    envs:
      - name: test
        serviceAccountPaths:
          synchronizer: "your_keypath/synchronizer-manager-service-account.json
          udca: "your_keypath/analytic-agent-service-account.json
    
    virtualhosts:
      - name: my-env-group
        sslCertPath: "$HOME/hybrid/apigee-hybrid-setup/tls/fullchain.pem"
        sslKeyPath: "$HOME/hybrid/apigee-hybrid-setup/tls/privkey.pem"
    
    mart: # Assuming you are not using Apigee Connect
      nodeSelector:
        key: cloud.google.com/gke-nodepool
        value: apigee-runtime
      sslCertPath: "$HOME/hybrid/apigee-hybrid-setup/tls/fullchain.pem"
      sslKeyPath: "$HOME/hybrid/apigee-hybrid-setup/tls/privkey.pem"
      replicaCountMin: 1
      replicaCountMax: 1

    Atau jika menggunakan secret Kubernetes:

    ...
    envs:
      - name: test
        serviceAccountPaths:
          synchronizer: "your_keypath/synchronizer-manager-service-account.json
          udca: "your_keypath/analytic-agent-service-account.json
    
    virtualhosts:
      - name: my-env-group
        tlsMode: SIMPLE  # Note: SIMPLE is the default, MUTUAL is also an available value.
        sslSecret: myorg-test-policy-secret"
    
    mart: # Assuming you are not using Apigee Connect
      nodeSelector:
        key: cloud.google.com/gke-nodepool
        value: apigee-runtime
        sslSecret: myorg-test-policy-secret"
      replicaCountMin: 1
      replicaCountMax: 1
    
    ...  
  20. Terapkan perubahan:

    Jika Anda mengubah konfigurasi mart, terapkan perubahan tersebut:

    apigeectl apply -f your_overrides_file --all-envs

    Jika Anda mengubah konfigurasi envs, terapkan perubahan tersebut:

    apigeectl apply -f your_overrides_file --all-envs
  21. Menguji konfigurasi

    Deploy dan uji proxy, seperti yang dijelaskan dalam Membuat dan men-deploy proxy API baru.