{"id":79,"date":"2024-03-28T13:13:50","date_gmt":"2024-03-28T12:13:50","guid":{"rendered":"http:\/\/techblog.joerg-klein.online\/?p=79"},"modified":"2024-11-20T11:04:09","modified_gmt":"2024-11-20T10:04:09","slug":"ssl-zertifikat-kostenlos-mit-lets-encrypt-erstellen","status":"publish","type":"post","link":"https:\/\/techblog.joerg-klein.online\/?p=79","title":{"rendered":"SSL Zertifikat kostenlos mit Let\u2019s Encrypt erstellen"},"content":{"rendered":"\n<p>Falls du einen Apache Server laufen l\u00e4sst, kannst du diesen wie folgt beenden. Um einen Node.JS Server zu beenden, reicht es die Anwendung zu killen (ggf. Backgroundprozess beenden).<\/p>\n\n\n\n<p><strong>sudo service apache2 stop<\/strong><\/p>\n\n\n\n<p>Um das Tool zum Erstellen des Zertifikats herunterzuladen, nutzen wir wir Git. Auf den neueren Raspbian Versionen ist dieses schon mit dabei. Falls es auf deinem Betriebssystem (z.B. einer Minimal Raspbian Version) nicht dabei sein sollte, kannst du es einfach nachinstallieren:<\/p>\n\n\n\n<p><strong>sudo apt-get install git<\/strong><\/p>\n\n\n\n<p>Wir laden die Dateien nun in unser Homeverzeichnis und gehen in diesen Ordner:<\/p>\n\n\n\n<p><strong>cd ~<br>git clone https:\/\/github.com\/letsencrypt\/letsencrypt<br>cd letsencrypt<\/strong><\/p>\n\n\n\n<p>Nun brauchst du alle Domains zur Hand, f\u00fcr welche dieses Zertifikat gelten soll. Wenn du bspw. Subdomains hast oder aber deine Domain mit und ohne \u201ewww\u201c aufgerufen wird, kannst du diese gleich alle angeben. In meinem Beispiel m\u00f6chte ich das SSL Zertifikat lediglich f\u00fcr meine Domain, welche ich von NoIP bekommen habe, erstellen. Bei mehreren Domains solltest du die Hauptdomain als erstes angeben.<\/p>\n\n\n\n<p>Der Befehl zum Erstellen des Let\u2019s Encrypt Zertifikats ist folgender (Domains und Mail ersetzen):<\/p>\n\n\n\n<p><strong>.\/letsencrypt-auto -d ERSTE_DOMAIN -d ZWEITE_DOMAIN &#8211;redirect -m DEINE_MAIL<\/strong><\/p>\n\n\n\n<p>Tipp: Solltest du einen Apache Server laufen lassen, kannst du das Tool auch alle weiteren Einstellungen vornehmen lassen, indem du den weiteren Parameter &#8211;apache hinzuf\u00fcgst.<\/p>\n\n\n\n<p>Du wirst nun aufgefordert die Nutzungsbedingungen zu lesen und zu akzeptieren.<\/p>\n\n\n\n<p>In dem Ordner \u201e\/etc\/letsencrypt\/live\/\u201c befindet sich dann ein neuer Ordner mit dem Namen unserer angegeben Hauptdomain. Darin befinden sich vier Schl\u00fcsseldateien, welche gebraucht werden. Je nach Anwendung, ist der Einbau der SSL Zertifikate etwas anders.<\/p>\n\n\n\n<p>Alle Zertifikate von Let\u2019s Encrypt haben eine Laufzeit von 3 Monaten. Nach dieser Periode sind sie abgelaufen und m\u00fcssen erneuert werden. Das Erneuern des Raspberry Pi SSL Zertifikats ist allerdings sehr einfach (Anpassen nicht vergessen):<\/p>\n\n\n\n<p><strong>.\/letsencrypt-auto -d ERSTE_DOMAIN -d ZWEITE_DOMAIN &#8211;redirect -m DEINE_MAIL &#8211;agree-tos &#8211;renew-by-default<\/strong><\/p>\n\n\n\n<p>Hierbei ist der Parameter &#8211;renew-by-default das Entscheidende. Die anderen (weiteren) Parameter sind identisch mit denen, die wir beim Erstellen angegeben haben.<\/p>\n\n\n\n<p>Nun ist es allerdings so, dass man im Dauerbetrieb ja nicht unbedingt alle 3 Monate an die Aktualisierung des Zertifikats denken m\u00f6chte. Daher bietet sich ein kleiner Trick an: Sollte der Raspberry Pi sowieso (fast) immer in Betrieb sein, k\u00f6nnen wir das Zertifikat auch fr\u00fcher aktualisieren, z.B. jeden Monat. Um dies automatisiert laufen zu lassen, nutzen wir Cron:<\/p>\n\n\n\n<p><strong>sudo crontab -e<\/strong><\/p>\n\n\n\n<p>Ans Ende dieser Datei f\u00fcgen wir folgende Zeile hinzu (angepasst wie oben):<\/p>\n\n\n\n<p><strong>0 1 2 * * \/home\/pi\/letsencrypt\/letsencrypt-auto -d ERSTE_DOMAIN -d ZWEITE_DOMAIN &#8211;redirect -m DEINE_MAIL &#8211;agree-tos &#8211;renew-by-default<\/strong><\/p>\n\n\n\n<p>Damit wird am 1. jeden Monats um 02:00 nachts das Tool gestartet und unser Raspberry Pi SSL Zertifikat erneuert.<\/p>\n\n\n\n<p>Sofern der dynamische DNS Service l\u00e4uft und dein Webserver wieder gestartet ist (sudo \/etc\/init.d\/apache2 start) kannst du nun im Browser testen, ob dein Zertifikat erkannt wurde. Dazu rufst du einfach die Domain mit https:\/\/ am Anfang auf. Speziell bei apache2 ist es wichtig, dass die Datei \/etc\/apache2\/ports.conf lediglich einen Eintrag hat, der Port 443 verwendet (alle anderen auskommentieren):<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"241\" height=\"85\" src=\"https:\/\/techblog.joerg-klein.online\/wp-content\/uploads\/2024\/03\/apache-ssl.png\" alt=\"\" class=\"wp-image-81\"\/><\/figure>\n\n\n\n<p>Viele weitere Details finden sich au\u00dferdem in der offiziellen Let\u2019s Encrypt Dokumentation.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Falls du einen Apache Server laufen l\u00e4sst, kannst du diesen wie folgt beenden. Um einen Node.JS Server zu beenden, reicht es die Anwendung zu killen (ggf. Backgroundprozess beenden). sudo service apache2 stop Um das&#46;&#46;&#46;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,4,5],"tags":[],"class_list":["post-79","post","type-post","status-publish","format-standard","hentry","category-allgemein","category-linux","category-raspberry"],"_links":{"self":[{"href":"https:\/\/techblog.joerg-klein.online\/index.php?rest_route=\/wp\/v2\/posts\/79","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/techblog.joerg-klein.online\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/techblog.joerg-klein.online\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/techblog.joerg-klein.online\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/techblog.joerg-klein.online\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=79"}],"version-history":[{"count":2,"href":"https:\/\/techblog.joerg-klein.online\/index.php?rest_route=\/wp\/v2\/posts\/79\/revisions"}],"predecessor-version":[{"id":83,"href":"https:\/\/techblog.joerg-klein.online\/index.php?rest_route=\/wp\/v2\/posts\/79\/revisions\/83"}],"wp:attachment":[{"href":"https:\/\/techblog.joerg-klein.online\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=79"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/techblog.joerg-klein.online\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=79"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/techblog.joerg-klein.online\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=79"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}