对话式 AI 助理 (Dialogflow CX) Webhook 进行验证时,需要 HTTPS 端点提供有效的 TLS 证书。不过,您可能需要使用自定义 CA 证书,而这些证书不能由 Google 的默认信任库认可的证书授权机构签名。例如,位于 Google 专用 VPC 网络中的 webhook 服务器就会出现此问题。在这种情况下,您可以在创建 webhook 时将自定义证书上传到对话式客服 (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 服务。