Let’s Encrypt Zertifikate automatisch erneuern

Hallo Zertifikatfreunde!

In dem Beitrag „Kostenloses SSL Zertifikat“ habe ich gezeigt, wie man sich bei Let’s Encrypt ein kostenloses Zertifikat besorgt. Jetzt stand die erste Erneuerung an und ich dachte mir, warum nicht als cron? Der Mensch an sich ist faul und will so wenig wie möglich selber machen. Wir (Sebastian und ich) haben die Zertifikate zusammen auf dem Server abgelegt, so dass ich hier direkt alle überprüfen und gegebenenfalls aktualisieren kann.

Viele Anregungen habe ich aus den Community Foren, aber den Großteil konnte ich von einem Blog übernehmen: Automatic renewal of Let’s Encrypt issued certificates.

Hier zu habe ich erst mal ein Shell-Skript in /etc/cron.monthly/issue-certificates.sh  angelegt. Der Inhalt des Skriptes sieht folgendermaßen aus:

Das Skript prüft, wie lange die Zertifikate noch gültig sind und erneuert diese bei Bedarf. Um hier flexibel bei den Domains zu bleiben, wird mit einer ini-File gearbeitet. Der Inhalt der Datei(en) sieht so aus:

Als erstes wird überprüft, ob das Verzeichnis  /etc/letsencrypt/live überhaupt vorhanden ist. Dort liegen alle Zertifikate. Danach wird mit Hilfe von openssl das Ablaufdatum der Zertifikate überprüft. Der Domainname und seine Aliase werden in  $domains gespeichert. Der Name der ini-File entspricht dem Namen der „Hauptdomain“ (zB example.com).

Nachdem alle Namen gespeichert sind, wird die Funktion issueCerts  mit den Parametern $inifile  und $domains  aufgerufen. Diese können dann mit $1  und $2  verwendet werden.

Die volle Zeile würde so aussehen:

Das Ergebnis wird per Mail an die angegebene Adresse gesendet. Bei einem Fehler wird der errorlog von Let’s Encrypt angehangen.

Viel Spaß beim automatisieren!

Zwei neue Freunde – Dali und Onkyo

Seit kurzem habe ich zwei neue Freunde. Naja, eigentlich sind es sogar drei neue Freunde. Zwei schöne Dali Zensor 1 zieren nun mein TV Lowboard.

Dali Zensor 1
Dali Zensor 1, Quelle: http://www.dali-speakers.com

Der dritte Freund ist ein Onkyo TX-NR646. Man was ein tolles Gerät 🙂

Bisher habe ich nur wenige der Funktionen entdecken können, aber ich gebe mir Mühe. Schon alleine die zwei HDMI Out sind klasse. Jetzt kann ich auch am Schreibtisch Fernsehen gucken.

Onkyo TX-NR646
Onkyo TX-NR646, Quelle: http://www.de.onkyo.com/de/

Empfehlung: Wer ein tolles Geschäft für Lautsprecher, Leinwände, Beamer oder Fernseher sucht, geht am besten zu GROBI in Kaarst.

Den AV-Receiver habe ich bei Saturn am Limbecker Platz in Essen gekauft. Netter Verkäufer mit solidem Fachwissen. Danke an dieser Stelle!

Bin dann mal Fernsehen 🙂

Webentwicklung mit Vagrant und Virtualbox

Und warum sollte man sich selber einen Server auf dem Rechner schaffen, wenn man doch schon irgendwo einen stehen hat? Da gibt es viele Antworten. Mit das wichtigste ist, dass die Dateien alle lokal vorhanden sind. Ich kann schnell Suchen und Navigieren, meine Tests ausführen oder auch mal neue Konfigurationen (PHP 7, HHVM oder MariaDB) testen. Ebenso spart man sich das ständige Deployment.

Grundlagen

Als Grundlage dient immer Vagrant und VirtualBox in der jeweils aktuellsten Version. Beides wird mit den Standardeinstellungen installiert, danach sind keine weiteren Einstellungen notwendig.

Allgemeine PHP Projekte

Für allgemeine PHP Projekte greife ich auf eine generierte Box von phansible.com zurück. Je nach Anforderungen wechsle ich zwischen MySQL und MariaDB, sowie PHP und HHVM.

