대화형 에이전트(Dialogflow CX) 웹훅에는 Google의 기본 트러스트 저장소를 사용하여 인증할 때 유효한 TLS 인증서를 제공하는 HTTPS 엔드포인트가 필요합니다. 하지만 Google의 기본 신뢰 저장소에서 인식하는 인증 기관이 서명할 수 없는 커스텀 CA 인증서를 사용해야 하는 경우도 있습니다. 예를 들어 Google의 비공개 VPC 네트워크 내에 있는 웹훅 서버에 이러한 문제가 있습니다. 이 경우 웹훅을 만들 때 커스텀 인증서를 대화형 에이전트(Dialogflow CX)에 업로드할 수 있으며 업로드된 인증서가 Google의 기본 신뢰 저장소를 재정의합니다.
커스텀 CA 인증서는 자체 서명 인증서 또는 커스텀 루트 인증서일 수 있습니다. 인증서를 교체하려는 경우 여러 인증서를 업로드할 수 있습니다. 인증서는 DER 형식이어야 하며 웹훅 URL과 일치하는 주체 대체 제목으로 서명되어야 합니다. keyUsage 확장 프로그램이 있는 경우 값은 digitalSignature여야 합니다.
자체 서명된 데모 서버
다음은 데모 서버의 구성입니다.
자체 서명된 인증서 파일을 준비합니다.
여기서는 www.example.com을 예시 도메인으로 사용합니다.
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["이해하기 어려움","hardToUnderstand","thumb-down"],["잘못된 정보 또는 샘플 코드","incorrectInformationOrSampleCode","thumb-down"],["필요한 정보/샘플이 없음","missingTheInformationSamplesINeed","thumb-down"],["번역 문제","translationIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-09-04(UTC)"],[[["\u003cp\u003eDialogflow CX webhooks, which require HTTPS endpoints, can utilize custom CA certificates when the default Google trust store is insufficient, such as for servers within Google's private VPC network.\u003c/p\u003e\n"],["\u003cp\u003eCustom certificates, either self-signed or custom root certificates, must be in DER format and include a subject alternative name that matches the webhook URL, with the optional keyUsage extension set to \u003ccode\u003edigitalSignature\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eTo configure a webhook with a custom certificate, the certificate file (in DER format) must be uploaded, and the webhook URL must correspond to the domain name signed by the custom certificate.\u003c/p\u003e\n"],["\u003cp\u003eService directory integrations require you to set the service directory endpoint with the IP and port of your server.\u003c/p\u003e\n"]]],[],null,["# Custom CA certificates\n\nConversational Agents (Dialogflow CX) webhooks require HTTPS endpoints\nthat present valid TLS certificates when they are\nverified using Google's default trust store. However, you may want to use custom\nCA certificates, which cannot be signed by a certificate authority recognized by\nGoogle's default trust store. For example, webhook servers that are inside\nGoogle's private VPC network have this issue. In this case, you can upload the\ncustom certificates to Conversational Agents (Dialogflow CX) when creating webhooks, and the uploaded\ncertificates will override Google's default trust store.\n\nCustom CA certificates can be self-signed certificates or custom root\ncertificates. You can upload multiple certificates in case you want to rotate\nthe certificates. The certificates must be in\n[DER format](https://en.wikipedia.org/wiki/X.509#Certificate_filename_extensions)\nand must be signed with\n[subject alternative name](https://en.wikipedia.org/wiki/Subject_Alternative_Name)\nmatching the webhook URL. When the\n[keyUsage](https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.3)\nextension is present, its value needs to be `digitalSignature`.\n| **Note:** Conversational Agents (Dialogflow CX) does not support customizing the webhook client certificate to perform [mutual TLS authentication](/dialogflow/cx/docs/concept/mtls).\n\nDemo self-signed server\n-----------------------\n\nThe following is the configuration of a demo server:\n\n1. Prepare self-signed certificate files. We use www.example.com as the example domain. \n\n ```text\n openssl genrsa -out server.key 2048\n openssl req -nodes -new -sha256 -newkey rsa:2048 -key server.key -subj \"/CN=www.example.com\" -out server.csr\n openssl x509 -req -days 3650 -sha256 -in server.csr -signkey server.key -out server.crt -extfile \u003c(printf \"\\nsubjectAltName='DNS:www.example.com'\")\n openssl x509 -in server.crt -out server.der -outform DER\n ```\n2. Start your HTTPS server using the server certificate (`server.crt`) and private key (`server.key`) created in previous step. We assume the server is listening on port 443.\n3. Test to connect to the server locally. \n\n ```text\n curl --cacert server.crt https://www.example.com --resolve www.example.com:443:127.0.0.1\n ```\n\nDemo webhook with custom certificate\n------------------------------------\n\nAfter you have setup the server with your custom certificate, you may\n[create a webhook resource](/dialogflow/cx/docs/concept/webhook#create)\nwith the following extra instructions to use the custom certificate:\n\n- Set the URL matching the domain signed with the certificate (`https://www.example.com` in previous demo). It is your own responsibility to make sure that your domain will correctly resolve to the IP address of the server.\n- Upload the custom certificate in DER format. This is the `server.der` file in previous self-signed demo or the custom root certificate.\n- For webhooks integrated with [Service Directory private network access](/dialogflow/cx/docs/concept/webhook#sd), Setup your [Service Directory Endpoint](/service-directory/docs/configuring-service-directory#configure_an_endpoint) with the IP address and port of your server, and provide the [Service Directory Service](/service-directory/docs/configuring-service-directory#configure_a_service) when creating webhook."]]