There are four scripts. These are written to be simple, which means that they are easy to audit
CreateSigningRequests
from a family.cnf
file generates a family.csr
fileCheckSiteAccess
examines a family.csr
and checks that Apache is correctly configured so that Let's Encrypt will sign the certificateGetSignedCertificate
requests Let's Encrypt to sign a family.csr
returning a family.cst
RenewCertificates
keeps expiring certificates from expiring — run from cronThere is also InitialSetup
, only run once (by root) to set up directory structure, create users.
Two users are created:
rsa
. This user runs CreateSigningRequests
& CheckSiteAccess
acme
. This user talks to Let's Encrypt runs GetSignedCertificate
& RenewCertificates
.
These scripts run acme_tiny.py
The HOME
directory for both of these users is /var/www/acme/
The user names & base directory can easily be changed.
/var/www/acme/
Note also directory permissions. Some files are very sensitive and must be kept secure to keep the web server secure.
/acme-challenge/
This is where acme_tiny.py
puts the challenge files that
Let's Encrypt asks it to. This has to be writable by acme
and files in it
readable by Apache to provide the response that Let's Encrypt needs.
This will be mapped in each vhost in the family by an Apache configuration line like:
Alias /.well-known/acme-challenge/ "/var/www/acme/acme-challenge/"This also contains an
index.html
that is used by CheckSiteAccess
SSLConfigs/
This is where you will create family configuration files. EXAMPLE.cnf
can be used as a starting pointCertificateSigningRequests/
CSRs written here by script CreateSigningRequests
using a family configuration file in SSLConfigs/
RSAprivateKeys/
private keys written here by script CreateSigningRequests
. These are precious and
must be kept secret. Apache needs to read them. Ensure that these are not readable by any user than rsa
and the group of
the Apache process.SignedCertificates/
signed certificates written here by script GetSignedCertificate
using CSRs in CertificateSigningRequests/
LetsEncryptAccounts/
created by script GetSignedCertificate
Renewals.list
a list of certificate family names used by RenewCertificates
Templates
templates that expand to the files:
Renewal.crontab
a crontab for the user acme
that you should considerhttpd.conf.challenge
to be put into vhost configuration during the first stage edittmp
temporary file space needed by GetSignedCertificate
& RenewCertificates
bin
where all the scripts liveACMEUSER
the username acme
or your local choiceRSAUSER
the username rsa
or your local choiceDIST
the contents of the unpacked tar file LetsEncryptManage-version.release-0.0.tar.gz
.rnd
where the OpenSSL
program to store entropy (randomness)Next page: Install of phcl_acme
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.