Certificados de CA personalizados

Os webhooks do Dialogflow exigem endpoints HTTPS que apresentem certificados TLS válidos quando eles são verificados usando o armazenamento de confiança padrão do Google. No entanto, você pode usar certificados de CA personalizados, que não podem ser assinados por uma autoridade de certificação reconhecida pelo armazenamento de confiança padrão do Google. Por exemplo, os servidores webhook que estão dentro da rede VPC privada do Google têm esse problema. Nesse caso, é possível fazer upload dos certificados personalizados para o Dialogflow ao criar webhooks, e os certificados enviados modificarão o repositório de confiança padrão do Google.

Os certificados de CA personalizados podem ser certificados autoassinados ou certificados raiz personalizados. É possível fazer upload de vários certificados, caso você queira alterná-los. Os certificados precisam estar no formato DER e serem assinados com o nome alternativo do assunto correspondente ao URL do webhook. Quando a extensão keyUsage está presente, o valor dela precisa ser digitalSignature.

Servidor autoassinado de demonstração

Veja a seguir a configuração de um servidor de demonstração:

  1. Prepare arquivos de certificado autoassinados. Usamos www.exemplo.com como o domínio de exemplo.
    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. Inicie o servidor HTTPS usando o certificado de servidor (server.crt) e a chave privada (server.key) criadas na etapa anterior. Presumimos que o servidor esteja escutando na porta 443.
  3. Faça um teste para se conectar localmente ao servidor.
    curl --cacert server.crt https://www.example.com --resolve www.example.com:443:127.0.0.1

Webhook de demonstração com certificado personalizado

Depois de configurar o servidor com o certificado personalizado, crie um recurso de webhook com as seguintes instruções extras para usar o certificado personalizado:

  • Defina o URL correspondente ao domínio assinado com o certificado (https://www.example.com na demonstração anterior). É sua responsabilidade garantir que o domínio será resolvido corretamente para o endereço IP do servidor.
  • Faça upload do certificado personalizado no formato DER. Este é o arquivo server.der na demonstração autoassinado anterior ou o certificado raiz personalizado.
  • Para webhooks integrados ao acesso à rede privada do diretório de serviços, configure o endpoint do diretório de serviços com o endereço IP e a porta do servidor e forneça o serviço do diretório de serviços ao criar o webhook.