# Failed to validate: Invalid TLS certificate

**URL:** <https://devforum.zoom.us/t/failed-to-validate-invalid-tls-certificate/80914>\
**Category:** API and Webhooks\
**Created:** [December 31, 2022, 12:50am UTC](https://devforum.zoom.us/t/failed-to-validate-invalid-tls-certificate/80914 "2022-12-31T00:50:45Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![trickypr](https://avatars.discourse-cdn.com/v4/letter/t/b38774/32.png) [@trickypr](https://devforum.zoom.us/u/trickypr)\
**Post date:** [December 31, 2022, 12:50am UTC](https://devforum.zoom.us/t/failed-to-validate-invalid-tls-certificate/80914/1 "2022-12-31T00:50:45Z")

</div>

I am building an app that relies on webhooks as a core part of its functionality. As of today (30th of December 2022), validating the webhook fails with the following error: “Invalid TLS certificate”.

Important things to note:

- The certificate is issued by Lets Encrypt (via certbot)
- The certificate is considered valid by Mozilla Firefox and Google Chrome

I have found the following (unsolved) issues on the developer forum:

- [¿Is Let's Encrypt certificate authority a valid CA for Zoom Webhooks?](https://devforum.zoom.us/t/is-lets-encrypt-certificate-authority-a-valid-ca-for-zoom-webhooks/74067)
- [Unable to save (Add or Edit) Event Subscriptions for Zoom App](https://devforum.zoom.us/t/unable-to-save-add-or-edit-event-subscriptions-for-zoom-app/73994)

Both of these issues ended up being solved by globally disabling validation

**API Endpoint(s) and/or Zoom API Event(s)**  
`meeting.participant_joined_waiting_room` ([https://marketplace.zoom.us/docs/api-reference/zoom-api/events/#operation/meeting.participant\_joined\_waiting\_room](https://marketplace.zoom.us/docs/api-reference/zoom-api/events/#operation/meeting.participant_joined_waiting_room))

**Error**  
Invalid TLS certificate

**How To Reproduce**  
Before you set this up, you need a domain you can test this with. `###` everywhere in these instructions (or domains referenced in third party instructions) refer to this domain.

1. Spin up a server (we are using Vultr in Sydney as our provider, Ubuntu 22.04)
2. Obtain a Lets Encrypt certificate by following the relevant instructions (Software: other, System: Ubuntu 20): [Certbot Instructions | Certbot](https://certbot.eff.org/instructions?ws=other&os=ubuntufocal)
3. Clone down the example app ([GitHub - trickypr/webhook-sample-node.js: Receive Zoom Webhooks](https://github.com/trickypr/webhook-sample-node.js)) (this fork has https support)
4. Run `npm install`
5. Set env variables (in .env) `ZOOM_WEBHOOK_SECRET_TOKEN` to the relevant secret (described in README) and `PORT=443`
6. Set env `KEY=/etc/letsencrypt/live/###/privkey.pem` where ### is your certificate’s domain name
7. Set env `CERT=/etc/letsencrypt/live/###/cert.pem` where ### is your certificate’s domain name
8. Run the application via `node index.js`
9. Visit the domain you assigned in a web browser to see it is
  1. Secure and
  2. returning something like “Webhook Sample Node.js successfully running. Set this URL …”

10. Go back to the webhook app that you got the secret from and register a webhook (e.g. “Participant was admitted into a meeting”) to `https://###/webhook` where ### is your domain
11. Press validate
12. Text will popup below the URL box saying “Invalid TLS certificate”

---

<div class="post-metadata">

**Author:** ![elisa.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/elisa.zoom/32/47836_2.png) [@elisa.zoom](https://devforum.zoom.us/u/elisa.zoom)\
**Post date:** [January 5, 2023, 1:52pm UTC](https://devforum.zoom.us/t/failed-to-validate-invalid-tls-certificate/80914/2 "2023-01-05T13:52:35Z")

</div>

Hi @trickypr  
Thank you for reaching out to the Zoom Developer Forum, I am happy to help here!  
I am checking in with you to confirm if you are still having this issue when trying to validate your webhook URL?  
Please, let me know if you need me to look into this.  
Best,  
Elisa

---

<div class="post-metadata">

**Author:** ![trickypr](https://avatars.discourse-cdn.com/v4/letter/t/b38774/32.png) [@trickypr](https://devforum.zoom.us/u/trickypr)\
**Post date:** [January 6, 2023, 3:29am UTC](https://devforum.zoom.us/t/failed-to-validate-invalid-tls-certificate/80914/3 "2023-01-06T03:29:18Z")

</div>

I found a solution, which is to forward the webhooks through cloudflare, which used cloudflares certificates rather than Lets Encrypt. I am unable to reproduce this again at the moment.

---

<div class="post-metadata">

**Author:** ![elisa.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/elisa.zoom/32/47836_2.png) [@elisa.zoom](https://devforum.zoom.us/u/elisa.zoom)\
**Post date:** [January 6, 2023, 5:10pm UTC](https://devforum.zoom.us/t/failed-to-validate-invalid-tls-certificate/80914/4 "2023-01-06T17:10:03Z")

</div>

Amazing @trickypr  
happy to hear you found a workaround  
Feel free to reach out back to us if you need anything else.  
Best,  
Elisa

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/6/1/614bdd549b610bbaa46ff934617683a02bdaa03c.png) [@system](https://devforum.zoom.us/u/system)\
**Post date:** [January 10, 2024, 8:46am UTC](https://devforum.zoom.us/t/failed-to-validate-invalid-tls-certificate/80914/5 "2024-01-10T08:46:47Z")

</div>

Closed on January 10, 2024, 8:46am UTC

This topic was automatically closed 368 days after the last reply. New replies are no longer allowed.
