lets_encrypt
Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Let's Encrypt
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.
Erstinstallation
- Installation des Scripts und der Umgebung
cd /usr/local/src/ git clone https://github.com/diafygi/acme-tiny.git mkdir /var/www/lets_encrypt cd /var/www chmod 750 lets_encrypt chown www-data. lets_encrypt cd lets_encrypt cp /usr/local/src/acme-tiny/acme_tiny.py . chmod 740 acme_tiny.py
- Account-Schlüssel anlegen
openssl genrsa 2048 > account.key chmod 400 account.key
- Domainschlüssel anlegen
openssl genrsa 2048 > <domain>.key chmod 640 <domain>.key
- CSR erstellen
openssl req -new -sha256 -key <domain>.key -subj "/CN=<domain1>" -config <domain>-san.conf > <domain>.csr chmod 640 <domain>.csr
SAN können über die Angabe einer Konfigurationsdatei mit Optionen eingestellt werden. Beachte, daß die Hauptdomain ebenfalls in die Liste der SAN eingeschlossen wird.
-config san.conf
- domain-san.conf
[req] distinguished_name = req_distinguished_name req_extensions = v3_req [req_distinguished_name] CN = www.piratenfraktion-sh.de [v3_req] subjectAltName = @alt_names [alt_names] DNS.1 = example.com DNS.2 = www.example.com DNS.3 = sub.www.example.com
- Prüfe, ob der CSR korrekten Inhalt hat
openssl req -in <domian>.csr -noout -text
- Verzeichnis für Challenges erstellen und über den Webserver freigeben
mkdir challenges chmod 750 challenges chown www-data. challenges
- Lighttpd:
- /etc/lighttpd/lighttpd.conf
alias.url += ( "/.well-known/acme-challenge/" => "/var/www/lets_encrypt/challenges/" ) $HTTP["scheme"] == "http" { url.redirect = ( "^/\.well-known/acme-challenge/.*" => "", "^/(.*)" => "https://ras.rowa-group.com/$1" ) }
- Apache:
- /etc/apache2/sites-available/000-default.conf
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
- Nginx:
- /etc/nginx/default
location ^~ /.well-known/acme-challenge/ { default_type "text/plain"; alias /var/www/lets_encrypt/challenges/; } location = /.well-known/acme-challenge/ { return 404; }
- Webserver neu laden
- Apache:
/etc/init.d/apache2 reload
- Zertifikat anfordern
./acme_tiny.py --account-key ./account.key --csr ./<domain>.csr --acme-dir /var/www/lets_encrypt/challenges/ > ./<domain>.crt chmod 640 signed.crt
- Intermediate Zertifikat holen
wget -O - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > intermediate.pem cat intermediate.pem >> <domain>.crt
- Zertifikat ind Schlüssel an Zielposition ablegen
cp -p <domain>.crt /etc/ssl/certs/ cp -p <domain>.key /etc/ssl/private/
- Anschließend Zertifikat und Schlüssel im der entsprechenden Webserverkonfiguration einbauen
Überprüfung
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
Erneuerung
- Erneuertes Zertifikat anfordern
./acme_tiny.py --account-key ./account.key --csr ./<domain>.csr --acme-dir /var/www/lets_encrypt/challenges/ > ./<domain>.crt chmod 640 <domain>.crt
- Intermediate Zertifikat holen und anfügen
wget -O - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > intermediate.pem cat intermediate.pem >> <domain>.crt
- Zertifikat ind Schlüssel an Zielposition ablegen
cp <domain>.crt /etc/ssl/certs/
- Neuladen der Serverkonfiguration
/etc/init.d/apache2 reload bzw. /etc/init.d/nginx reload
lets_encrypt.1583305325.txt.gz · Zuletzt geändert: 04.03.2020 07:02 von thooge