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