PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


Archive for the ‘SSL’ tag

SSL-Sicherheit testen

with 6 comments

Aus Interesse habe ich mal einige bekanntere Webseiten durch zwei SSL-Checks laufen lassen, um zu gucken wer patzt bzw. wer vieles richtig macht. Dazu habe ich die Online-Services von ssllabs.com und wormly.com genutzt. Einfach Domain eingeben, und schon hat man Ergebnisse. Dabei ist der Test von wormly.com ausführlicher und strenger, deshalb ist die Tabelle auch danach sortiert. Eigentlicher Ansporn war der Vergleich von mail.de mit anderen E-Mail-Anbietern (blau markiert), und dann habe ich noch weitere hinzufügt:

Weiterlesen »

Written by Michael Kliewe

November 29th, 2012 at 11:10 am

Posted in Server-Software

Tagged with , , ,

SPDY Beta-Patch für nginx verfügbar: Ein erster Test

with 12 comments

Endlich ist es soweit, mein favorisierter Webserver nginx erhält SPDY Support. Für Apache gibt es schon seit längerem ein SPDY-Modul das seit einigen Wochen als stabil gekennzeichnet ist. SPDY wird wahrscheinlich das neue HTTP 2.0, von Google entwickelt bietet es einige neue Features die das Web schneller und sicherer machen sollen. Unter anderem wird alles komprimiert (auch die Header), SSL ist zwingend vorgeschrieben und mittels Multiplexing können alle Resourcen über eine TCP-Verbindung geladen werden, und noch einiges mehr. Wer mehr über SPDY wissen will schaue sich am besten das Video von Google über SPDY an, es ist sehr empfehlenswert!

Weiterlesen »

Written by Michael Kliewe

Juni 16th, 2012 at 10:08 am

Posted in Server-Software

Tagged with , , , , , ,

Client-Zertifikate als sicherer Login-Ersatz?

with 18 comments

Wer auf Sicherheit achtet und seinen Webseitenbesuchern etwas Privatsphäre spendieren möchte installiert ein SSL-Zertifikat auf dem eigenen Webserver. Damit ist es Besuchern möglich verschlüsselt mit dem Webserver zu kommunizieren und ein eventuell vorhandener Mithörer im offenen WLAN guckt dumm aus der Wäsche. Spätestens wenn es um Login-Daten oder andere persönliche Informationen geht sollte HTTPS eigentlich mittlerweile Standard sein, aber auch für normale Seiten lohnt es sich, denn bereits eine URL verrät einiges über eine Person, auch wenn die Seite eigentlich nichts geheimes enthält.

Weiterlesen »

Written by Michael Kliewe

Februar 11th, 2012 at 11:13 am

Der Unterschied zwischen fsockopen() und stream_socket_client()

with one comment

Oft findet man in seinem Code (oder den benutzten Libraries wie beispielsweise Zend Framework) die Funktion fsockopen(). Daran ist auch eigentlich nichts verwerfliches, sie ist seit PHP 4 verfügbar und tut im Prinzip das selbe wie stream_socket_client(): Sie baut eine Socket-Verbindung zu einem entfernten Server auf, beispielsweise zu einem Webserver:

$socket = @fsockopen('ssl://www.example.org' , 443 , $errno , $errstr , 30);

fsockopen() versteht also auch SSL wie man oben sieht. Man kann nun ganz normal fread(), fwrite() und fclose() verwenden.

Wo ist nun also der Vorteil von der seit PHP5 verfügbaren Funktion stream_socket_client()?

Nehmen wir an unser Server besitzt mehrere IP-Adressen. fsockopen() kann man nicht beibringen welche der IP-Adressen es nutzen soll um die ausgehende Verbindung aufzubauen. Mit stream_socket_client() geht das wie folgt:

$socket_options = array('socket' => array('bindto' => '192.0.2.1:0'));
$socket_context = stream_context_create($socket_options);
$socket = stream_socket_client('ssl://www.example.org:443', $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $socket_context);

Ein weiterer Pluspunkt sind die vielfältigen Optionen bei der SSL Verbindung. Beispielsweise kann man die Überprüfung des Zertifikats aktivieren, selbst signierte Zertifikate erlauben oder auch nicht, den Pfad zum CA-File festlegen und einiges mehr.

$socket_options = array('ssl' => array('verify_peer' => true, 'allow_self_signed' => true));

Es gibt auch eine Menge Optionen für die HTTP(s) Verbindungen. Man kann den User Agent ändern, einen Proxy-Server definieren, als Protokoll-Version entweder 1.0 oder 1.1 verwenden etc.

$socket_options = array('http' => array('user_agent' => 'Mein UA', 'protocol_version' => '1.1'));

Ich suche noch die Nachteile von stream_socket_client, bisher habe ich keine gefunden. Beide beherrschen den non-blocking Modus, mit beiden kann man auch permanente Verbindungen aufbauen, die wiederverwendet werden falls man kurze Zeit später nochmal genau die selbe Verbindung aufbaut, und stream_socket_client() bietet noch viele weitere Stream-Funktionen, die fsockopen() häufig nicht unterstützt.

Wer von euch nutzt bevorzugt fsockopen und warum?

Written by Michael Kliewe

November 26th, 2010 at 10:07 am

Posted in PHP

Tagged with , ,