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 reloadIn 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