I normally use Certbot to issue and install the free Let’s Encrypt certificates. But I haven’t found a, or there is no, convenient way to issue ECC-certificates with Certbot. For that reason I switched from Certbot to acme.sh.
With acme.sh I can generate ECC certificates, without having to generate all kinds of extra files before I receive the right type of certificate.
So here’s what I did to change from Certbot issuing my certificates, to acme.sh. I use nginx as a webserver, and I have to make some changes in the config as well.
wget -O - https://get.acme.sh | sh
Revoke the current certificate from Certbot
Next, I revoke the certificate I’m currently using from Certbot.
certbot revoke --cert-path /etc/letsencrypt/archive/mvandek.nl/cert1.pem
Issue a new certificate
I use acme.sh to issue a new certificate, which will be later used by nginx to encrypt the connection between browser and server. I use an elliptic curve (
ec-384) to create an ECC-certificate.
acme.sh --issue -d mvandek.nl --keylength ec-384 -w /home/mvandek/mvandek.nl
Change the virtual host config of nginx
There I find these rules:
ssl_certificate /etc/letsencrypt/live/mvandek.nl/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mvandek.nl/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/mvandek.nl/chain.pem;
I changed them into:
ssl_certificate /etc/ssl/acme/mvandek.nl/ecc-fullchain.pem; ssl_certificate_key /etc/ssl/acme/mvandek.nl/ecc-key.pem; ssl_trusted_certificate /etc/ssl/acme/mvandek.nl/ecc-cert.pem;
Do not restart nginx. The ‘old’ Certbot certificates are still used by nginx, so you still can connect to the website, even while the certificates are already revoked.
Now you have to create the folder in which the new certificates will be installed, and from where nginx will load the new issued certificates.
Create directory for certificates
First, create a folder called acme inside
/etc/ssl/. Then, accordingly to the domain name, create a folder where the certificates will be stored. In this case, that folder will be named
mkdir -p /etc/ssl/acme/mvandek.nl
Install the issued certificates
The following code will install the certificate for the domain
mvandek.nl. It knows it’s an ECC-certificate because of the –ecc parameter. When the files are installed, nginx will be restarted to load the new certificates.
acme.sh --install-cert -d mvandek.nl --ecc \ --cert-file /etc/ssl/acme/mvandek.nl/ecc-cert.pem \ --key-file /etc/ssl/acme/mvandek.nl/ecc-key.pem \ --fullchain-file /etc/ssl/acme/mvandek.nl/ecc-fullchain.pem \ --reloadcmd "systemctl restart nginx.service"