In order to be able to use the webroot
plugin for
certbot and automatically renew the Let's
Encrypt certificate for libravatar.org
, I
had to put together an Apache config that would do the following on port 80:
- Let
/.well-known/acme-challenge/*
through on the bare domain (http://libravatar.org/
). - Redirect anything else to
https://www.libravatar.org/
.
The reason for this is that the main
Libravatar service listens on
www.libravatar.org
and not libravatar.org
, but that cerbot needs to
ascertain control of the bare domain.
This is the configuration I ended up with:
<VirtualHost *:80>
DocumentRoot /var/www/acme
<Directory /var/www/acme>
Options -Indexes
</Directory>
RewriteEngine on
RewriteCond "/var/www/acme%{REQUEST_URI}" !-f
RewriteRule ^(.*)$ https://www.libravatar.org/ [last,redirect=301]
</VirtualHost>
The trick I used here is to make the redirection RewriteRule
conditional
on the requested file (%{REQUEST_URI}
) not existing in the /var/www/acme
directory, the one where I tell certbot to drop its temporary files.
Here are the relevant portions of /etc/letsencrypt/renewal/www.libravatar.org.conf
:
[renewalparams]
authenticator = webroot
account =
[[webroot_map]]
libravatar.org = /var/www/acme
www.libravatar.org = /var/www/acme
Hello,
according to my experience having a redirect for
/.well-known/acme-challenge
works fine. So an unconditional redirect fromhttp://libravatar.org/(.*)
tohttp://www.libravatar.org/$1
should do the trick a bit easier.Best regards Uwe