自定义 CA 证书

Dialogflow 网络钩子需要 HTTPS 端点,并且 HTTPS 证书使用 Google 的默认信任库进行验证。但是,您可能希望使用自定义 CA 证书,该证书不能由 Google 的默认信任库识别的证书授权机构签名。例如,Google 专用 VPC 网络内的网络钩子服务器就存在此问题。在这种情况下,您可以在创建网络钩子时将自定义证书上传到 Dialoglow,并且上传的证书将替换 Google 的默认信任库。

自定义 CA 证书可以是自签名证书或自定义根证书。如果您想要轮替证书,可以上传多个证书。证书必须采用 DER 格式,并且必须使用与网络钩子网址匹配的主题备用名称进行签名。

演示自签名服务器

以下是演示服务器的配置:

  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

使用自定义证书设置服务器后,您可以按照以下额外说明创建网络钩子资源,以利用自定义证书:

  • 设置与使用证书签名的网域匹配的网址(在上一演示中,该网址为 https://www.example.com)。您需要自行负责确保您的网域能够正确解析为服务器的 IP 地址。
  • 上传 DER 格式的自定义证书(在上一演示中,该证书为 server.der)。
  • 对于与 Service Directory 专用网络访问集成的网络钩子,请使用服务器的 IP 地址和端口设置 Service Directory 端点,并在创建网络钩子时提供 Service Directory 服务