カスタム CA 証明書

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

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

自己署名サーバーのデモ

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

  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 リソースを作成できます。

  • 証明書で署名されたドメイン(前のデモの https://www.example.com)と一致する URL を設定します。お客様自身が責任を持って、ドメインがサーバーの IP アドレスに正しく解決されるようにしてください。
  • カスタム証明書を DER 形式でアップロードします。これは、以前の自己署名デモの server.der ファイル、またはカスタムルート証明書です。
  • Service Directory のプライベート ネットワーク アクセスと統合された Webhook の場合は、IP アドレスとポートを使用した Service Directory エンドポイントを設定し、Webhook の作成時に Service Directory サービスを指定します。