User Tools

Site Tools


server:letsencrypt

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
server:letsencrypt [2015/12/07 23:04] saschaserver:letsencrypt [2016/07/02 09:52] (current) – Corrections for certbot usage sascha
Line 2: Line 2:
  
 Bei [[https://letsencrypt.org/|Let's Encrypt]] handelt es sich um eine offene Zertifizierungsstelle, bei der man kostenlos [[https://de.wikipedia.org/wiki/X.509|X.509]]-Zertifikate für TLS((Transport Layer Security)) (ehemals SSL) erstellen kann. Gegründet wurde das Projekt 2014 von der EFF((Electronic Frontier Foundation; NGO, die sich für Grundrechte im Internet einsetzt)), Mozilla und der University of Michigan. Am 3. Dezember 2015 startete die öffentliche Beta-Phase, ab der man ohne vorherige Einladung mithilfe des in Python geschriebenen ''[[https://github.com/letsencrypt/letsencrypt|letsencrypt]]''-Clients weitestgehend automatisiert Zertifikate für den eigenen Server erhalten kann. Bei [[https://letsencrypt.org/|Let's Encrypt]] handelt es sich um eine offene Zertifizierungsstelle, bei der man kostenlos [[https://de.wikipedia.org/wiki/X.509|X.509]]-Zertifikate für TLS((Transport Layer Security)) (ehemals SSL) erstellen kann. Gegründet wurde das Projekt 2014 von der EFF((Electronic Frontier Foundation; NGO, die sich für Grundrechte im Internet einsetzt)), Mozilla und der University of Michigan. Am 3. Dezember 2015 startete die öffentliche Beta-Phase, ab der man ohne vorherige Einladung mithilfe des in Python geschriebenen ''[[https://github.com/letsencrypt/letsencrypt|letsencrypt]]''-Clients weitestgehend automatisiert Zertifikate für den eigenen Server erhalten kann.
 +
 +==== Let's Encrypt-Client heißt nun Certbot ====
 +
 +Seit Mai 2016 läuft der offizielle Let's Encrypt-Client ''letsencrypt'' unter dem Namen "''certbot''" und wird weiterhin wie zuvor hauptsächlich von der EFF betreut, ist nun aber ein EFF-Projekt, siehe dazu die [[https://www.eff.org/deeplinks/2016/05/announcing-certbot-new-tls-robot|offizielle Mitteilung]]. Zugleich wurde mit der Umbenennung eine neue Webseite gestartet, https://certbot.eff.org/. Auf dieser muss nur der verwendete Server sowie das Betriebssystem ausgewählt werden, um die passende Anleitung zu erhalten. Um weiterhin problemlos Zertifikate zu erhalten, muss in bisherigen Skripten der Befehl ''letsencrypt'' durch ''certbot'' ersetzt werden. Das zugehörige GitHub-Repository lautet entsprechend [[https://github.com/certbot/certbot|certbot/certbot]], der ursprüngliche Link führt dorthin.
  
 ===== Installation ohne Wrapper ===== ===== Installation ohne Wrapper =====
  
-Unter Arch Linux befindet sich der ''letsencrypt''-Client in den Community-Quellen und kann mittels +Unter Arch Linux befindet sich der ''certbot''-Client in den Community-Quellen und kann mittels 
-  # pacman -S letsencrypt+  # pacman -S certbot
 einfach installiert werden. Anstatt alle Einstellungen als Argumente zu übergeben, besteht auch die Möglichkeit, eine Konfigurationsdatei zu erstellen. Standardmäßig sucht der Client nach ''/etc/letsencrypt/cli.ini''. Im Folgenden will ich alles weitestgehend automatisieren und erstelle Domain-spezifische Konfigurationsdateien. einfach installiert werden. Anstatt alle Einstellungen als Argumente zu übergeben, besteht auch die Möglichkeit, eine Konfigurationsdatei zu erstellen. Standardmäßig sucht der Client nach ''/etc/letsencrypt/cli.ini''. Im Folgenden will ich alles weitestgehend automatisieren und erstelle Domain-spezifische Konfigurationsdateien.
   # vim /etc/letsencrypt/domain.tld.cnf   # vim /etc/letsencrypt/domain.tld.cnf
Line 51: Line 55:
 ==== Ausführung ==== ==== Ausführung ====
  
-Zuerst erstellen wir den unter ''webroot-path'' angegebenen Pfad, da sich der ''letsencrypt''-Client ansonsten mit einer Fehlermeldung beendet:+Zuerst erstellen wir den unter ''webroot-path'' angegebenen Pfad, da sich der ''certbot''-Client ansonsten mit einer Fehlermeldung beendet:
   $ mkdir /tmp/letsencrypt   $ mkdir /tmp/letsencrypt
 Nun können wir den Vorgang mit Nun können wir den Vorgang mit
-  # letsencrypt certonly -c /etc/letsencrypt/domain.tld.cnf+  # certbot certonly -c /etc/letsencrypt/domain.tld.cnf
 starten. Das Ganze dauert ein wenig; was aktuell ausgeführt wird, kann durch hinzufügen der Flag ''-v'' am Ende des Befehls angezeigt werden. War alles erfolgreich, müssen wir nur noch die Zertifikate in nginx einbinden. starten. Das Ganze dauert ein wenig; was aktuell ausgeführt wird, kann durch hinzufügen der Flag ''-v'' am Ende des Befehls angezeigt werden. War alles erfolgreich, müssen wir nur noch die Zertifikate in nginx einbinden.
  
Line 83: Line 87:
  
 Das Erneuern der Zertifikate ist denkbar einfach und läuft analog zu der erstmaligen Ausführung ab. Da alle Einstellungen in einer Konfigurationsdatei hinterlegt sind, kann mit dem Aufruf von Das Erneuern der Zertifikate ist denkbar einfach und läuft analog zu der erstmaligen Ausführung ab. Da alle Einstellungen in einer Konfigurationsdatei hinterlegt sind, kann mit dem Aufruf von
-  # letsencrypt certonly --renew -c /etc/letsencrypt/domain.tld.cnf+  # certbot certonly -c /etc/letsencrypt/domain.tld.cnf
 die Erneuerung angestoßen werden. Ist das Skript durchgelaufen, muss der Server nur noch mit die Erneuerung angestoßen werden. Ist das Skript durchgelaufen, muss der Server nur noch mit
   # systemctl restart nginx   # systemctl restart nginx
Line 99: Line 103:
  
 DOMAIN=${1?"No argument given! Please provide the domain which should be renewed"} DOMAIN=${1?"No argument given! Please provide the domain which should be renewed"}
 +EMAIL=$(awk '/email/ {print $3}' /etc/letsencrypt/$DOMAIN.cnf)
  
 if [ ! -f /etc/letsencrypt/$DOMAIN.cnf ]; then if [ ! -f /etc/letsencrypt/$DOMAIN.cnf ]; then
Line 107: Line 112:
 # Renew Let's Encrypt SSL cert # Renew Let's Encrypt SSL cert
 mkdir -p /tmp/letsencrypt mkdir -p /tmp/letsencrypt
-letsencrypt certonly --renew -c /etc/letsencrypt/$DOMAIN.cnf+certbot certonly -c /etc/letsencrypt/$DOMAIN.cnf
  
 if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
         ERRORLOG=`tail /var/log/letsencrypt/letsencrypt.log`         ERRORLOG=`tail /var/log/letsencrypt/letsencrypt.log`
-        echo -e "The Lets Encrypt Cert has not been renewed!\n\n" $ERRORLOG | mail -s "Lets Encrypt Cert Alert" admin@$DOMAIN+        echo -e "The Lets Encrypt Cert has not been renewed!\n\n" $ERRORLOG | mail -s "Lets Encrypt Cert Alert" $EMAIL
 else else
         systemctl restart nginx         systemctl restart nginx
Line 138: Line 143:
 </code> </code>
  
 +==== cron-Regeln testen ====
 +
 +Sollten die ''cron''-Regeln eher kryptisch anmuten, ist es mit der [[http://www.dataphyx.com/cronsandbox/cronsandboxgui.php|Cron Sandbox]] möglich, sich die nächsten Termine anzeigen zu lassen, die mit der jeweiligen Regel zutreffen.
 +
 +===== Komplett manuell ohne Client =====
 +
 +Es ist auch möglich, komplett manuell ohne Verwendung des ''certbot''-Clients Zertifikate zu beziehen. Dazu hat jemand eine statische Seite geschrieben, bei der man sich selbst um die Arbeit kümmern muss: https://gethttpsforfree.com/. Dazu sollte man jedoch wissen, wie man Zertifikate mit einem [[server:openssl|CSR]] beantragt.
server/letsencrypt.1449529457.txt.gz · Last modified: by sascha