對話方塊服務 (Dialogflow CX) 的 webhook 要求 HTTPS 端點在使用 Google 的預設信任存放區進行驗證時,必須出示有效的 TLS 憑證。不過,您可能會想使用自訂 CA 憑證,但這類憑證無法由 Google 的預設信任儲存庫認可的憑證授權單位簽署。舉例來說,Google 私人 VPC 網路中的 webhook 伺服器就會發生這個問題。在這種情況下,您可以在建立 webhook 時,將自訂憑證上傳至 Conversational Agents (Dialogflow CX),上傳的憑證會覆寫 Google 的預設信任存放區。
自訂 CA 憑證可以是自行簽署的憑證或自訂根憑證。您可以上傳多個憑證,以便輪替憑證。憑證必須為 DER 格式,且必須使用與 webhook 網址相符的主體備用名稱進行簽署。如果有 keyUsage 擴充資料,其值必須為 digitalSignature
。
示範自行簽署的伺服器
以下是示範伺服器的設定:
- 準備自行簽署的憑證檔案。
我們會使用 www.example.com 做為範例網域。
openssl genrsa -out server.key 2048 openssl req -nodes -new -sha256 -newkey rsa:2048 -key server.key -subj "/CN=www.example.com" -out server.csr openssl x509 -req -days 3650 -sha256 -in server.csr -signkey server.key -out server.crt -extfile <(printf "\nsubjectAltName='DNS:www.example.com'") openssl x509 -in server.crt -out server.der -outform DER
- 使用上一個步驟建立的伺服器憑證 (
server.crt
) 和私密金鑰 (server.key
) 啟動 HTTPS 伺服器。我們假設伺服器會監聽 443 通訊埠。 -
測試是否可在本機連線至伺服器。
curl --cacert server.crt https://www.example.com --resolve www.example.com:443:127.0.0.1
使用自訂憑證的 Webhook 示範
使用自訂憑證設定伺服器後,您可以按照下列額外操作說明建立 webhook 資源,以便使用自訂憑證:
- 設定與使用憑證簽署的網域相符的網址 (前一個示範中的
https://www.example.com
)。您有責任確保網域能正確解析為伺服器的 IP 位址。 - 以 DER 格式上傳自訂憑證。這是先前自行簽署示範或自訂根憑證中的
server.der
檔案。 - 如果 webhook 已整合 Service Directory 私人網路存取權,請使用伺服器的 IP 位址和連接埠,設定Service Directory 端點,並在建立 webhook 時提供 Service Directory 服務。