SSL-Einstieg

Hi,
würd gern lernen, wie ich eine Verbindung zu meinem http server (bei mir daheim) per SSL herstellen kann.
Kennt jemand gute Tutorials dazu? Bin bei google nicht auf das richtige gestoßen.
thx
 
SSH - Installation und Funktionsweise

Hier ein altes Tut von mir. Ist auf Linux ausgerichtet, das Prinzip unter Win ist dasselbe.

Code:
SSH - Installation und Funktionsweise
(c) 2002 by tec@hackerboard.de

Es gibt 2 Varianten der sicheren Datenübertragung mittels SSH.
Die erste ist die Passwortvariante, die zweite die Public-Key.

1. Passwort Authentifikation
Der User xyz meldet sich beim Server an und muss dort nur das Passwort eingeben,
welches er als selbiger User dort hat. Diese Variante ist nicht sonderlich
sicher.



2. Public-Key Verfahren
Als User legt man mit: "ssh-keygen -t rsa" einen Private und Public-Key an,
welche Standardmässig im "~/.ssh" abgespeichert werden. Die Dateien lauten:
			~/.ssh/id_rsa
                        ~/.ssh/id_rsa.pub

Letzterer ist der Public-Key.

Der Public Key ist nun auf einem sicheren Weg auf den Server zu bringen, um
denjenigen Client (User) den Zugang zu erlauben, der im Besitz des zugehörigen
Private Keys ist. Es genügt, den Inhalt der gerade generierten Datei
"~/.ssh/id_rsa.pub" als eine weitere Zeile in die Datei "~/.ssh/authorized_keys"
auf dem Server einzutragen. Diese Datei kann unendlich viele Keys enthalten.
Existiert diese Datei noch nicht, so legt man diese an.

Um sicherzustellen, daß der Client auch wirklich mit dem richtigen Server
kommuniziert, muß dem Client der Public Key des Servers bekanntgemacht werden.
Der Server besitzt 2 solche Schlüssel, welche je nach Art der Verschlüsselung
(RSA oder DSA) benutzt werden. Die Dateien lauten (hier bei einem
Debian-System):
			/etc/ssh/ssh_host_dsa_key.pub
                        /etc/ssh/ssh_host_rsa_key.pub

Sofern dieser Schlüssel beim Client-Rechner noch nicht vom Administrator in eine
globale "ssh_known_hosts"-Datei aufgenommen worden ist, muß ihn der Anwender in
die Datei "~/.ssh/known_hosts" eintragen.
Dazu ist dieser Datei eine neue Zeile hinzuzufügen, die hinter dem Hostnamen des
Servers dessen Public Key enthält. Das ist eine ziemlich lange Zeile, welche
so anfängt:
		hal9000 ssh-rsa AAAAB3Nz......

Das "hal9000" ist in diesem Falle der Hostname des Servers.
Existiert diese Datei nicht, dann einfach anlegen.

Das einfügen in die Datei geschieht normalerweise automatisch wenn sich ein
Client zum ersten mal mit dem Server verbindet. Da kommt dann z.B. solch eine
Abfrage:

>>The authenticity of host 'hal9000 (123.123.123.123)' can't be established.
>>RSA key fingerprint is 3c:5a:7d:8c:6f:44:cf:e6:3c:e7:22:ce:58:f4:62:af.
>>Are you sure you want to continue connecting (yes/no)?

Antwortet man hier mit "yes" dann erscheint:

>>Warning: Permanently added 'hal9000' (RSA) to the list of known hosts.

Nun wurde der Public-Key des Servers in die Datei "~/.ssh/known_hosts"
eintragen.

Wir sind jetzt soweit das der Server den Public-Key des Users hat, und der
User den Public-Key des Servers besitzt.
Somit kann die verschlüsselte Übertragung stattfinden.

Hinweis: Will der Nutzer generell sicherstellen, daß immer nur vorab
eingetragene Server akzeptiert werden, so muß er in der Konfigurationsdatei des
Clients "/etc/ssh/ssh_config" (Debian System) die Option "StrictHostKeyChecking"
einschalten (yes,no,ask). Damit wird verhindert, daß der Client neue Keys von
bisher unbekannten Servern einfach "lernt", also ohne Prüfung einträgt.

Damit sind alle notwendigen Vorbereitungen für ein gesichertes Login getroffen.
Um den gesamten Authentifizierungsdialog am Bildschirm verfolgen zu können
startet man den Login-Versuch mit dem Parameter "-v":
			ssh -v -l testuser 123.123.123.123


Hier noch eine Übersicht der Dateien:

Client:
	Private-User-Key: ~/.ssh/id_rsa
	Public-User-Key: ~/.ssh/id_rsa.pub
	enthält Public-Key des Servers: ~/.ssh/known_hosts
Server:
	Public-Key: /etc/ssh/ssh_host_dsa_key.pub
 	Public-Key: /etc/ssh/ssh_host_rsa_key.pub
	Enthält Public-User-Key des Client-Users: ~/.ssh/authorized_keys



Wichtige Befehle:
Key Lokal erzeugen: "ssh-keygen -t rsa"
Einloggen am SSHD: "ssh -p 22 -l <login-user> <hostname>"
Kopieren von Dateien (analog zum "cp"-Befehl): "scd <quelle> <ziel>"


