取得傳輸層安全標準 (TLS) 憑證:範例

本主題僅供參考。說明如何從憑證授權單位 (CA) Let's Encrypt 取得 TLS 憑證。這些步驟主要提供做為範例,供您在沒有其他方法取得由 CA 授權的憑證/金鑰組時參考。本範例說明如何使用 Let's Encrypt CA、Certbot 用戶端和 Google Cloud Platform 的 Cloud DNS 產生憑證。

可使用這些證書的地方

您必須為叢集外部公開的 Runtime 輸入閘道提供 TLS 憑證。

另請參閱「外部連線」。

需求條件

您需要透過網域名稱註冊商取得網域名稱。您可以透過 Google Domains 或您選擇的其他網域註冊商註冊網域名稱。

設定 Cloud DNS

如要取得授權的 TLS 憑證,您必須擁有合格的網域名稱。以下步驟說明如何使用 Google Cloud DNS 取得網域名稱,以及管理您的網域伺服器。
  1. 開啟 Google Cloud 控制台並登入帳戶。
  2. 選取已安裝 Apigee hybrid 的專案。
  3. 如果尚未啟用,請啟用 Cloud DNS API。請參閱啟用 API
  4. 建立靜態 IP 位址:
    • 如果您使用的是 GKE,請按照「 設定靜態外部 IP 位址」中的操作說明建立靜態 IP 位址,讓外部程序可用來與混合式執行階段 ingress 通訊。您可以為地址命名,名稱不限,例如 apigee-hybrid-runtime。完成後,您會在下一個步驟中使用叢集設定中的 IP 號碼。例如:34.66.75.196
    • 如果您使用 Google Distributed Cloud,請按照「 規劃 IP 位址」和「建立使用者叢集」中的操作說明建立靜態 IP 位址。
  5. 取得您剛剛保留的外部 IP。
  6. 為 Istio 執行階段的 ingress 端點建立記錄集。這是用於向混合型閘道發出 API 呼叫的位址。輸入上一個步驟取得的外部 IP,並在網域名稱前方加上前綴,例如 example-endpoint。如需操作說明,請參閱「建立新記錄」。
    1. 建立代管公開區域。如需操作說明,請參閱「 建立受管理的公開區域」。
    2. 使用下列方法建立新的記錄組合:
      • DNS 名稱:端點外部 API 呼叫會與之通訊的名稱,例如 api-servicesexample-endpoint
      • 資源記錄類型A
      • TTLTTL 單位:接受預設值
      • IP 位址:您建立的靜態 IP。
  7. 「區域詳細資料」檢視畫面會列出四個 DNS 伺服器,做為新區域的 NS 資料。複製 DNS 記錄資料,如以下範例所示:

  8. 返回註冊商 (例如 Google Domains) 的網域頁面。
  9. 選取您的網域。
  10. 選取「DNS」DNS
  11. 在「名稱伺服器」部分中,按一下「編輯」
  12. 輸入從 Network Services Cloud DNS 頁面複製的網域名稱伺服器。例如:

這樣一來,Google Cloud DNS 就會管理網域的 DNS 記錄。

在 VM 上安裝 Certbot

您已設定 Cloud DNS 來管理網域伺服器,現在將在 Cloud VM 上安裝 Certbot 用戶端,並使用 dns_google 外掛程式。您可以透過用戶端,從 Let's Encrypt 端點取得網域的授權憑證。

  1. 開啟 Google Cloud 控制台,然後使用您在步驟 1:建立 Google Cloud 帳戶中建立的帳戶登入。
  2. 選取您在步驟 2:建立 Google Cloud 專案中建立的專案。
  3. 依序選取「IAM 與管理」>「服務帳戶」

    「Service accounts」檢視畫面會列出專案的服務帳戶。

  4. 如要建立新的服務帳戶,請按一下檢視畫面頂端的「+Create Service Account」

    畫面上會顯示「Service account details」檢視畫面。

  5. 在「Service account name」欄位中輸入服務帳戶的名稱。

    您可以選擇在「服務帳戶說明」欄位中新增說明。說明可提醒您特定服務帳戶的用途。

  6. 按一下 [建立]。

    Google Cloud 會建立新的服務帳戶,並顯示「服務帳戶權限」檢視畫面。使用這個檢視畫面為新服務帳戶指派角色。

  7. 按一下「請選擇角色」下拉式清單。
  8. 選取「專案擁有者」角色。
  9. 按一下「繼續」
  10. 按一下 [完成]
  11. 在 Google Cloud 控制台中,依序選取「Compute Engine」>「VM 執行個體」
  12. 建立名為 certmanager 的 VM 執行個體。
  13. 在「Boot Disk」(開機磁碟) 部分下方,為 SSD 永久磁碟選擇 CentOS7 和 20 GB。
  14. 將服務帳戶設為您在上一步建立的帳戶。
  15. 在機器上安裝 Certbot 和 dns_google 外掛程式,然後執行 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
      

    例如:

    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. 您現在可以在這個目錄中找到授權憑證和私密金鑰檔案: cd /etc/letsencrypt/live/your_domain_name/

    例如:

    cd /etc/letsencrypt/live/apigee-hybrid-docs.net
    ls
      cert.pem  chain.pem  fullchain.pem  privkey.key  README
  17. fullchain.pemprivkey.key 檔案複製到本機電腦。
  18. 選用:使用憑證/金鑰組建立 Kubernetes 密鑰。請參閱「在 Istio ingress 上設定 TLS 和 mTLS」一文中的「選項 2:Kubernetes 密鑰」一節中的操作說明。
  19. 更新覆寫檔案,指向憑證和私密金鑰。

    例如:

    ...
    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.key"

    或者,如果使用 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"
    
    ...  
  20. 套用 envs 設定的變更:

    針對要更新的每個環境執行 helm upgrade

    helm upgrade ENV_NAME apigee-env/ \
      --namespace apigee \
      --set env=ENV_NAME \
      --atomic \
    -f OVERRIDES_FILE.yaml
    
  21. 測試設定

    部署及測試 Proxy。請參閱「建構第一個 API Proxy 總覽」。