カスタム CA 証明書

Dialogflow Webhook では、Google のデフォルトのトラストストアを使用して検証されるときに、有効な TLS 証明書を提示する HTTPS エンドポイントが必要です。ただし、Google のデフォルトのトラストストアによって認識される認証局が署名できないカスタム CA 証明書を使用することもできます。たとえば、Google のプライベート VPC ネットワーク内にある Webhook サーバーには、この問題があります。この場合、Webhook の作成時にカスタム証明書を Dialogflow にアップロードすると、アップロードされた証明書が Google のデフォルトのトラストストアよりも優先されます。

カスタム CA 証明書は、自己署名証明書またはカスタムルート証明書です。証明書をローテーションする場合に備えて、複数の証明書をアップロードできます。証明書は DER 形式にする必要があり、Webhook URL と一致するサブジェクト代替名で署名されている必要があります。

自己署名サーバーのデモ

デモサーバーの構成は次のとおりです。

  1. 自己署名証明書ファイルを準備します。サンプル ドメインとして 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
  2. 前の手順で作成したサーバー証明書(server.crt)と秘密鍵(server.key)を使用して、HTTPS サーバーを起動します。 サーバーがポート 443 をリッスンしていると想定します。
  3. ローカルでサーバーに接続してテストします。
    curl --cacert server.crt https://www.example.com --resolve www.example.com:443:127.0.0.1

カスタム証明書を使用した Webhook のデモ

カスタム証明書を使用してサーバーを設定したら、カスタム証明書を使用するための次の追加の手順を使用して Webhook リソースを作成できます。