Was muss ich als Programmierer zu SSL beachten?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Mit SSL ist heutzutage TLS gemeint (ist aber vom Prinzip her das gleiche mit gemeint).

was muss ich beachten wenn ich jetzt programmiere? Muss ich nicht irgendetwas einrichten so das alles encrypted wird? Reicht es einfach das Zertifikat zu kaufen und zu denken das alles verschlüsselt abgeschickt wird in meinen Formularen vom Browser zum Server und wieder zurück?

Als PHP Programmierer musst du dich nicht darum kümmern, die Verschlüsselung der Antwort, die letzendlich vom Browser empfangen wird, übernimmt die Serversoftware hinter der die PHP Skripte laufen. (Apache, Nginx ...)

Warum schickt der Browser nicht voreingestellt alles verschlüsselt

Ein Browser sendet standardmäßig nicht verschlüsselt, da es damals, als das ARPA-Net (Vorgänger des Internets) entstand, nicht nötig war; man vertraute sich Gegenseitig.
Mit dem Wachsen des Internets nahm auch die Kriminalität zu: Angreifer können sich zwischen die Verbindung von Client und Server setzen, und so die Daten abgreifen und auslesen, aber auch modifizieren (Fachwort: MITM Angriff).
Eine Verschlüsselung hätte aber auch nichts gebracht, da sich der Angreifer als Server ausgeben kann und einfach selbst einen anderen Verschlüsselungsschlüssel (:P) festlegt. Er kann also nach wie vor die Daten klauen.
Deshalb wurden die SSL-Zertifikate eingeführt, die die Identität des Servers bestätigen.
SSL-Zertifikate kosten (bzw. kosteten) aber immer viel Geld, da mit ihnen auch eine große Versicherungssumme verbunden ist. Mit HTTP/2 soll in Zukunft alles verschlüsselt sein.

reicht es wenn ich jetzt ein SSL Zertifikat habe alle Passwörter die eingegeben werden und mit meiner MySQL Datenbank abgeglichen werden einfach mit post zu schicken?

Solange die HTML Seite, auf der sich das Formular befindet, verschlüsselt ankommt (also nicht manipuliert werden kann) und das Formular zu einer verschlüsselten URL zeigt, ist die Verbindung sicher. Die (Session-)Cookies natürlich auch.
Am Rande: Die Passwörter in der Datenbank sollten natürlich auch verschlüsselt sein mit einem Hashverfahren wie bcrypt (https://secure.php.net/manual/de/function.password-hash.php)

Wie sieht der Industrie Standard aus?

Genau so :)

Wie macht es zb Facebook wenn man sich einloggt?

Auf der Facebook Website funktioniert das genauso: Beim Login werden die Daten verschlüsselt übertragen und man erhält entweder einen Fehler oder einen Cookie. Mit dem einzigen Unterschied, dass Facebook kein PHP benutzt ;)

Geht alles über PHP?

Wie gesagt hat PHP damit nichts zu tun, sondern der Webserver. Als Entwickler sollten man allerdings dafür sorgen, das die Verschlüsselung auch genutzt werden kann (wie oben erwähnt: Alle Daten verschlüsselt abrufen, nicht nur einen Teil).


Zusammenfassung: Verschlüsselung hat dich kaum zu kümmern, sorge einfach dafür, dass nicht nur ein Teil, sondern alles verschlüsselt übertragen wird.


Viel Spaß beim Verschlüsseln! :P


Fast hätte ich es vergessen: Die Website sollte natürlich überhaupt nicht mehr unverschlüsselt (über http) erreichbar sein. Frage am Besten sogar nach, ob bei dir HSTS aktiviert werden kann. Das sorgt nochmal für deutlich mehr Sicherheit.

