Dialogflow-Webhooks erfordern HTTPS-Endpunkte, die gültige TLS-Zertifikate präsentieren, wenn sie mit dem Standard-Trust-Store von Google bestätigt 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.
Selbst signierter Demoserver
Im Folgenden ist die Konfiguration eines Demoservers dargestellt:
- 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
- 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. -
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 eine Webhook-Ressource mit den folgenden zusätzlichen Anweisungen 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 (
server.der
in der vorherigen Demo) hoch. - Richten Sie bei Webhooks mit privatem Service Directory-Netzwerkzugriff den 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.