Facebook developers tool error: Error de cURL: 60 (SSL_CACERT)

Hi, I have a problem with the certificate, my blog page it’s work fine and the https it’s works correctly, but when I share a post with facebook the preview is wrong, the developers facebook tools say “Error de cURL: 60 (SSL_CACERT)”

Hi,

Can you share us your domain?

Thank you

blog.gallereplay.com

Hi @FeloPincheira,

You are including two certificates not related to LE in your Apache conf (number 1 and 2):

$ echo | openssl s_client -connect blog.gallereplay.com:443 -servername blog.gallereplay.com 2>/dev/null | awk '/Certificate chain/,/---/'
Certificate chain
 0 s:/CN=blog.gallereplay.com
   i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
 1 s:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Domain Validation Secure Server CA
   i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority
 2 s:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority
   i:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root
---

and the output of above command should look like this (including only LE intermediate cert)

$ echo | openssl s_client -connect blog.gallereplay.com:443 -servername blog.gallereplay.com 2>/dev/null | awk '/Certificate chain/,/---/'
Certificate chain
 0 s:/CN=blog.gallereplay.com
   i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
   i:/O=Digital Signature Trust Co./CN=DST Root CA X3
---

I don’t know how you issued the cert nor the Apache version you are using but if you used certbot and Apache 2.4.8 or higher you should point your SSLCertificateFile directive to /etc/letsencrypt/...../fullchain.pem instead of cert.pem or whatever file you have created adding above Comodo extra certs.

Cheers,
sahsanu

Thank you @sahsanu for your answer, I used this tutorial https://docs.bitnami.com/aws/how-to/generate-install-lets-encrypt-ssl/ to generate and install the certificate and then this tutorial to enable the configuration https://docs.bitnami.com/general/components/apache/#how-to-enable-https-support-with-ssl-certificates, I use apache version < 2.4.8 with bitnami (in aws server), before let’s encrypt I had other certificate, maybe for that reason I have linked two certificates not related to LE.

I will check, thank you

1 Like

@FeloPincheira, as you are using an Apache Server below version 2.4.8, then the certificates should be defined using 3 directives:

SSLCertificateFile    File containing your cert
SSLCertificateKeyFile File containing your private key
SSLCertificateChainFile File contain intermediate certificates to complete the chain

Checking bitnami, the intermediate cert should be included in file server-ca.crt so Apache directives should look like this:

SSLCertificateFile    "/opt/bitnami/apache2/conf/server.crt"
SSLCertificateKeyFile "/opt/bitnami/apache2/conf/server.key"
SSLCertificateChainFile "/opt/bitnami/apache2/conf/server-ca.crt"

Well, seems lego creates the file /etc/lego/certificates/domain.crt containing both, your cert and LE intermediate cert but you need to split that file. You can do it manually or using something like this:

sudo cd /etc/lego/certificates/
sudo awk 'BEGIN {c=0;} /BEGIN CERT/{c++} { print > "domain." c ".pem"}' < domain.crt

This will create 2 files, domain.1.pem containing your cert and domain.2.pem containing the intermediate cert so you should link bitnami files to this new ones.

sudo mv /opt/bitnami/nginx/conf/server.crt /opt/bitnami/apache2/conf/server.crt.old
sudo mv /opt/bitnami/nginx/conf/server.key /opt/bitnami/apache2/conf/server.key.old
sudo mv /opt/bitnami/nginx/conf/server-ca.crt /opt/bitnami/apache2/conf/server-ca.crt.old

sudo ln -s /etc/lego/certificates/domain.1.pem /opt/bitnami/apache2/conf/server.crt
sudo ln -s /etc/lego/certificates/domain.key /opt/bitnami/apache2/conf/server.key
sudo ln -s /etc/lego/certificates/domain.2.pem /opt/bitnami/apache2/conf/server-ca.crt

Edit: changed .crt extension to .pem in ln commands.

Keep in mind that this process should be repeated every time you renew the certs.

In the doc you linked above, they say that you should create a script like this:

#!/bin/bash

sudo /opt/bitnami/ctlscript.sh stop apache
sudo /usr/local/bin/lego --email="EMAIL-ADDRESS" --domains="DOMAIN" --path="/etc/lego" renew
sudo /opt/bitnami/ctlscript.sh start apache

As you are following that guide you should add the split step:

#!/bin/bash

sudo /opt/bitnami/ctlscript.sh stop apache
sudo /usr/local/bin/lego --email="EMAIL-ADDRESS" --domains="DOMAIN" --path="/etc/lego" renew
sudo cd /etc/lego/certificates/
sudo awk 'BEGIN {c=0;} /BEGIN CERT/{c++} { print > "domain." c ".pem"}' < domain.crt
sudo /opt/bitnami/ctlscript.sh start apache

Or you could upgrade to a newer Apache version :wink:

Cheers,
sahsanu

3 Likes

Super nice use of awk!

@sahsanu thank you, that works perfect.

1 Like

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