Benutzerdefinierte CA-Zertifikate

Dialogflow-Webhooks erfordern HTTPS-Endpunkte, die gültige TLS-Zertifikate aufweisen, wenn sie mit dem Standard-Trust Store von Google verifiziert werden. Sie können jedoch auch benutzerdefinierte CA-Zertifikate verwenden, die nicht von einer Zertifizierungsstelle signiert werden können, die vom Standard-Trust Store von Google erkannt wird. Beispielsweise tritt dieses Problem bei Webhook-Servern auf, die sich im privaten VPC-Netzwerk von Google befinden. In diesem Fall können Sie die benutzerdefinierten Zertifikate beim Erstellen von Webhooks in Dialogflow hochladen. Die hochgeladenen Zertifikate überschreiben dann den standardmäßigen Trust Store von Google.

Benutzerdefinierte CA-Zertifikate können selbst signierte oder benutzerdefinierte Root-Zertifikate sein. Für den Fall, dass Sie die Zertifikate rotieren möchten, können Sie mehrere Zertifikate hochladen. Die Zertifikate müssen im DER-Format vorliegen und mit einem alternativen Antragstellernamen signiert werden, der der Webhook-URL entspricht. Wenn die Erweiterung keyUsage vorhanden ist, muss ihr Wert digitalSignature sein.

Selbst signierter Demoserver

Im Folgenden ist die Konfiguration eines Demoservers dargestellt:

  1. Bereiten Sie selbst signierte Zertifikatsdateien vor. Wir verwenden www.example.com als Beispieldomain.
    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. Starten Sie Ihren HTTPS-Server mit dem Serverzertifikat (server.crt) und dem privaten Schlüssel (server.key), die im vorherigen Schritt erstellt wurden. Wir gehen davon aus, dass der Server Port 443 überwacht.
  3. Testen Sie lokal eine Verbindung zum Server.
    curl --cacert server.crt https://www.example.com --resolve www.example.com:443:127.0.0.1

Demo-Webhook mit benutzerdefiniertem Zertifikat

Nachdem Sie den Server mit Ihrem benutzerdefinierten Zertifikat eingerichtet haben, können Sie mit den folgenden zusätzlichen Anweisungen eine Webhook-Ressource erstellen, um das benutzerdefinierte Zertifikat zu verwenden:

  • Legen Sie die URL fest, die mit der mit dem Zertifikat signierten Domain übereinstimmt (in der vorherigen Demo https://www.example.com). Sie müssen selbst dafür sorgen, dass Ihre Domain korrekt zur IP-Adresse des Servers aufgelöst wird.
  • Laden Sie das benutzerdefinierte Zertifikat im DER-Format hoch. Dies ist die Datei server.der in der vorherigen selbst signierten Demo oder das benutzerdefinierte Root-Zertifikat.
  • Bei Webhooks, die in den privaten Netzwerkzugriff auf Service Directory eingebunden sind, richten Sie Ihren Service Directory-Endpunkt mit der IP-Adresse und dem Port Ihres Servers ein und geben Sie beim Erstellen des Webhooks den Service Directory-Dienst an.