对话式代理 (Dialogflow CX) Webhook 需要 HTTPS 端点,这些端点在通过 Google 的默认信任库进行验证时会提供有效的 TLS 证书。不过,您可能需要使用自定义 CA 证书,而这些证书无法由 Google 的默认信任库识别的证书授权机构签名。例如,位于 Google 私有 VPC 网络内的 Webhook 服务器就存在此问题。在这种情况下,您可以在创建 Webhook 时将自定义证书上传到 Conversational Agents (Dialogflow CX),上传的证书将替换 Google 的默认信任库。
自定义 CA 证书可以是自签名证书,也可以是自定义根证书。如果您想轮换证书,可以上传多个证书。证书必须采用 DER 格式,并且必须使用与网络钩子网址匹配的主题备用名称进行签名。如果存在 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 资源,以使用自定义证书:
- 设置与证书签名的网域相匹配的网址(在上一演示中,该网址为
https://www.example.com)。您有责任确保您的网域能够正确解析为服务器的 IP 地址。 - 上传 DER 格式的自定义证书。这是之前自签名演示中的
server.der文件或自定义根证书。 - 对于与 Service Directory 专用网络访问集成的网络钩子,请使用服务器的 IP 地址和端口设置 Service Directory 端点,并在创建网络钩子时提供 Service Directory 服务。