Certificados de CA personalizados

Os webhooks do Dialogflow exigem endpoints HTTPS, e o certificado HTTPS é verificado 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 o upload dos certificados personalizados para o Dialoglow ao criar webhooks, e os certificados enviados substituirão o armazenamento 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.

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 -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. 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 webhook com as seguintes instruções extras para usar o certificado personalizado: