[PHP] Frage zu SSL

almdudler777

Well-known member
ID: 115892
L
21 Mai 2006
45
1
Hallo Leute,

also erstmal ist SSL für mich eine ganz neue Problematik...

Die Zertifikate die man dafür braucht, sind ja enorm teuer, sollen ja eig. nur dem Client Browser sagen, dass man eine "sichere und seriöse" Webseite anbietet.

Eigentlich, soll der Benutzer gar kein SSL zu gesicht kriegen, ich brauche es mehr für die Kommunikation zweier Server.

Sprich web1 fragt bei web2 etwas an. Das geschieht mittels PHP und der fopen funktion. Alles was dazwischen den beiden geturtelt wird soll nicht abhörbar sein... da sensible Daten und Datenschutz man kennt das ja...

Ist sowas möglich wenn ja gibt es da tutorials für? Muss ich überhaupt in PHP etwas gesondert dafür einbauen?


Meine andere Frage ist: Was wird alles verschlüsselt übertragen? Ist da bereits der HTTP Header o.ä. verschlüsselt? Denn die fopen funktion öffnet eine Adresse à la: https://web2.de/?supergeheim=interneNummerdesKunden...

Wäre diese Adresse abhörbar? Denn dadrin können u.U. schon sensible Daten stehen.

MFG almdudler777 & thanks in advance, wie der Engländer sagen würde
 
RSA mit PHP
damit verschlüssels du die Werte die du überträgst
als eine Alternative zu ssl
 
danke dir für die Antwort... fällt leider aber raus...

hätte sagen sollen, das der web2 NICHT mir gehört! Die Schnittstelle zur Kommunikation kann ich also nicht ändern!
 
Du bist eben auf das angewiesen, was web2 hat. Und die einzige sichere Möglichkeit wäre da, dass web2 SSL hat, wenn nicht, ist alles im Klartext abhörbar.
Dann müsstest du mit web2 eben mal drüber reden die Daten über andere Wege herauszugeben, zum Beispiel durch eine symetrische Verschlüsselung
 
web2 ist mit SSL ausgestattet... web1 ist nen Paket von 1und1 mit SSL (Buisinesspaket)

für mich halt interessant, ist diese anfrage mit SSL sicher?
und für später, wo bekomme ich die Zertifikate her vor allem kostenlos? Wie gesagt der Besucher braucht es nicht zu sehen brauche nur die verschlüsselung...
 
web2 ist nicht von mir und web1 ist wie gesagt nen Webpaket bei 1und1....

(ich habe zwar auch nen rootserver aber das ist für die aktuelle situation nicht wichtig... wie gesagt später ja ;-))

aber erstmal ist nur interessant ob die Verbindung über

PHP:
<?php 
$fp = fopen("https://web2/?geheimenummer= 22244");
?>

sicher ist ... :)

EDIT: damit ich nachher nicht korrigieren muss so wird derzeit der Query verarbeitet:

PHP:
define("qstring1","https://web2/schnittstelle/input.php?");

function qtransfer()
{
 if(!$fp = @file(qget()))
 {
  die("Konnte Query nicht verschicken und damit keine Daten übermitteln...<a href=\"index.php\">Zur Startseite</a>");
 }
 else
 {
  $url = substr($fp[0],4,strlen($fp[0]));
  $pk = substr($fp[1],3,strlen($fp[1]));
  return (array("url" => $url,"pk" => $pk));
 }
}


function qget()
{
global $qstring;
 $ret = "";
 foreach($qstring as $var=>$value)
 {
  $ret .= "&".$var."=".rawurlencode($value);
 }
 $ret = qstring1 . $ret;
 return($ret);
}
 
Zuletzt bearbeitet:
SSL-Zertifikate kann man generell selbst erstellen. Die Problematik liegt darin, das man dann das jeweilige Root-Zertifikat nicht im Browser eingebaut hat.. (bei selbst-signierten Zertifikaten ists dann jeweils das, da dort ja der Issuer auch das Subject ist).

Wobei wir auch beim Problem sind: Wenn der Browser die Gültigkeit des Zertifikats nicht Prüfen kann, ist die Verbindung zwar genau so sicher Verschlüsselt.. aber: Ein Man-In-The-Middle Angriff ist möglich, indem dieser beim Handshake die Zertifikate die ausgetauscht werden, gegen seine eigenen tauscht und somit den Traffic entschlüsseln kann.

D.h. wenn man eigene Zertifikate verwendet, muss man diese direkt im Browser bzw. mit der Anwendung die man nutzt, prüfen.
Den Fingerprint des Zertifikates jeweils zu Gegenseite bringen und den bei jeder Verbindung prüfen, reicht in diesem Fall aus. Falls dann ein Man-In-The-Middle die Zertifikate tauscht, stimmt der Fingerprint nicht mehr mit dem erhaltenen Zertifikat überein und man kann die Verbindung beenden.

Wie das genau mit PHP geht, weiß ich leider nicht.
(wenn ich noch was finde, editier ichs rein)
 
Hi,
mit den eigenen Zertifikarten geht es eigentlich ganz einfach, OpenSSL downloaden und auf dem Root-Server installieren, eigenes Zertifikat erstellen und im Apache einrichten.

Zu @shenziro, du hast recht, diese Zertifikarte kann der Browser nicht überperüfen und wird als Risiko eingestuft, siehe IE7, die machen da ein rießen Terror.
Ich habe auch schon mit OpenSSL Zertifikarte auf meinem Server eingerichtet und hab selber die Auswirkung leider im IE7 feststellen müssen.

Aber da du ja nicht für die Öffentlichkeit SSL haben möchtest, sondern zwischen 2 verschiedene Servern Daten austauschen willst, würde sowas sogar reichen.

Wenn ich es richtig verstanden habe ist "web1" nur ein Webhosting-Paket ohne Root-Zugriff, da musste halt eine Verschlüsslungstechnik, z.b. den Tipp von ice-breaker mit einer symetrische Verschlüsselung.
 
danke euch Leute!

wie gesagt derzeit reicht es mir, dass der Aufruf über fopen()/file() nicht abgehört werden kann. Beide Seiten haben SSL mit gültigen Zertifikaten und allem drum und dran... der Kunde für den ich diese Schnittstelle abarbeite sollte damit auch zufrieden sein. Beschränkt sich wie gesagt auf die kommunikation zwischen web1 und web2...

Wenn ich später unter meinen eigenen Rootserver kommunizieren will, werde ich mir eh was anderes suchen... wahrscheinlich die Kommandos über SSH absetzen...

MFG almdudler