Unter „Basic Options“ empfiehlt es sich unter Mac OS X und Linux den „Synced Folder Type“ auf NFS zu setzen.
Als Webserver kommt ausschließlich Nginx zum Einsatz.

phansible.com Konfiguration
phansible.com Konfiguration

Lädt man nun die Zip Datei herunter, erhält meine eine fertige Vagrantfile inklusive aller Rollen für Ansible.

„Webentwicklung mit Vagrant und Virtualbox“ weiterlesen

Kostenloses SSL Zertifikat mit let’s encrypt

Ihr seid die selbst-signierten Zertifikate leid und wollt endlich ein kostenloses SSL Zertifikat? Kein Problem mit Let’s Encrypt. Dies ist nun aus der geschlossenen beta raus und kann von jedem genutzt werden.  Das einzige Problem hier ist, dass die Zertifikate alle 3 Monate erneuert werden müssen. Um das zu automatisieren überlege ich mir noch was. Jetzt wird erst mal manuell eins erstellt.

Die Vorgehensweise ist eigentlich relativ einfach, ich beschreibe nur kurz den Weg für Server mit Nginx, da es dort keine automatische Installation gibt.

Als erstes muss man sich an eine Stelle auf dem Server (let’s encrypt empfiehlt ab hier die Arbeit als root) das Git Repository klonen und in den Ordner wechseln.

Seid ihr dem Ordner angekommen, kann man nun mit einem einzigen Befehl sich bei Let’s Encrypt authentifizieren bzw. registrieren und ein Zertifikat „bestellen“.

Kurz zu den Parametern. Mit certonly  werden die Zertifikate nur abgelegt und nicht installiert. Die authentifizierung findet durch --webroot  statt. Wird eine andere Art der Authentifizierung verwendet, dann muss der Webserver vorher gestoppt werden, da letsencrypt die Ports 80 und 443 benötigt. Das wollen wir natürlich im laufenden Betrieb nicht.
Mit --email  kann der Schritt der weiteren Authentifizierung übersprungen werden. Das Webroot (also da wo eure Webseite liegt), wird mit -w  bestimmt. Für jede Domain für die das Zertifikat gelten solle, wird ein -d  angehangen.

Wenn der Befehl ausgeführt wurde, werden erst mal alle Abhängigkeiten für das OS installiert. Das kann je nach Server etwas dauern. Nach der Installation stehen die Zertifikate bereit. Ihr findet diese dann unter  /etc/letsencrypt/live/www.example.com . Folgende Dateien wurden angelegt:

Um in Ajenti die Zertifikate zu verwenden, werden die oben beschriebenen Dateien unter Websites -> SSL angegeben. Unter Ports noch 443 mit SSL angeben und dann läuft eure Seite auch auf https.

Verwendet ihr nur Nginx ohne Verwaltungstools wie Ajenti, dann werden die in die Konfiguration wie folgt angegeben

Jetzt nur noch den Nginx einmal neu starten und wir sind fertig.

Falls ihr für Ajenti noch ein kombiniertes Zertifikat braucht, dann geht das so

Immer dran denken: Alle 3 Monate muss das Zertifikat erneuert werden. Das geht ganz einfach mit dem Befehl oben.

Viel Spaß mit damit!

OS X für PHP Entwickler

OS X, Du hast mich wieder!

Seit einiger Zeit war ich nur noch mit einer Windows Kiste unterwegs, doch nun war die Zeit wieder gekommen – ein neues Gerät mit OS X musste ins Haus. Die Wahl fiel auf ein Macbook Pro 13“. Ich wollte mobil sein um möglichst flexibel beim arbeiten zu sein.

In den letzten Jahren hat sich bei den Tools einiges getan und ich musste mich erst mal wieder umsehen. Habe ich vorher nur mit einem Texteditor, FTP und SVN Client  gearbeitet, kamen immer mehr Tools dazu. Angefangen bei der IDE: Phpstorm!

Phpstorm10
Phpstorm 10

