40 lines
2.4 KiB
Plaintext
40 lines
2.4 KiB
Plaintext
|
[[Kategorie: SILC]]
|
||
|
|
||
|
== Einleitung ==
|
||
|
|
||
|
[[SILC]] hat ein paar gute Ideen, die aber zu stark nach dem NIH-Prinzip implementiert wurden.
|
||
|
SILC-ng stellt den versuch da, ein SILC-ähnliches Protokoll zu schaffen, das auf Standards
|
||
|
wie SSL und XML basiert.
|
||
|
|
||
|
== Architektur ==
|
||
|
|
||
|
Ein Netzwerk besteht aus (beliebig vielen) Servern, von denen jeder ein X.509-Zertifikat besitzt,
|
||
|
das seinem FQDN entspricht. Alle Zertifikate sind von einer gemeinsamen CA unterschrieben.
|
||
|
|
||
|
Jeder Nutzer des Netzwerks hat eigenes X.509-Zertifikat, das ihn eindeutig innerhalb des
|
||
|
Netzwerks identifiziert. Es obliegt dem Administrator eines jeden Servers zu entscheiden, ob
|
||
|
die Zertifikate der Nutzer geprüft werden. Einem Nutzer werden, wenn er zu einem Server verbunden
|
||
|
ist, verschiedene administrative Rollen zugeordnet, von denen die niedrigste "User" ist. Der Server
|
||
|
teilt die Nutzer in die Rollen aufgrund ihrer Zertifikate ein. Die höchste Rolle auf einem Server ist
|
||
|
"Administrator". Der Administrator kann dem Server, wenn er wie ein normaler Nutzer verbunden ist,
|
||
|
Befehle erteilen.
|
||
|
|
||
|
== Netzwerk-Schicht ==
|
||
|
|
||
|
=== Server zu Server ===
|
||
|
|
||
|
Verbindungen zwischen Servern sind ''ad-hoc'', d.h. sie müssen nicht vorkonfiguriert werden. Teilt ein Administrator
|
||
|
einem Server (Server A) mit, dass er sich zu einem anderen (Server B) verbinden soll, stellt jener eine
|
||
|
SSL-gesicherte, verschlüsselte Verbindung zu B her. A prüft hierbei das Zertifikat von B und bittet B um eine
|
||
|
Server-zu-Server Verbindung. B prüft ebenfalls das Zertifikat von A und hinterlässt bei erfolgreicher Überprüfung
|
||
|
bei A einen Verbindungs-Cookie. Daraufhin baut B eine weitere Verbindung zu A auf, und zwar zu dem im Zertifikat enthaltenen
|
||
|
Common-Name. Ist dieser Verbindungsaufbau erfolgreich, inklusive einer weiteren Überprüfung der Zertifikate,
|
||
|
fragt B A über diesen Kanal nach dem Vorher abgelieferten Cookie. Ist dieser identisch mit dem auf dem ersten Kanal
|
||
|
übertragenen schließt B diese Verbindung und fährt auf der ersten, von A initiierten Verbindung mit der Kommunikation fort.
|
||
|
|
||
|
Optional: A und B merken sich jeweils den gegenüberliegenen Hostnamen (== Common-Name) und optional auch das Zertifikat, nach einem
|
||
|
Neustart eines der beiden Server, versucht dieser einen erneuten Verbindungsaufbau.
|
||
|
|
||
|
Optional: A und B teilen sich gegenseitig mit, mit welchen anderen Servern sie verbunden sind. Und stellen bei Bedarf weitere Verbindungen
|
||
|
zu diesen Servern her.
|