Zuerst einmal rate ich von der nutzung von ssl ab. Lieber tls. Selbst dann sind noch nicht alle cipher suites "gut". Da solltest du später auchnochmal am webserver nachstellen welche erlaubt werden sollen (cipher suites). Wenn du ein zertifikat willst das als vertrauenswürdig anerkannt wird von den gängigen browsern kaufst du dir eins für deine domain meist mit ner laufzeit von einem jahr von ner vertrauenswürdigen zertifizierungsstelle. Nen selbstsigniertes würde es aber von der sicherheit her auch tun bzw wäre sicherer wenn du längere schlüssel verwendest. Das zertifikat(inkl öffentlichen Schlüssel) inkl privatem schlüssel und evtl (wozu ich rate..) noch die dhparams gibst du dann in der webserverconfig an und der regelt vom schlüsselaustausch bis hin zum eigentlichen application data exchange alles für dich. Da du ja scheinbar keinen webserver entwickelst hast du was deine programmierung mit js,html,css,php angeht nichts spezielles zu beachten (y)

Also SSL wird am Webserver terminiert. Du kommst mit http auf Port 80 an un der Webserver redirected dich dann nach 443. Beide Ports mussen also schon mal offen sein.

Wie ssl am Webserver eingerichtet wird hängt von der Syntax ab und du musst natürlich den Key und dein Zertifikat hinterlegen.

Zuerst generierst du den request .csr und dein Key. Der request geht dann an eine certificate authority kurz CA und die signen dann dein request wenn du dich authentifiziert hast gegenüber der ca. Sofern geschehen bekommst du dann dein .crt oder .pem zB von der CA zurück.

Desweiteren musst du cipher suits und die tls Versionen angeben. Da gibts sichere aber auch unsichere Kombination. Ich hatte bspw Probleme mit Firefox und bestimmten suits.

Welches certificate du brauchst hängt von den Domains ab die du damit signen willst. Also mehrere Domainnamen im Zertifikat oder hast du zB viele subdomains? Hinzu kommt wie lange das cert gültig sein soll.

Letsencrypt benutze ich seit ein paar Monaten, damit kannst du kostenlos browservalide Zertifikate mit ausstellen, die zwar nur 90tage gültig sind, aber mit nem cron kann man das reibungslos immer weiter verlängern. Dazu brauchst du aber root auf deinem Server.

Wie gesagt du musst nicht unbedingt Geld dafür ausgeben aber dazu Brauch es mehr Expertise und die technischen Voraussetzungen mit entsprechenden Userrechten.

Ich hoffe du kannst damit was anfangen.

Cheers

Also deine Applikation weiß nix vom TLS deswegen musst du beim coden erst mal nichts beachten

0

Wie mach ich ein sicheres Login system in Java?

Mir ist schon klar wenn ihr jetzt eures Preisgebt das es dann nicht mehr sicher wär. Aber so ein par sachen die ich beachten muss oder code schnipsel... Also wie ich es gemacht hätte: Java geht mit ner UrlConnection auf eine website sagen wir www.test.de/login.php?user=test&pw=123&hwid=111 und das pho script prüft erstmal mysql injection und geht dann auf eine mysql datenbank und gleicht das ganze ab und gibt ein statement zurück das in java dann geprüft wird, falls du jetzt nicht genau weist wie ich es mein nochmal kommentieren! Also was könnte ich noch verbessern oder ist der ansatz komplett schlecht ? Lg ~Michael

...zur Frage

(Internet) Wo befinden sich die OSI Anwendungsschichten?

Ich beschäftige mich gerade mit diesem komplexen Thema, habe etwas über die 7 Schichten gelernt, also wie die heißen und über welche Ports die laufen und welche Protokolltypen es für die einzelnen Schichten gibt, aber was ich noch nicht weiss ist, wo diese Protokolle sich befinden. Soweit ich weiss, sind das definierte Regeln die in der Maschinensprache geschrieben wurden. Sind die im Browser(z.B. Firefox) definiert oder im Betriebssystem(z.B. Win7) oder wo?

Ich verstehe den Ablauf von den Schichten auch nicht so wirklich, es werden Daten von oben(Anwendungsschicht) nach unten(Bitübertragung) verschlüsselt bzw. umgeformt, aufgeteilt/Fragmentiert?
Reicht es da nicht, wenn man eine einige Schicht nimmt in der die ganzen Prozesse vorhanden sind?

Danke schonmal

P.s. Ich lerne das mit einem Buch für Studenten und habe kaum Vorwissen, also entschuldigt bitte meine Fehler.

...zur Frage

Digitales Zertifikat - was muss ich beachten?

