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

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

這些憑證的適用範圍

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

另請參閱「外部連線」。

需求條件

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

設定 Cloud DNS

如要取得授權的 TLS 憑證,您必須擁有合格的網域名稱。以下步驟說明如何使用 Google Cloud DNS 取得網域名稱,以及管理網域伺服器。
  1. 開啟 Google Cloud 控制台並登入帳戶。
  2. 選取安裝 Apigee Hybrid 的專案。
  3. 如果尚未啟用 Cloud DNS API,請執行此操作。請參閱「啟用 API」。
  4. 建立靜態 IP 位址:
    • 如果您使用 GKE,請按照「 設定靜態外部 IP 位址」一文中的操作說明,建立外部程序可用來與混合式執行階段 Ingress 通訊的靜態 IP 位址。您可以為地址命名,例如 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
      • 「存留時間」和「存留時間單位」:接受預設值
      • IP 位址:您建立的靜態 IP。
  7. 「區域詳細資料」檢視畫面會列出四個 DNS 伺服器,做為新區域的 NS 資料。複製 DNS 記錄資料,如下列範例所示:

  8. 返回註冊商的網域頁面 (例如 Google Domains)。
  9. 選取您的網域。
  10. 選取「DNS」
  11. 在「名稱伺服器」部分中,按一下「編輯」
  12. 輸入從「Network Services Cloud DNS」(網路服務 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 與管理」>「服務帳戶」

    「服務帳戶」檢視畫面會顯示專案的服務帳戶清單。

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

    系統會顯示「服務帳戶詳細資料」檢視畫面。

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

    你也可以在「服務帳戶說明」欄位中新增說明。說明有助於提醒您特定服務帳戶的用途。

  6. 按一下 [建立]。

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

  7. 按一下「選取角色」下拉式清單。
  8. 選取「專案擁有者」角色。
  9. 按一下「繼續」
  10. 按一下 [完成]
  11. 在 Google Cloud 控制台中,依序選取「Compute Engine」>「VM Instances」(VM 執行個體)
  12. 建立名為 certmanager 的 VM 執行個體。
  13. 在「開機磁碟」部分下方,選擇 CentOS7 和 20 GB 的 SSD 永久磁碟。
  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 Secret」一節。
  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 Secret:

    ...
    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 總覽」。