カスタム CA 証明書

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

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

自己署名サーバーのデモ

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

  1. 自己署名証明書ファイルを準備します。サンプル ドメインとして www.example.com を使用します。
    openssl genrsa -out server.key 2048
    openssl req -nodes -new -key server.key -subj "/CN=www.example.com" -out server.csr
    openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt -extfile %3C(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 リソースを作成し、カスタム証明書を利用できます。