Ich habe diese mail in meinem Web-Postfach vorgefunden. Was heißt das konkret und was sollte ich tun bzw. nicht tun. Was genau ist ein Sicherheitszertifikat und wofür benötigt man es? Was ist "PGP"?

Bitte für einen Laien verständlich erklären - danke!

Digitales Zertifikat
Sehr geehrte Frau xy,
in einigen Monaten stellt WEB.DE die E-Mail-Verschlüsselung mit S/MIME ein.
Bereits in Kürze werden deshalb keine neuen Zertifikate für das S/MIME-Verschlüsselungs­verfahren mehr aus­gestellt. Alle E-Mails, die mit früheren Zertifikaten verschlüsselt wurden, lassen sich dann jedoch noch über externe E-Mail-Programme (z.B. Outlook, Thunderbird) entschlüsseln.
Zu diesem Zweck können Sie hier alle Zertifikate herunterladen:
xy
Aufgrund seiner Verbreitung sowie der einfacheren Anwendung empfiehlt sich der Umstieg auf PGP als sichere Alter­native zur bisherigen Verschlüsselung.
Mit freundlichen Grüßen
Ihr
WEB.DE Kundenmanagement
...zur Frage

Website hat starken Ranking Verlust nach Umstellung auf https://?

Hallo liebe Gutefrage.net Community,

ich besitze eine kleine Nischenseite und habe diese vor einer Woche mit einem SSL-Zertifikat versehen. Seit diesem Zeitpunkt sind starke Rankingverluste zu beobachten und ich fiel mit einem Keyword von Platz 8 auf platz 50 und meine Hautpseite rankt so gut wie gar nicht mehr.(Damals wusste ich noch nicht das vor der Umstellung auf https:// einiges zu beachten ist.) Außerdem werden Seiten in Google für bestimmte Keywords angezeigt, die überhaupt nicht auf das Keyword optimiert sind. Gliedert sich das ganze nach der Zeit wieder auf das alte Ranking zurück oder kann ich aktiv etwas tun?

Vielen Dank für Antworten!

...zur Frage

Weitere Programmiersprachen lernen oder vertiefen?

Seit ich 12 bin, programmiere ich schon. Angefangen mit HTML, CSS, JS (JQuery), dann PHP und MySQL. Seit 3 Jahren beschäftige ich mich mit Java, XML und in der Schule habe ich auch Visual Basic gelernt.

Ich bin mir nur nicht sicher ob ich diese Sprachen wirklich gut kann.

HTML, CSS, SQL und XML kann ich 100% und kenn fast alle Befehle.

Zu PHP, JS, Java und VB.NET: Ich kann alle Foren, Blogs, Shops in PHP programmieren, Animaion erstellen, AJAX anwenden und mit JQuery arbeiten und ich entwickle seit der letzten Zeit Apps (auch für Smart Watches).

Trotzdem habe ich irgendwie das Gefühl das ich diese Sprachen nur oberflächlich kenne. Wie kann ich mein Wissen vertiefen? Im Internet finde ich nur Seiten für Anfänger. Oder reicht es und soll ich mit einer neuen Sprache anfangen?

Folgende Möglichkeiten hätte ich: Python, C#, C++. Ich würde zunächst C# lernen, soll einfach sein, da es ähnlich ist wie Java und dann C++, welches sehr umfangreich sein soll.

Soll ich nun mit neuen Programmiersprachen anfangen oder mein Wissen in den anderen Sprachen vertiefen...

...zur Frage

SSL Zertifikat für Mailserver (MailCow)?

Guten Abend zusammen!

Ich nutze Mailcow als Mailserver auf meinem Ubuntu-System. Mit dem Certbot habe ich für meinen Apache-Server bereits ein Zertifikat für meine Domain erstellt.

Nun ist die Frage, wie kann ich meine Mails auch verschlüsselt verschicken? Ich habe gerade nachgeschaut und bin der Meinung, dass meine Mails wohl nicht mal TLS verschlüsselt sind.

Ich bitte um Hilfe, da ich meine Mail eigentlich dringend brauche aber nicht verschlüsselt nicht kommunizieren will.

...zur Frage

Was möchtest Du wissen?