Die wohl zurzeit beliebteste IDE für PHP-Entwickler. Wer sich bereits mit IDEs auseinander gesetzt hat, wird an Phpstorm nicht vorbei gekommen sein. Sie ist lange nicht so träge, wie man es von Eclipse oder Netbeans kennt, ist aber dennoch eine Java Anwendung. Es gibt eine volle Integration der wichtigsten Tools zur Versionskontrolle (SVN, Git), Codevervollständigung, Generatoren für Dateien und Klassen, Live Templates etc.
Für 30 Tage kann es kostenlos getestet werden, danach werden für das erste Jahr 89€, für das zweite 71€ und für das dritte und jedes weitere 53€ fällig. Open Source Projekte bekommen eine kostenlose Version von Jetbrains.
In einem sehr gelungenen Screencast von Jeffrey Way bei Laracasts kann man Phpstorm noch besser kennenlernen. Dort gibt es 24 kleine Videos rund um Phpstorm.

Atlassian Source Tree
Source Tree

Die Integration von Git in Phpstorm kann aber nicht in allen Fällen helfen, so gibt es auch noch ein sehr schönes anderes Tool. Atlassian hat mit Source Tree einen guten Git Client mit GUI geschaffen. Alles das, was sonst im Terminal zu akrobatischen Fingerübungen zwingt, wird einem hier abgenommen. Das Tool ist ebenso für Windows verfügbar. Man sollte schon die Grundlagen für Git kennen. Begriffe wie commit, push, fetch, pull, merge und branch sollten nicht unbekannt sein. Wer noch mehr über Git lernen will, kann das sehr gut mit dem Video Advanced Git for Developers von Lorna Mitchell auf der Laracon EU 2015.
Das beste ist, Source Tree ist kostenlos. Zum Download geht es hier lang: Atlassian Source Tree.

Wir haben jetzt eine IDE und einen Client für Git. Und was ist, wenn mal schnell eine Datei editiert werden muss, ohne das man die IDE dafür aufmachen will? Dann kommt Sublime Text 3 zum Einsatz. Sublime Text kostet $70, kann aber auch ohne zeitliche Begrenzung getestet werden. Es ist für Max OS X, Windows und Linux verfügbar.

Sublime Text 3 mit Material Theme
Sublime Text 3 mit Material Theme

Für Sublime gibt es etliche Color Schemes und Plugins. Gerade die Plugins beinhalten viele kleine Helferlein. Mein Favorit ist Emmet, eine Codevervollständigung für HTML und CSS. Ich selber verwende als Theme und Color-Scheme das Material Design mit den empfohlenen Einstellungen.

Oh my zsh
Oh my zsh!

Ich hatte ja schon die Git Grundkommandos erwähnt. Diese werden im Terminal bzw. der Shell ausgeführt. Da ich schon immer Fan von besonderen Color-Schemes und der Möglichkeit Plugins zu nutzen bin, habe ich die Standard Shell von OS X (bash) auf zsh gewechselt. Dafür gibt es nämlich ohmyz.sh. Eine Sammlung von Color-Schemes, hilfreichen Skripten und Plugins. Ich verwende hier ein sehr auffälliges Farbschema, bei dem man sich auch noch die richtigen Schriftarten besorgen muss. Aber ich finde es lohnt sich. Die Anleitung dazu, findet ihr auf der Webseite von ohmyz.sh

Cyberduck
Cyberduck

Wenn es um Deployment geht, kann man viel mit Phpstorm erledigen, aber ein Client für (S)FTP, FTP etc. ist auch immer wieder gefragt. Da gibt es zweierlei. Ich persönlich verwende Cyberduck, eine Donationware. Verbindungen können verwaltet werden, SFTP Verbindungen mit SSH-Schlüsseln stellen kein Problem dar. Nur die mehrspaltige Ansicht fehlt. Als Alternative bietet sich immer das kostenpflichtige ($34 / Lizenz) Transmit an. Dies gibt es mittlerweile in Version 4. Alles zu Transmit gibt es auf der Seite des Herstellers: Panic Transmit 4

Als MySQL Client habe ich mich für SequelPro entschieden. Der wohl größte Vorteil gegenüber Navicat ist, dass es kostenlos ist. Navicat kommt als Navicat for MySQL und kostet $149. SequelPro ist ein ganz normaler Client, der alle wichtigen Funktionen von MySQL unterstützt. Screenshots dazu findet Ihr auf der Seite von Sequel Pro.

Das war die Sicht auf eine, für mich perfekte, Entwicklungsumgebung für PHP Entwickler.

Im nächsten Beitrag werde ich darauf eingehen, wie meine Umgebung für den Testbetrieb aussieht. Hier wird mit Vagrant, Virtualbox und Ansible gearbeitet, was aber den Rahmen hier sprengen würde.