Kostenloses SSL-Zertifikat holen und einrichten
Ab heute ist phpgangsta.de auch über https erreichbar. Wer also sicher gehen möchte dass er auch auf dem richtigen Server landet und keinen „Mann in der Mitte“ zuhören kann ab jetzt auch https://www.phpgangsta.de besuchen.
Warum hat das eigentlich nicht jeder? Gäbe es keine Nachteile wäre das wohl so, aber normalerweise kosten SSL-Zertifikate Geld, viel Geld, je nachdem wieviele Funktionen das Zertifikat erfüllen soll. Es ist zwar auch möglich, sich selbst Zertifikate zu erstellen, dann bekommt der Benutzer jedoch eine Fehlermeldung zu dem selbst signierten Zertifikat, und das möchte man eigentlich seinen Usern nicht zumuten.
Es gibt aber auch kostenlose, von einer Certified Authority (CA) signierte Zertifikate, und genau solch eins habe ich hier nun installiert. Wie man ein solches Zertifikat von StartSSL bekommt könnt ihr im Heise-Artikel „SSL für lau“ nachlesen. Es gibt natürlich auch noch weitere Anbieter, zB CaCert.
Danach haben wir also 3 Dateien:
- Ein Zertifikat für die Domain (hier phpgangsta.de.crt)
- Eine Datei mit dem privaten Key(hier phpgangsta.de.key)
- Ein sogenanntes Intermediate Zertifikat, auch Chain-Certificate oder Kettenzertifikat genannt (hier sub.class1.server.ca.pem)
Nachdem man ein solches Zertifikat erhalten hat, muss man es noch im Webserver installieren. Ich gebe hier 2 Anleitungen, einmal für den Apache2 und einmal für nginx.
Der Apache2 benötigt zuerst einmal SSL-Support, dazu sollte man das entsprechende Modul installieren:
sudo a2enmod ssl
Dann benötigen wir einen zusätzlichen VirtualHost, der die SSL-Verbindungen entgegennimmt. Darin definieren wir auch die Pfade zu den Zertifikaten:
<VirtualHost 85.214.28.26:443> ServerName phpgangsta.de ServerAlias www.phpgangsta.de php-gangsta.de www.php-gangsta.de ServerAdmin username@gmx.de DocumentRoot "/path/to/phpgangsta/wordpres/" SSLEngine On SSLCertificateFile /etc/apache2/ssl/phpgangsta.de.crt SSLCertificateKeyFile /etc/apache2/ssl/phpgangsta.de.key SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem <hier noch viele Anweisungen zum Logging, safe-mode, open_basedir, deflate, expires usw.> </VirtualHost>
Nach dem Ändern der Apache-Konfigration benötigen wir natürlich noch einen Restart des Dienstes:
sudo /etc/init.d/apache2 configtest sudo /etc/init.d/apache2 stop sudo /etc/init.d/apache2 start
Danach sollte die Domain auch verschlüsselt zur Verfügung stehen.
Im nginx geht es ähnlich einfach:
Um SSL nutzen zu können muss nginx mit dem configure-Parameter –with-http_ssl_module kompiliert sein. Dann fügt man einen weiteren VHost hinzu, ähnlich wie im Apache:
server { listen 443 ssl; server_name www.phpgangsta.de php-gangsta.de www.php-gangsta.de; ssl_certificate /etc/apache2/ssl/phpgangsta.de.crt; ssl_certificate_key /etc/apache2/ssl/phpgangsta.de.key; ssl_session_timeout 5m; ssl_protocols SSLv3; ssl_ciphers HIGH:!ADH:!MD5; ssl_prefer_server_ciphers on; keepalive_timeout 70; location / { proxy_pass http://backendwebserverupstream; } }
Wie man sieht ist das hier ein Reverse-Proxy-VHost, der die SSL-Verbindung terminieren soll. Auch fällt auf, dass man hier nur 2 Angaben machen muss, es fehlt das Intermediate-Certificate. Das muß man beim nginx an das Domain-Zertifikat anhängen:
cat /etc/apache2/ssl/sub.class1.server.ca.pem >> phpgangsta.de.crt
Dann noch den nginx neustarten und alles ist wunderbar:
sudo /etc/init.d/nginx configtest sudo /etc/init.d/nginx restart
Bei der Recherche zu nginx (ich habe mal das Mail-Proxy-Modul ausprobiert, funktioniert super auf den ersten Blick!) bin ich über diese Seite bei Calomel gestossen, die ich unbedingt weiterempfehlen möchte, eine schöne umfangreiche Seite die noch einige Informationen bereithält, die das nginx-Wiki nicht bietet.
Ein Problem gab es bei WordPress allerdings noch: Wenn man die Seite über https aufgerufen hat, waren die Links darin noch http://… Das konnte ich jedoch relativ einfach durch das Addon HTTPS for WordPress lösen, dann werden die Links alle korrigiert. Hätten WordPress und die ganzen Addons diese „absoluten URLS“ nicht benutzt hätte es das Problem auch nicht gegeben.
WordPress Addon SexyBookmarks hinzugefügt
Da ich mir natürlich wünsche dass meine Artikel auf anderen Seiten weiterverlinkt werden, vereinfache ich nun das Setzen von Bookmarks bei bekannten Diensten sowie das Retweeten mit Hilfe des WordPress-Addons SexyBookmarks. Dadurch sind nun unter jedem Artikel ein paar Symbole von Sozialen Netzwerken und Bookmark-Diensten, mit denen man mit einem Klick den Artikel verlinken kann.
Da ich nicht genau weiß welche Dienste ihr nutzt habe ich erstmal die mir bekannten Dienste dort angezeigt. Falls ihr ein Symbol vermisst (und es in der Liste der unterstützten Features ist) füge ich es natürlich gern hinzu.
Was könnte ich sonst noch tun, um euch zu animieren, meine Artikel zu verlinken? 🙂
Lesepool Nummer 1
Wer über das Wochenende nicht bereits genug ausgelastet ist, kann hier noch einige interessante Artikel und Webseiten lesen, die ich so in den letzten Tagen gesammelt habe:
PHP:
Month of Bugs in PHP: May 2010
http://www.suspekt.org/2010/02/19/sneak-preview-month-of-php-security-2010/
Symfony 2 soll das schnellste Framework sein? Padraic Brady beschleunigt das Zend Framework
http://blog.astrumfutura.com/archives/421-PHP-Framework-Benchmarks-Entertaining-But-Ultimately-Useless.html
Changelog Zend Framework 1.10.2
http://framework.zend.com/changelog/1.10.2
Man darf doch träumen: Browser Feature Wunschliste
http://www.stevesouders.com/blog/2010/02/15/browser-performance-wishlist/
Das Hacken hat begonnen: HipHop auf GitHub
http://github.com/facebook/hiphop-php
Witziges für Entwickler:
Yeehaa, wir hassen den Internet Explorer!
http://www.chigarden.com/2007/10/tutorial-making-the-ie-voodoo-doll/
Hatte ich ja bereits via Twitter gepostet, aber es ist einfach gut:
http://www.worktobejudged.com/strippause/peca.html
Ich hoffe, dass ich es regelmäßig schaffe, Links zu posten, aber es wird wohl nicht jede Woche sein denke ich, mal sehen.
Gratulation an „PHP Hates Me“ für 500 eindrucksvolle Artikel!
Tja, was soll ich viel sagen, einer meiner fast täglichen Stammblogs über PHP, und mehr oder weniger Inspirator für meinen eigenen Blog feiert heute: „PHP Hates Me“ hat an den letzten 500 Arbeitstagen 500 Artikel veröffentlicht, Gratulation meinerseits!
Auf einige interessante Artikel habe ich ja bereits verwiesen hier im Blog. Immer interessant finde ich auch die wöchentlichen Lesestoff-Links, vielleicht sollte ich das auch mal machen.
Wie dem auch sei, ich wünsche jedenfalls viel Erfolg für die nächsten 500 Artikel!
Software grafisch darstellen mit Code_Swarm
Hier erstmal das Video, damit ihr seht worum es geht:
Dies ist das Video, das ich gerade erstellt habe, und zwar vom Zend Framework 1.10 branch. Man sieht, wo welche Programmierer mitgeholfen haben, wer häufig welche Art von Dateien bearbeitet usw. Mit mehr Zeit könnte man da noch andere coole Dinge mit anstellen, wie beispielsweise weitere Dateiendungen farbig markieren etc. etc.
Es gibt natürlich auch aussagekräftigere Tabellen und Statistik-Tools, aber ich finde das eine sehr schöne Darstellung, sollte man mal von seinem Projekt machen wenn mehrere Leute involviert sind (als Motivation).
Code_Swarm kann auf svn, git, hg und wahrscheinlich noch weiteren Repositories losgelassen werden. Wie man es installiert und laufen lässt steht hier:
http://github.com/rictic/code_swarm
ich möchte es nicht kopieren. Ich habe es bereits ohne Probleme unter Mac OS X und Ubuntu ans Laufen bekommen. Unter Ubuntu 9.10 sah das so bei mir aus:
cd mkdir code_swarm cd code_swarm sudo apt-get install git-core subversion mencoder git clone git://github.com/rictic/code_swarm.git svn co http://framework.zend.com/svn/framework/standard/branches/release-1.10/ export PATH=$PATH:~/code_swarm/code_swarm/bin cd release-1.10 code_swarm
Der erste Aufruf von code_swarm generiert eine Folge von Ergebnisbildern, die man auch als Film angezeigt bekommt.. Um viele Tausend png-Bilder auf der Festplatte zu generieren, die wir dann noch in einen Film umwandeln können, muss in der Projektdatei (~/code_swarm/release-1.10/.svn/.code_swarm/project.config) folgendes geändert werden:
ColorAssign3="Source Code" <-- .php hinzufügen TakeSnapshots=true SnapshotLocation=frames/#####.png
Dann nochmal code_swarm im Repository-Verzeichnis aufrufen, anschliessend wird der Aufruf von mencoder daraus ein Video generieren:
cd ../code_swarm/frames/ mencoder mf://*.png -mf fps=24:type=png -ovc lavc -oac copy -o video1.avi
Bei Problemen oder weiteren Einstellungsfragen sollte man dieses HowTo gelesen haben. Hier ist noch ein Posting wo man sehr viele Einstellungsmöglichkeiten sehen kann (Die „Masse“ der Entwickler, Framegröße, Geschwindigkeiten usw)
Weitere interessante Projekte, die sich mit der visuellen Darstellung von Repositores oder Logs beschäftigen, kann man hier sehen: