Wir verwenden ACME-Tiny. Das ist nur genau ein Python-Script was man benutzen muß. Das kann dann ganz leicht in eine eigene, überschaubare Umgebung eingebaut werden.
apt-get install acme-tiny mkdir /var/www/lets_encrypt cd /var/www chmod 750 lets_encrypt chgrp www-data lets_encrypt
cd /var/www/lets_encrypt openssl genrsa 2048 > account.key chmod 400 account.key
openssl genrsa 2048 > /etc/ssl/private/<domain>.key chmod 640 /etc/ssl/private/<domain>.key
[req] distinguished_name = req_distinguished_name req_extensions = v3_req [req_distinguished_name] CN = www.example.com [v3_req] subjectAltName = @alt_names [alt_names] DNS.1 = example.com DNS.2 = www.example.com DNS.3 = sub.www.example.com
openssl req -new -sha256 -key /etc/ssl/private/<domain>.key \ -subj "/CN=<domain1>" -config <domain>-san.conf > <domain>.csr chmod 640 <domain>.csr
openssl req -in <domian>.csr -noout -text
mkdir challenges chmod 750 challenges chgrp www-data challenges
alias.url += ( "/.well-known/acme-challenge/" => "/var/www/lets_encrypt/challenges/" ) $HTTP["scheme"] == "http" { url.redirect = ( "^/\.well-known/acme-challenge/.*" => "", "^/(.*)" => "https://www.example.com/$1" ) }
Alias "/.well-known/acme-challenge" "/var/www/lets_encrypt/challenges" [...] SSLCertificateFile /var/www/lets_encrypt/signed.crt SSLCertificateKeyFile /var/www/lets_encrypt/domain.key
Falls SSL erzwungen werden soll, so kann dieses wie folgt eingestellt werden
RedirectMatch Permanent ^(?!/\.well-known/).* https://www.example.com
location ^~ /.well-known/acme-challenge/ { default_type "text/plain"; alias /var/www/lets_encrypt/challenges/; } location = /.well-known/acme-challenge/ { return 404; }
acme-tiny --account-key account.key --csr <domain>.csr --acme-dir /var/www/lets_encrypt/challenges/ > <domain>.crt chmod 640 <domain>.crt
cp -p <domain>.crt /etc/ssl/certs/
/etc/init.d/apache2 reload
/etc/init.d/nginx reload
In regelmäßigen Abständen wird überprüft, ob das Zertifikat erneuert werden muß. Dieses kann durch einen täglichen oder wöchentlichen Cronjob erledigt werden.
Mauell den Inhalt eines zertifikats anzeigen
openssl x509 -in <certificate>.crt -text -noout
cd /var/www/lets_encrypt acme-tiny --account-key account.key --csr <domain>.csr --acme-dir /var/www/lets_encrypt/challenges/ > <domain>.crt chmod 640 <domain>.crt
wget -O - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > intermediate.pem cat intermediate.pem >> <domain>.crt
cp -p <domain>.crt /etc/ssl/certs/
/etc/init.d/apache2 reload bzw. /etc/init.d/nginx reload