自定义 CA 证书

Dialogflow 网络钩子需要 HTTPS 端点,这些端点在通过 Google 的默认信任存储区进行验证时会提供有效的 TLS 证书。但是,您可能希望使用自定义 CA 证书,此类证书无法由 Google 的默认受信任证书存储区识别的证书授权机构签名。例如,Google 专用 VPC 网络中的 webhook 服务器存在这个问题。在这种情况下,您可以在创建网络钩子时将自定义证书上传到 Dialogflow,上传的证书会覆盖 Google 的默认信任存储区。

自定义 CA 证书可以是自签名证书,也可以是自定义根证书。如果要轮替证书,您可以上传多个证书。证书必须采用 DER 格式,并且必须使用与网络钩子网址匹配的主题备用名称进行签名。存在 keyUsage 扩展项时,其值必须为 digitalSignature

演示自签名服务器

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

  1. 准备自签名证书文件。我们使用 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
  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

使用自定义证书的演示网络钩子

使用自定义证书设置服务器后,您可以创建网络钩子资源,并遵循以下关于使用自定义证书的额外说明:

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