SSL/TLS - Mini FAQ
Also wenn ich hier in manchen Beiträgen lese:
"https brauche ich nicht für mein Projekt" "https ist unnütz" "https *!?***!" Leute, also mal ehrlich - da dreht sich mir der Magen um. Klar braucht man es nicht. Aber es gibt so viele Dinge auf der Welt die keine Sau braucht. Und SSL zählt definitiv nicht dazu. Daher ist es schon schön es anzubieten, um den sicherheitsbewußten User entgegen zu kommen. Man könnte den User sogar zwingen es zu nutzen, aber das wäre auch nicht die feine Englische. Und das Gute ist, jeder Browser und Client kommt damit klar. Sogar die aus dem letzten Jahrhundert. Zumindest ist mir noch kein Client begegnet der es nicht kann. Und sollte es so einen geben, dann gehört der eh gebannt. (OK, einige ältere Clienten haben Probleme mit einem SSL-RSS Feed, aber das sollte man verschmerzen können.) Was ist SSL/TLS? Es ist ein hybrides Verschlüsselungsprotokoll zur sicheren Datenübertragung im Netz. Nur wird SSL (Secure Sockets Layer) seit geraumer Zeit unter dem Akronym TLS (Transport Layer Security) weiterentwickelt. Der gesamte Datenverkehr (HTTP, FTP, POP, usw.) wird verschlüsselt (Verbindungsaufbau, Handshake, Datenübertragung, ...). Es liegt nichts mehr im Klartext vor, und ein erfolgreiches Sniffing wird schon recht schwer (man muss schon auf einer der beiden Seiten "anwesend" sein). Wer mehr Details haben möchte, kann ruhig die Suchmaschine seiner Wahl fragen. Gibt es potentielle Schwachstellen? Ja, gibt es! Nicht alle SSL/TLS Versionen und Ciphers (kryptographische Algorithmen, z.B. AES, DES usw) gelten als sicher. Einige wurden auch schon geknackt. Daher sollte man wissen was man anbietet, und was besser nicht. Durch diese Schwachstellen wird sniffen wieder möglich (Man-in-the-middle, BEAST Attack). Gibt es weitere Nachteile? Auch hier gibt es ein Ja ;)
Irgendeine SSL/TLS Empfehlung? TLSv1.2 TLSv1.1 TLSv1 * SSLv3 * * Diese Protokolle sollten in naher Zukunft deaktiviert werden, da eine RC4 Schwachstelle aufgetaucht ist. Aber zurzeit ist dieser Exploit noch zu unpraktikabel, und es wird wohl auch noch eine Weile dauern, bis ein wirksamer Angriff möglich ist. Das Problem ist jedoch, dass viele Browser der Zeit wie immer hinterherhinken, und TLSv1.1/TLSv1.2 noch nicht unterstützen. Irgendeine Cipher Empfehlung? RC4:ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:HIGH:MEDIUM:!MD5:!aNULL:!eNULL:!NULL:!EDH:!EXPORT >> Erklärung hier << Diese Cipher Sammlung ist mein persönlicher Geschmack. Jeder kann (und sollte) selber etwas experimentieren ;) Wie kompiliere ich OpenSSL? Das Beispiel ist jetzt für Squeeze. Andere Distributionen können von den Befehlen abweichen. Code:
wget http://www.openssl.org/source/openssl-1.0.1e.tar.gz Mit Code:
openssl version Aktuelle Infos und Quelldateien gibt es hier: OpenSSL Project OpenSSL Binaries für Win: Win32 OpenSSL Wie erstelle ich ein Zertifikat? Ein paar Infos gibt es hier. Auch das Netz bietet zig Anleitungen. Zuerst erstellen wir einen Private Key (RSA mit 4096bits ohne Passwort, da dies für einen Webserver ungeeignet wäre) Code:
openssl genrsa -out priv.key 4096 Code:
Generating RSA private key, 4096 bit long modulus Nun wird ein Certificate Signing Request erstellt Code:
openssl req -new -key priv.key -out cert.csr Die 'extra' attributes sollten leer bleiben, aber probiert es selber aus ;) Output: Code:
You are about to be asked to enter information that will be incorporated Nun müsst ihr entscheiden. Entweder bedient ihr euch eines offiziellen Zertifiziers (Root Certificate Authority), oder ihr stellt ein selbstsigniertes Zertifikat aus (bei dem jeder Browser meckern sollte). selbstsigniertes Zertifikat Code:
openssl req -x509 -key priv.key -in cert.csr -out selfsigned.crt -days 365 Root Certificate Authority Diese bietet euch in der Regel auch Möglichkeiten an, einen Private Key und ein Certificate Signing Request vor Ort zu erstellen. Jedenfalls übernimmt sie die Erstellung des Zertifikats, welches ihr danach herunterladen könnt. Um Problemen in der Zertifizierungskette (chain issues) vorzubeugen, solltet ihr euch das Primary CA Zertifikat (auf alle Fälle nicht das Root CA des Zertifizierers) herunterladen, und mit eurem frisch erstellten Zertifikat vereinen. Code:
cat own.crt root.certificate.authority.primary.ca.pem > unified-certs.crt Es kann sein, dass ihr händisch (z.B. nano) zwischen den beiden Zertifikaten einen Zeilenumbruch einfügen müsst, da sonst der Webserver meckert. Also einfach mal das unified-certs.crt ansehen, und wenn da sowas steht wie Code:
-----END CERTIFICATE----------BEGIN CERTIFICATE----- Code:
-----END CERTIFICATE----- !!! Und bitte euren Key etc. nicht in euer Webverzeichnis packen, sondern hübsch irgendwo anders hin ;) Beispiel nginx >> mehr Infos << Code:
listen 443 ssl; Beispiel Apache >> mehr Infos hier << und >> hier << Code:
<VirtualHost *:443> Kann ich die Qualität meines Zertifkates irgendwo prüfen? Ja, und zwar >> hier << So ich denke das sollte reichen mit der Mini - FAQ ;) Viel Spaß |
jo supi dann is ja alles gesagt
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:24 Uhr. |
Powered by vBulletin® Version 3.8.9 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.