Child pages
  • Let's Encrypt and the certbot - Automated SSL Webserver Certificates
Skip to end of metadata
Go to start of metadata

Das ist wirklich sowas von 2016, hammer!

renewal conf

unter /etc/letsencrypt/renewal/ finden sich die für die bereits ausgestellten Zertifikate hinterlegten Konfigurationsdaten für den renewal prozess

Dort enthalten sind in der Regel eben jene Optionen, die beim erstmaligen erzeugen der certs genutzt wurden, so zum Beispiel

  • ob eine verifizierung der Domain über einen vom bot während des laufs der Verifizierung gestarteten eigenen standalone-mini-webservers erfolgt (was aber in der Regel dazu führt, dass der normale Webserver übergangsweise gestoppt werden muss) oder ob hierzu im webroot der Domain temporär Dateien abgelegt werden die dann zu Verifizierungszwecken dort erreicht und vom normalen Webserver ohne unterbrechung ausgeliefert werden können

 

example for webroot .well-known verification
# Options used in the renewal process
[renewalparams]
authenticator = webroot
installer = None
[[webroot_map]]
my.domain.example.com = /var/www/dom1
domain2.example.com = /var/www/dom2
Example for standalone webserver verifcation
# Options used in the renewal process
[renewalparams]
authenticator = standalone
installer = None

convert standalone renewal to webroot renewal

im einfachen fall tut soetwas:

#### WARNING: UNTESTED !!!

for renewconf in $(ls -1 /etc/letsencrypt/renewal/); do
  renewconf="/etc/letsencrypt/renewal/${renewconf}"
  cp -i ${renewconf}{,.bak}
  renewdomain=$(basename ${renewconf} .conf)
  sed -ie 's/\(authenticator\s*=\s*\)\(standalone\)/\1webroot/' ${renewconf}
  [ -z "$(grep '^[[webroot_map]]' ${renewconf})" ] && echo "[[webroot_map]]" >> ${renewconf}
  read -p "Enter HTTP webroot for ${renewdomain} [/var/www] "
  [ -z "${REPLY}" ] && REPLY="/var/www"
  # echo "${renewdomain} = ${REPLY}" >> ${renewconf}

  ## expected not to work since ${REPLY} is not resolved neither escaped
  openssl x509 -in /etc/letsencrypt/live/${renewdomain}/cert.pem -text | grep "DNS:" | sed -e 's/$/ = ${REPLY}' | sed -e 's/^\s*DNS://' | sed -e 's/, DNS:/ = ${REPLY}\n/g' >> ${renewconf}
done

 

remap webroot for validation

RewriteRule ^/(.well-known/acme-challenge/.*)   http://<your.Host.Server.Ip>/$1 [L]

^^ besonders wichtig ist dass, wenn unter .well-known normalerweise ein anderer Dienst läuft, beispielsweise: DAV Server zur Synchronisation. ownCloud oder NextCloud sind hier bekannte Beispiele!

Certbot-auto

seht was er kann: https://certbot.eff.org/#debianwheezy-apache

certbot-auto renew --dry-run 

 

Fehlerfallen

UnicodeEncodeError

Wer fehler wie solche findet:

UnicodeEncodeError: 'ascii' codec can't encode character u'\u0361' in position 303: ordinal not in range(128)

 

hat vielleicht gar kein Problem mit der Konfiguration unter /etc/letsencrypt sondern folgendes Problem: die webroot-Authentifizierung ist fehlkonfiguriert und ein Zugriff auf <http://><dieDomain>(:80)/.well-known/acme-challenge/<ANYTHING> liefert Unicode Inhalte aus. Nicht aber die Validierungsdatei aus dem angegebenen Webroot!