Forum

LetsEncrypt certifi...
 
Notifications
Clear all

LetsEncrypt certificate renewal in een DietPi omgeving met Lighttpd

Abib
 Abib
(@abib)
Noble Member
  • Probleem: Letsencrypt certificate renewal proces faalt
  • Omgeving: DietPi met Lighttpd webserver. Domein verkeer wordt eventueel omgeleid naar een andere sub-directory van /var/www
  • Falende actie: Het verversen van het certificaat via sudo dietpi-letsencrypt faalt met een time-out van de http-01 challenge
  • Oplossing/Workaround: Certbot laten draaien met de native, stand-alone webserver

LetsEncrypt maakt gebruik van Certbot om het certificaat aan te vragen of te vernieuwen. Dit kan ook handmatig via sudo certbot renew 

In het proces wordt gebruik gemaakt van Lighttpd als bestaande webserver, waarbij Certbot een token bestand aanmaakt in /var/www/.well-known/acme-challenge/ en deze vervolgens opvraagt over http via http://<website_domain_FQN>/.well-known/acme-challenge/<token_bestand>  

Het blijkt dat bij gebruik van Lighttpd Certbot de folders en het token bestand aanmaken als gebruiker/groep root, terwijl Lighttpd alleen bestanden aan kan bieden aan webclients die www-data als gebruiker/groep hebben. Het resultaat is dat de http-01 challenge mislukt door een time-out omdat het torenbestand niet opgehaald kan worden.

Een oplossing of workaround hiervoor blijkt te zijn om de ingebouwde webserver van Certbot te gebruiken. Deze moet verbinding maken met de porten die door Lighttpd in gebruik zijn, en daarvoor moet die service eerst afgesloten worden en na de verversing weer worden opgestart. Dit kan op twee wijzen, via de command line en via de config bestanden van Certbot. Hierbij past Certbot de opties van het directe commando aan in het config bestand voor toekomstig gebruik - maar dit betekent waarschijnlijk ook dat bij andere invoer het config bestand niet meer werkt zoals gewenst.

Het directe commando om te gebruiken is:

sudo certbot renew --pre-hook "service lighttpd stop" --post-hook "service lighttpd start" --standalone

 

Het configuratiebestand voor renewal opdrachten staat op:

/etc/letsencrypt/renewal/<FQN_domain_Name>.conf

Deze ziet er dan zo uit (let op dat de omleiding naar de folder van de website bij het domain niet actief is door # aan het begin van de regel!):

# renew_before_expiry = 30 days
version = 1.12.0
archive_dir = /etc/letsencrypt/archive/<FQN_domain_name>
cert = /etc/letsencrypt/live/<FQN_domain_name>/cert.pem
privkey = /etc/letsencrypt/live/<FQN_domain_name>/privkey.pem
chain = /etc/letsencrypt/live/<FQN_domain_name>/chain.pem
fullchain = /etc/letsencrypt/live/<FQN_domain_name>/fullchain.pem

# Options used in the renewal process
[renewalparams]
account = <account_token>
rsa_key_size = 4096
authenticator = standalone
webroot_path = /var/www,
server =  https://acme-v02.api.letsencrypt.org/directory 
pre_hook = service lighttpd stop
post_hook = service lighttpd start

[[webroot_map]]
#<FQN_domain_name> = /var/www/<sub-folder>

 

Met deze config file zou een toekomstige automatische renewal ook moeten werken. 

 

Gebruik https://crt.sh om te kijken of er nieuwe certificaten aan je domein zijn gekoppeld.

Quote
Topic starter Posted : 30/12/2021 3:12 pm
Roebar reacted
Roebar
(@roebar)
Famed Member

Helaas nog niet helemaal het gewenste resultaat na het doorvoeren van bovenstaande tips.
Geeft een failure melding

 

hjttp://crt.sh geeft trouwens wel aan dat er een nieuw certificaat is. Alleen https werkt nog niet naar nextcloud.

ReplyQuote
Posted : 01/01/2022 9:25 pm
Lantern
(@lantern)
Illustrious Member Admin

Ik denk dat dit misschien jullie gaat helpen?

https://dietpi.com/phpbb/viewtopic.php?t=1228

https://dietpi.com/phpbb/viewtopic.php?t=9027

ReplyQuote
Posted : 02/01/2022 12:58 am
Abib
 Abib
(@abib)
Noble Member

@lantern bedankt, maar dit is niet waar ik tegenaan loop. 

Roebar creëert wel een nieuw certificaat, maar die wordt niet geïnstalleerd voor gebruik door lighttpd :/ Ook dat is een ander probleem….

ReplyQuote
Topic starter Posted : 02/01/2022 11:27 am
Abib
 Abib
(@abib)
Noble Member

En dat hebben we gisteravond opgelost door het samengestelde certificaat in de ‘live’ directory voor het domein handmatig aan te maken (te overschrijven) door als root het volgende commando in te voeren:

cat privkey.pem cert.pem > combined.pem

De eerste twee .pem bestanden in de folder zijn links naar het actieve bestand, terwijl combined.pem leeft in de folder zelf.

ReplyQuote
Topic starter Posted : 03/01/2022 8:58 am
Lantern
(@lantern)
Illustrious Member Admin

Mooi 👍 Nu hopen dat de auto renewal gaat werken want een handmatige actie is nooit bevordelijk voor een automatisch proces. 🧐  

ReplyQuote
Posted : 04/01/2022 3:58 pm
Roebar
(@roebar)
Famed Member
Posted by: @lantern

Mooi 👍 Nu hopen dat de auto renewal gaat werken want een handmatige actie is nooit bevordelijk voor een automatisch proces. 🧐  

Klare taal!

En wat betreft; handmatige actie is nooit bevorderlijk voor een automatisch proces. 

Helemaal waar, dus het volgende miniprojectje is om Rsync automatisch z'n ding te laten doen.

ReplyQuote
Posted : 04/01/2022 5:02 pm
Abib
 Abib
(@abib)
Noble Member

@roebar we gaan ernaar kijken!

ReplyQuote
Topic starter Posted : 04/01/2022 7:29 pm