====== Avril and Let's Encrypt Certificates ======
===== Install certificates initially =====
A **standalone** certificate should be fetched. (I think because our certbot runs externally, and nginx runs in a docker container).
For the domain ''vwiki2.avril.work'':
sudo certbot certonly --standalone -d vwiki2.avril.work
===== Renew certificates manually =====
**Note:** //Usually it should be done automatically with help of a cron job, but here is described how we can do it manually.//
Simply run:
cd /dockerdata/compose
# Stop Avril docker compose
sudo docker-compose down
# Renew certificates
sudo certbot renew
# Start Avril docker compose
sudo docker-compose up -d
After that check in browser if you have new certificates. Maybe removing all cookies (Ctrl+Shift+Del) etc. and F5 is necessary.
Der obige Ansatz funktioniert sehr gut (nur 2 minuten Downtime). Aber 0 Minuten Downtime ist besser, deshalb wäre es schön nach einer Lösung zu schauen, die einen anderen Ansatz fährt (z.B. DNS-Plugins verwenden: https://certbot.eff.org/docs/using.html#dns-plugins).
P.S. Übrigens, das cerbot-Log liegt unter /var/log/letsencrypt.
===== Renew certs automatically =====
It does not work at the moment, because the necessary port (80? or 443?) is in use during renewal. It can work (I didn't test it) if we install pre- and post-hooks, which will shut down and start again (after certs renewal) the docker compose.
At the moment I'm using the manual way, because I want to know exactly when the server will shut down.
===== relay.avril.work certificate renewal =====
Important for relay.avril.work certificates: because of problems, whether the mail server(?) uses wrong (old) certificates, the Dovecot service should be reloaded after the certificate renewal (see https://superuser.com/questions/1494333/thunderbird-not-updating-certificate-keeps-using-old-one-and-saying-its-expire
).
sudo service dovecot reload
It can be checked from a client with the following command:
openssl s_client -connect relay.avril.work:993 -quiet
This command gives for expired certificate:
kalaschnikow@kalaschnikow2017:~$ openssl s_client -connect relay.avril.work:993 -quiet
depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = R3
verify return:1
depth=0 CN = relay.avril.work
verify error:num=10:certificate has expired
notAfter=Oct 28 17:05:33 2021 GMT
verify return:1
depth=0 CN = relay.avril.work
notAfter=Oct 28 17:05:33 2021 GMT
verify return:1
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN] Dovecot (Ubuntu) ready.
^C
And for valid certificate:
kalaschnikow@kalaschnikow2017:~$ openssl s_client -connect relay.avril.work:993 -quiet
depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = R3
verify return:1
depth=0 CN = relay.avril.work
verify return:1
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN] Dovecot (Ubuntu) ready.
^C
===== List of all my Let's Encrypt certs =====
If certbot is used the status of certificates can be checked in the terminal on the particular system with the command:
''sudo certbot certificates''
(see https://eff-certbot.readthedocs.io/en/stable/using.html#managing-certificates)
* 94.199.215.198 (jrserver on ip-projects)
* /etc/letsencrypt/live/relay.avril.work/fullchain.pem expires on 2022-04-27
* /etc/letsencrypt/live/www.avril.work/fullchain.pem expires on 2022-04-27
* 202.61.247.140 (Avril2021 on netcup)
* /etc/letsencrypt/live/avril2021.avril.work/fullchain.pem expires on Donnerstag, 3. April 2025 um 08:28:04
* 185.194.236.66 (Avril2019 on ip-projects)
* /etc/letsencrypt/live/avril2019.wialon-consulting.de/fullchain.pem expires on Montag, 1. Januar 2024 um 06:48:09
===== Misc =====
* Running certbot in a container (but our installation is based on a certbot which runs not in docker container, but "purely" on host system )
* https://dev.to/kingyou/automating-https-with-docker-nginx-certbot-2ein