Webhooks with Letsencrypt SSL not working

Hi,

We migrated to LetsEncrypt SSL in our production server , and now we have a problem sending Webhooks to our HTTPS endpoint. The webhook was working nicely with Godaddy SSL.
I’ve read about similar LetsEncrypt SSL issues https://community.hubspot.com/t5/APIs-Integrations/Webhooks-with-HTTPS-SSL-not-working/td-p/228558 and https://community.hubspot.com/t5/APIs-Integrations/Webhooks-to-https-fails-without-details/td-p/2408…

I’ve simulated the call with Postman, and it works too. Other integrators are able to call our endpoint correctly too. It’s only not working for Hubspot and getting 403 Forbidden response from webhook in Hubspot.

I’ve analyzed the domain with SSL Labs (SSL Server Test (Powered by Qualys SSL Labs)) , overall rating is B. and checked with this one (SSL Security Test | ImmuniWeb) , the rating was B+ . Both says it is trusted, does Hubspot support Letsencrypt SSL? It’s pretty urgent, can you please help with this one?

Regards,

Erman

Hi, @Erman.

It looks like you opened a support ticket with my colleague Patrice. I’ll work with her to resolve your issue in that ticket.

In the meantime, the short answer is yes; HubSpot webhooks and CRM extensions are compatible with Let’s Encrypt SSL/TLS certificates.

In fact, in my experience, more customers actually have issues with GoDaddy’s wildcard certificates than with Let’s Encrypt. For example, see these related Community posts:

The cause of the issue likely lies in your implementation rather than the certificate authority itself. I’ll dig into this further with Patrice.

Just to note, I will also be assuming that you are referring to the app ID ending in 2291. Please correct me if I am looking in the wrong app.

Hi Isaac,

Thanks for your reply.

Yes, I opened a support ticket yesterday. Also it’s correct, the app id is ending with 2291.

FYI, we didn’t do any change in the app, it was working with Godaddy for a long time but it didn’t work when we migrate our SSL to Letsencrypt in our server yesterday. We had to revert back SSL to Godaddy yesterday, since the app is actively being used in the production. Please let me know if you’d need anything else.

Again thanks,

Erman

Thanks for clarifying, @Erman, however I won’t be able to troubleshoot effectively without an app that is throwing errors.

Would it be possible to spin up another test app pointing to an instance using the Let’s Encrypt cert?

For context, I ask because I don’t yet have a way to access your app’s logs after 24 hours pass. Since the last “Response deserialization” errors occurred more than a day ago, I don’t have visibility into the old errors. I am seeking whether I can view these in some way. I may also need to validate the Let’s Encrypt cert chain on a live domain.

Hi Isaac,

I can create another CRM card which points to Letsencrypt SSL installed server url (since it is using different port) if it is OK for you? We are actually requesting data for CRM Cards in our app.

Regards,

Erman

I think that would work, @Erman. Thank you for your flexibility.

For security, could you send that to Patrice through the support ticket?

Thanks for quick response @IsaacTakushi . I created a CRM card with Letsencrypt Test (id ends with 306) under the same app.

OK found the ticket in Hubspot, going to reply there too.

Thanks again.

Thanks so much, @Erman.

Digging into it now.

Hey, @Erman.

HubSpot seems to like your certificate — I’m not seeing any “Connection refused” errors.

Instead, I’m seeing 403 errors which seem to be coming from your end. They have the raw text response body:

Invalid authorization!

when I make GET requests to those addresses from both Chrome and Postman.

In Patrice’s ticket, however, you note “I’ve simulated the call with Postman, and it works too.”

What kind of authentication is your endpoint using? (If you get successful responses in Postman, I would not expect you to be using HubSpot’s X-HubSpot-Signature header.)

Hi @IsaacTakushi

Thank you for your support.

I sent message in Patrice’s ticket too. Yes I was able to hit our url via postman, as it’s shown there, but it seems that was still pointing to Goddady SSL installed port URL.

But after I got message from you in regards to X-HubSpot-Signature header. I noticed the reason of 403 authorization error for Letsencrypt SSL Installed URL. We are not able to match incoming X-Hubspot-Signature authorization header since we installed Letsencrypt on Apache Proxy Server and sending incoming calls to our server. So the request URI will be changed and the authorization generated in our program will not match with the incoming X-Hubspot-Signature authorization header. So it always gives 403 Authorization error.

Again thanks for your support.

Regards,

Erman

Hi, @Erman.

Thanks so much for the detailed explanation!