Cruz: SSL Verständnisfragen

Beitrag lesen

Hallo,

  1. Zum Herstellen einer SSL-Verbindung
    a) benötigt man ein Zertifikat, bekommt man z.B. von thawte

Ja. Man kann sich ein Zerti auch selbst ausstellen, um Kosten zu sparen. Die Verbindung ist dann genau so gut verschlüsselt. Man büsst dann allerdings die Sicherheit ein, dass die Gegenseite die ist, die sie vorgibt zu sein, die man seinen Besuchern bieten möchte.

b) und SSL-Unterstützung auf seiten des Webservers, z.B. durch OpenSSL für Apache (das entsprechende Modul muss natürlich aktiviert werden)
c) und muss die entsprechende Seite dann einfach mit 'https://' anstatt 'http://' aufrufen.

Ja alles richtig.

  1. SSL sollte aus Performancegründen nur dann verwendet werden, wenn es wirklich benötigt wird.

Ich denke der Grund es nicht überall einzusetzen sollte eher sein, dass gesicherte Bereiche von ungesicherten Bereichen auch von einem Besucher klar unterscheidbar sind. Die zusäzliche Rechenleistung, die man für die Verschlüsselung braucht, ist kaum spürbar, und muss höchtens auf Systemen in Betracht gezogen werden, die sehr schwer unter Last stehen.

Ich muss gestehen, dass ich nicht informiert bin, wie genau mit PHP geöffnete MySQL-Verbindungen aussehen (sprich welches Protokoll verwendet wird; ob es sicherheitstechnisch einen Unterschied macht, ob die MySQL-Datenbank auf demselben Server liegt wie die PHP-Skripte)

Diese Medallie hat zwei Seiten. Sind Skripte und Datenank auf dem selben Server, dann müssen sie nicht über eine unsichere Verbindung (Netzwerk oder sogar über Internet) kommunizieren. Anderseits bietet ein Host, wo Webdienste (apache + PHP, SSH und womöglich sogar FTP) laufen, mehr Angriffsfläche und ist daher grundsätzlich schon mal etwas unsicher. Die Datenbank kann dann natürlich auch nur den selben, geminderten Sicherheitsstandard haben.

Eine Konstellation, wo die Skripte und die DB auf unterschiedlichen Hosts sind, lässt sich besser absichern. Die Verbindung kann man ja verschlüsseln und damit die Datenübertragung hinreichend gut schützen. Und wenn die Datenbank der einzige Dienst ist, den der Datenbankserver betreibt, dann kann man diesen Server wunderbar absichern, indem er keine anderen Anfragen annimmt, als für die Datenbank und die am besten auch noch nur von einem einzigen bestimmten Host, nämlich da wo die Skripte laufen. Auf diese Weise kann man die Sicherheit der Daten etwas erhöhen. Viel ist es allerdings nicht, denn wenn ein Angreifer die Kontrolle über den "PHP" Server erlangt, dann kann er ja die Skripte selbst dafür benutzen die Daten abzusaugen.

  1. Was muss ich tun, um die Verbindung mit SSL zu sichern?

Das kann ich jetzt auch nicht aus dem Stehgreif sagen, ich müsste genau das tun was du lieber selber machst, nämlich die Dokumentation aufschlagen.

  1. Gibt es eine Möglichkeit, PHP-MySQL-Verbindungen nur manchmal mit SSL zu verschlüsseln (nämlich dann, wenn ein Benutzer eine Seite über 'https://' aufruft) oder wird dann jede Verbindung zwischen PHP und MySQL verschlüsselt?

Ja die Möglichkeit besteht, aber es ist zusätzlicher Aufwand das so einzurichten und gewinnen tust du dadurch nicht wirklich was. Verschlüssele die Übertragung lieber einfach in jedem Fall.

  1. zu Frage 4: Falls jede Verbindung verschlüsselt wird, wie viel Performance kostet das in etwa?

Nicht spürbar.

Gruß,
Cruz