Let's Encrypt needs to be sure that the bot asking for a certificate to be signed is really acting on behalf of the domain that it claims that it is.
The way that it does this is by a challenge/response mechanism.
This needs to be put into every virtual host that is in the certificate family.
Ie in the .cnf file the names listed under commonName
and any DNS.1, etc.
To help you with this the InitialSetup script will have created a
file httpd.conf.challenge that probably contains:
# This you should into the vhosts that listen on port 80
# on the first edit of Apache configuration.
# It makes the challenge directory visible to Let's Encrypt:
RewriteEngine On
Alias /.well-known/acme-challenge/ "/var/www/acme/acme-challenge/"
RewriteRule "^/.well-known/acme-challenge/" - [L]
<Directory "/var/www/acme/acme-challenge/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
The contents of httpd.conf.challenge should be put at the start of
the <VirtualHost *:80> definition. The only
directives before it being ServerAdmin,
DocumentRoot, ServerName,
ServerAlias, ErrorLog, CustomLog. Eg:
<VirtualHost *:80>
ServerAdmin bofh@example.com
DocumentRoot /var/www/example/html
ServerName www.example.com
ServerAlias devel.example.com
ErrorLog logs/example/error_log
CustomLog logs/example/access_log combined
RewriteEngine On
Alias /.well-known/acme-challenge/ "/var/www/acme/acme-challenge/"
RewriteRule "^/.well-known/acme-challenge/" - [L]
<Directory "/var/www/acme/acme-challenge/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Next page: Generate, test & ask Let's Encrypt to sign a Certificate Signing Request
Return to How to Configure Let's Encrypt with acme_tiny.py
Return to tutorial home.
If you want any help using the above, or have any comments or suggestions, please contact us.