Nützliche Tools:
Windows:
-Putty & Puttygen (SSH/Telnet Client + Keygenerator)
 http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
-iXplorer (GUI Programm)
 http://www.i-tree.org/secixpro/index.htm
-WINSCP (Secure Copy Programm)
 http://www.nmr.ibms.sinica.edu.tw/Documents/WinSCP/WinSCP.html

Linux:
-kio_fish (plugin für Konquerer zum ansteuern von SSHD)
 http://freshmeat.net/releases/86583/


Erklärung der Verbindungsvorgehensweise:
Das Login auf einem Server läuft gemäß SSH-Protokoll 1.x prinzipiell so ab:

Der Client baut eine TCP-Verbindung zum Server auf (Default-Port: 22).
Beide Partner tauschen die jeweils verwendete Protokoll-Version aus. Falls die
Versionen inkompatibel sind, wird die Kommunikation abgebrochen. Client und
Server schalten auf ein paketbasiertes Binär-Protokoll um. Jedes Paket besteht
aus folgenden Feldern:
-Paketlänge (Maximum 262144 Byte)
-Padding: 1- 8 Byte zufälliger Daten, um Known-plaintext-Attacken zu erschweren
-Pakettyp
-die Binärdaten des Nutzers, -Prüfsumme (CRC), die vor der Verschlüsselung der
Daten berechnet wird.

Der Server sendet seine beiden öffentlichen RSA-Schlüssel eH und eS (Host- und
Server-Key) sowie eine Auflistung der von ihm unterstützten symmetrischen
Chiffren zum Client. Der Client verifiziert eH über eine lokale Datenbasis
(bzw. "lernt" diesen Key, falls es der Nutzer zuläßt). Wurde eH akzeptiert, so
generiert der Client einen zufälligen Sitzungsschlüssel, chiffriert diesen
mittels der beiden RSA-Keys eH und eS und sendet das Resultat zusammen mit der
Angabe, welches der angebotenen symmetrischen Verfahren er gewählt hat, an den
Server.

Ab jetzt läuft die gesamte Kommunikation verschlüsselt ab.
Der Client authentifiziert sich mit einem der jeweils unterstützen Verfahren.
Nach erfolgreicher Authentifizierung wird für den Nutzer eine Arbeitsumgebung
auf dem Server-Rechner hergestellt. Dazu gehört z.B. das Setzen von
Umgebungsvariablen (u.a. TERM und DISPLAY) sowie die Umleitung von X11- und ggf.
auch beliebigen TCP-Verbindungen. Der Austausch der Nutzerdaten beginnt.

Hinweis: Die Umleitung der X11-Verbindungen funktioniert nur, wenn die von SSH
eingestellte DISPLAY-Variable vom Nutzer nicht nachträglich verändert wird. Der
SSH-Dämon muß den X11-Applikationen als lokaler X11-Server erscheinen, deshalb
ist eine entsprechende Einstellung von DISPLAY erforderlich.


(c) 2002 by tec
-EOF-
 
https:// statt http:// wäre ssl

hä? ich muss doch erstmal meinen server so konfigurieren, dass er des alles mitmacht!!!

@tec: danke für des tutorial. was sehr aufschlussreich. wenn du (oder jemand anderes) etz noch eins hättest wo erklärt wird was ich alles brauch um das mit IIS 6.0 zu machen, wär alles perfekt!!!

thx
 
Du hast SSL geschrieben...
Bin mir jetzt nicht sicher, was von beidem du meinst.

Vermutlich SSH?

ssl = secure socket layer / verschlüsseltse aufrufen von Webinhalten/ keiner liest mit, was du aufrufst. (https statt http)
Zum Beispiel Webshops / Zahlung mit Kerditkarte.

ssh= secure shell / verbindung zu einen Remote-Server um den Server zu konfgurieren, zu administrieren, verschlüsselt. Client zum Beispiel Putty.

Oder hab ich da jetzt was falsch verstanden?

EDIT: http://www.jfitz.com/tips/ssh_for_windows.html

Für den Fall, dass du SSH meinst.


SSL sollte vom IIS ohne grösseren Aufwand unterstützt werden.
Da ich noch nie einen IIS konfiguriert habe, kann ich dir da leider wenig Hilfe geben.

Verwende unte Windows OmniHttpd (www.omnicron.ca), unter Linux Apache.
Gehe aber mal auf die Suche und sehe mal nach, ob ich dir da helfen kann, was IIS angeht.


Gruss

root
 
ok, also mir war vorher auch nicht bekannt was SSH ist. Aber nach deiner erklärung kann ich sagen, dass ich definitiv SSL meine.
Ich versteh vorallem nicht, was das mit den Zertifikation sein soll. Schaut mal im IIS-Mgr die Eigenschaften der Website an. Dann Registerkarte "Verzeichnissicherheit" oder so ähnlich und dann das frame ganz unten. Da muss ich doch was einstellen oder?

mfg

[edit]
hab gerade festegestellt, dass tec auch über SSH geschrieben hat. SSL bitte!!! Ich will, dass webseiten und sowas verschlüsselt werden!!!
[/edit]
 
Zurück
Oben