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-challengeworks fine. So an unconditional redirect fromhttp://libravatar.org/(.*)tohttp://www.libravatar.org/$1should do the trick a bit easier.Best regards Uwe