<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://staging.wiki.apps.attraktor.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Andre</id>
	<title>Attraktor Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://staging.wiki.apps.attraktor.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Andre"/>
	<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/Special:Contributions/Andre"/>
	<updated>2026-04-24T03:48:22Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Termin:LoRaWAN:_Kick-Off_The_Things_Network_Hamburg&amp;diff=28218</id>
		<title>Termin:LoRaWAN: Kick-Off The Things Network Hamburg</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Termin:LoRaWAN:_Kick-Off_The_Things_Network_Hamburg&amp;diff=28218"/>
		<updated>2017-03-15T06:45:44Z</updated>

		<summary type="html">&lt;p&gt;Andre: Andre moved page Termin:LoRaWAN: Kick-Off The Things Network Hamburg to Termin:LoRaWAN - Kick-Off The Things Network Hamburg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Termin:LoRaWAN - Kick-Off The Things Network Hamburg]]&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Termin:LoRaWAN_-_Kick-Off_The_Things_Network_Hamburg&amp;diff=28217</id>
		<title>Termin:LoRaWAN - Kick-Off The Things Network Hamburg</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Termin:LoRaWAN_-_Kick-Off_The_Things_Network_Hamburg&amp;diff=28217"/>
		<updated>2017-03-15T06:45:44Z</updated>

		<summary type="html">&lt;p&gt;Andre: Andre moved page Termin:LoRaWAN: Kick-Off The Things Network Hamburg to Termin:LoRaWAN - Kick-Off The Things Network Hamburg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Termin&lt;br /&gt;
|date=2017/03/17 20:00:00 &lt;br /&gt;
|enddate=2017/03/17 22:00:00 &lt;br /&gt;
|title=LoRaWAN: Kick-Off The Things Network Hamburg&lt;br /&gt;
|url=https://www.eventbrite.de/e/community-kick-off-the-things-network-hamburg-tickets-31873626876&lt;br /&gt;
|visible=true&lt;br /&gt;
}}&lt;br /&gt;
https://www.thethingsnetwork.org/ (TTN) ist ein Projekt, das es sich zum Ziel gesetzt hat, ein globales, für jeden frei zugängliches IoT-Netzwerk aufzubauen. Auch in Hamburg ist eine entsprechende Community im Entstehen.&lt;br /&gt;
&lt;br /&gt;
Hierfür findet am 17. März ein Kick-off Treffen von https://www.thethingsnetwork.org/community/hamburg/ statt. Details findet ihr auf https://www.eventbrite.de/e/community-kick-off-the-things-network-hamburg-tickets-31873626876. Das Treffen findet im Rahmen des Freifunk Hamburg Freitagstreffen im attraktor e.V. statt.&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Termin:LoRaWAN_-_Kick-Off_The_Things_Network_Hamburg&amp;diff=28216</id>
		<title>Termin:LoRaWAN - Kick-Off The Things Network Hamburg</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Termin:LoRaWAN_-_Kick-Off_The_Things_Network_Hamburg&amp;diff=28216"/>
		<updated>2017-03-15T06:42:45Z</updated>

		<summary type="html">&lt;p&gt;Andre: Created page with &amp;quot;{{Termin |date=2017/03/17 20:00:00  |enddate=2017/03/17 22:00:00  |title=LoRaWAN: Kick-Off The Things Network Hamburg |url=https://www.eventbrite.de/e/community-kick-off-the-t...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Termin&lt;br /&gt;
|date=2017/03/17 20:00:00 &lt;br /&gt;
|enddate=2017/03/17 22:00:00 &lt;br /&gt;
|title=LoRaWAN: Kick-Off The Things Network Hamburg&lt;br /&gt;
|url=https://www.eventbrite.de/e/community-kick-off-the-things-network-hamburg-tickets-31873626876&lt;br /&gt;
|visible=true&lt;br /&gt;
}}&lt;br /&gt;
https://www.thethingsnetwork.org/ (TTN) ist ein Projekt, das es sich zum Ziel gesetzt hat, ein globales, für jeden frei zugängliches IoT-Netzwerk aufzubauen. Auch in Hamburg ist eine entsprechende Community im Entstehen.&lt;br /&gt;
&lt;br /&gt;
Hierfür findet am 17. März ein Kick-off Treffen von https://www.thethingsnetwork.org/community/hamburg/ statt. Details findet ihr auf https://www.eventbrite.de/e/community-kick-off-the-things-network-hamburg-tickets-31873626876. Das Treffen findet im Rahmen des Freifunk Hamburg Freitagstreffen im attraktor e.V. statt.&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Termin:Hamburg_Freifunk_Hands_On_im_Attraktor&amp;diff=28056</id>
		<title>Termin:Hamburg Freifunk Hands On im Attraktor</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Termin:Hamburg_Freifunk_Hands_On_im_Attraktor&amp;diff=28056"/>
		<updated>2017-02-24T17:32:56Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Termin&lt;br /&gt;
|date=2013/11/22 07:30:00 PM&lt;br /&gt;
|enddate=2013/11/22 11:59:00 PM&lt;br /&gt;
|title=Hamburg Freifunk Hands On im Attraktor&lt;br /&gt;
|url=https://hamburg.freifunk.net&lt;br /&gt;
|visible=Yes&lt;br /&gt;
}}&lt;br /&gt;
Wir treffen uns jeden Freitag im Attraktor um am Hamburger Freifunkprojekt zu arbeiten. Wir basteln, schrauben und administrieren am Projekt. Desweiteren vergeben wir anstehende Aufgaben, sprechen über auftretende Probleme und entwickeln so das Projekt weiter.&lt;br /&gt;
&lt;br /&gt;
Du hast konkrete Vorschläge? Möchtest uns unter die Arme greifen oder uns einfach nur mal beim arbeiten kennen lernen? Dann komm doch mal vorbei: Freitag ab ca. 19:30 im Attraktor.&lt;br /&gt;
&lt;br /&gt;
[[Category:WeeklyRepeat]]&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Termin:Hamburg_Freifunk_Hands_On_im_Attraktor_2017-02-24&amp;diff=28054</id>
		<title>Termin:Hamburg Freifunk Hands On im Attraktor 2017-02-24</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Termin:Hamburg_Freifunk_Hands_On_im_Attraktor_2017-02-24&amp;diff=28054"/>
		<updated>2017-02-24T17:24:44Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Termin&lt;br /&gt;
|date=2017/02/24 07:30:00 PM&lt;br /&gt;
|enddate=2017/02/24 11:59:00 PM&lt;br /&gt;
|title=Hamburg Freifunk Hands On im Attraktor&lt;br /&gt;
|url=https://hamburg.freifunk.net&lt;br /&gt;
|visible=Yes&lt;br /&gt;
}}&lt;br /&gt;
Wir treffen uns jeden Freitag im Attraktor um am Hamburger Freifunkprojekt zu arbeiten. Wir basteln, schrauben und administrieren am Projekt. Desweiteren vergeben wir anstehende Aufgaben, sprechen über auftretende Probleme und entwickeln so das Projekt weiter.&lt;br /&gt;
&lt;br /&gt;
Du hast konkrete Vorschläge? Möchtest uns unter die Arme greifen oder uns einfach nur mal beim arbeiten kennen lernen? Dann komm doch mal vorbei: Freitag ab ca. 19:30 im Attraktor.&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Termin:Hamburg_Freifunk_Hands_On_im_Attraktor_2017-02-24&amp;diff=28053</id>
		<title>Termin:Hamburg Freifunk Hands On im Attraktor 2017-02-24</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Termin:Hamburg_Freifunk_Hands_On_im_Attraktor_2017-02-24&amp;diff=28053"/>
		<updated>2017-02-24T17:18:31Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Termin&lt;br /&gt;
|date=2017/02/24 07:30:00 PM&lt;br /&gt;
|enddate=2020/02/24 11:59:00 PM&lt;br /&gt;
|title=Hamburg Freifunk Hands On im Attraktor&lt;br /&gt;
|url=https://hamburg.freifunk.net&lt;br /&gt;
|visible=Yes&lt;br /&gt;
}}&lt;br /&gt;
Wir treffen uns jeden Freitag im Attraktor um am Hamburger Freifunkprojekt zu arbeiten. Wir basteln, schrauben und administrieren am Projekt. Desweiteren vergeben wir anstehende Aufgaben, sprechen über auftretende Probleme und entwickeln so das Projekt weiter.&lt;br /&gt;
&lt;br /&gt;
Du hast konkrete Vorschläge? Möchtest uns unter die Arme greifen oder uns einfach nur mal beim arbeiten kennen lernen? Dann komm doch mal vorbei: Freitag ab ca. 19:30 im Attraktor.&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Termin:Freifunk-Gateway-Arbeitskreis&amp;diff=26212</id>
		<title>Termin:Freifunk-Gateway-Arbeitskreis</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Termin:Freifunk-Gateway-Arbeitskreis&amp;diff=26212"/>
		<updated>2016-09-11T22:06:11Z</updated>

		<summary type="html">&lt;p&gt;Andre: Created page with &amp;quot;{{Termin |date=2016/09/17 10:00:00  |enddate=2016/09/17 18:00:00  |title=Freifunk-Gateway-Arbeitskreis |visible=true }}  Bitte seid pünktlich und bringt einen Laptop mit.  ht...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Termin&lt;br /&gt;
|date=2016/09/17 10:00:00 &lt;br /&gt;
|enddate=2016/09/17 18:00:00 &lt;br /&gt;
|title=Freifunk-Gateway-Arbeitskreis&lt;br /&gt;
|visible=true&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Bitte seid pünktlich und bringt einen Laptop mit.&lt;br /&gt;
&lt;br /&gt;
https://dudel.mafiasi.de/wfR28KQE/&lt;br /&gt;
https://hamburg.freifunk.net/Veranstaltung/ffhh-gateway-workshop&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenSSL&amp;diff=24303</id>
		<title>Mac nix basteln:OpenSSL</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenSSL&amp;diff=24303"/>
		<updated>2015-12-06T23:02:48Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://openssl.org/docs/apps/openssl.html OpenSSL] lässt sich für verschiedene Krypto-Operationen nutzen, so z.B. Erstellen und verwalten von verschiedenen Schlüsseltypen, Erstellen von Zertifikaten, verschlüsseln/entschlüsseln...&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Schlüsselerzeugung für OpenVPN=&lt;br /&gt;
Als Beispiel wird ein Satz Schlüssel zum Aufsetzen einer OpenVPN-Verbindung erzeugt:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
		&amp;lt;h4&amp;gt;Erzeugen einer CA&amp;lt;/h4&amp;gt;&lt;br /&gt;
		Verzeichnis für private Schlüssel und Zertifikate erstellen:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;&lt;br /&gt;
				$ mkdir Schluessel&amp;lt;br&amp;gt;&lt;br /&gt;
				$ mkdir Zertifikate&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;/code&amp;gt;&lt;br /&gt;
		Zertifikatsnummerierungszähler erstellen und Wert 01 reinschreiben:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ echo &amp;quot;01&amp;quot; &amp;gt; Zertifikate/vpn-ca.srl&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		4096bit langer, privater RSA-Schlüssel (PKCS#1 im PEM-Format) [oder Schlüsselpaar???] erstellen, welcher mit AES (256bit) geschützt ist:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl genrsa -aes256 -out Schluessel/vpn-cakey.pem 4096&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		Man sollte meinen, dass man in die Zertifikate unter Name usw. nichts eintragen muss, denn schliesslich möchte man sie vorwiegend nur zur Verschlüsselung einsetzen. Leider streikt OpenVPN, wenn man die Felder leer lässt. Also sollte man zumindest Quatsch, wenn nicht gar echte Daten eintragen. Besonders der &amp;lt;i&amp;gt;common name&amp;lt;/i&amp;gt; (CN) ist tatsächlich wichtig.&amp;lt;br&amp;gt;&lt;br /&gt;
10a gültiges (&amp;lt;code&amp;gt;-days 3650&amp;lt;/code&amp;gt;), selbstsigniertes X509-Zertifkat (nur für Test oder root CA)(&amp;lt;code&amp;gt;-x509&amp;lt;/code&amp;gt;) aus privatem Schlüssel erstellen (&amp;lt;code&amp;gt;-key Schluessel/vpn-cakey.pem&amp;lt;/code&amp;gt;) und nach vpn-ca.pem schreiben (&amp;lt;code&amp;gt;-out Zertifikate/vpn-ca.pem&amp;lt;/code&amp;gt;). Zertifikates Seriennummer auf 1 setzen (&amp;lt;code&amp;gt;set_serial 1&amp;lt;/code&amp;gt;) (default 0):&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl req -new -x509 -days 3650 -key Schluessel/vpn-cakey.pem -out Zertifikate/vpn-ca.pem -set_serial 1&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;p&amp;gt;&lt;br /&gt;
		&amp;lt;i&amp;gt;&#039;&#039;&#039;Alternativ&#039;&#039;&#039;&amp;lt;/i&amp;gt;, die beiden letzten Befehle in einem: Allerdings kann hier nicht AES256 als Verschlüsselung des privaten Schlüssels (jedenfalls ist mir kein entsprechender Parameter bekannt) - stattdessen wird standardmäßig DES3 gewählt:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl req -x509 -days 3650 -newkey rsa:4096 -keyout Schluessel/vpn-cakey.pem -out Zertifikate/vpn-ca.pem -set_serial 1&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/p&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
		&amp;lt;h4&amp;gt;Erzeugen des server-Schlüssels&amp;lt;/h4&amp;gt;&lt;br /&gt;
		4096bit RSA-Serverschlüssel ohne Kennwort (&amp;lt;code&amp;gt;-nodes&amp;lt;/code&amp;gt;) erstellen (&amp;lt;code&amp;gt;-newkey rsa:4096 -keyout Schluessel/serverkey.pem&amp;lt;/code&amp;gt;) &amp;amp;amp; Anfrage für ein 10a gültiges Zertifikat für diesen Schlüssel erstellen (&amp;lt;code&amp;gt;req -out Zertifikate/servercsr.pem -days 3650&amp;lt;/code&amp;gt;):&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl req -out Zertifikate/servercsr.pem -days 3650 -newkey rsa:4096 -keyout Schluessel/serverkey.pem -nodes&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;p&amp;gt;&lt;br /&gt;
			10 gültiges X.509 Serverzertifikat aus Zertifikatsanfrage erstellen (&amp;lt;code&amp;gt;x509 -req -in certs/servercsr.pem -out certs/servercert.pem -days 3650&amp;lt;/code&amp;gt;), von der root CA signieren (&amp;lt;code&amp;gt;-CA vpn-ca.pem -CAkey private/vpn-cakey.pem&amp;lt;/code&amp;gt;). Dabei wird &#039;&#039;vpn-ca.srl&#039;&#039; automatisch hoch gezählt:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ openssl x509 -req -in Zertifikate/servercsr.pem -out Zertifikate/servercert.pem -days 3650 -CA Zertifikate/vpn-ca.pem -CAkey Schluessel/vpn-cakey.pem&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/p&amp;gt;&lt;br /&gt;
		Zertifikatsanfrage kann gelöscht werden:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ rm Zertifikate/servercsr.pem&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
		&amp;lt;h4&amp;gt;Erzeugen eines Klienten-Schlüssels&amp;lt;/h4&amp;gt;&lt;br /&gt;
		Klienten-Schlüssel erstellen &amp;amp;amp; Zertifikatsanfrage für Klienten-Schlüssel:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl req -out Zertifikate/klient1csr.pem -days 3650 -newkey rsa:4096 -keyout Schluessel/klient1key.pem -nodes&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;p&amp;gt;&lt;br /&gt;
			Clientzertifikat aus Zertifikatsanfrage erstellen:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ openssl x509 -req -in Zertifikate/klient1csr.pem -out Zertifikate/klient1cert.pem -days 3650 -CA Zertifikate/vpn-ca.pem -CAkey Schluessel/vpn-cakey.pem&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/p&amp;gt;&lt;br /&gt;
		Zertifikatsanfrage kann gelöscht werden:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ rm Zertifikate/klient1csr.pem&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
		&amp;lt;h4&amp;gt;Zufallszahlen &amp;quot;Diffie-Hellman Parameter&amp;quot; erzeugen&amp;lt;/h4&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl dhparam -out dh1024.pem 1024&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Anzeigen von Zertifikaten=&lt;br /&gt;
&lt;br /&gt;
==Selbsterstelltes Zertifikat anzeigen==&lt;br /&gt;
Ein mit obiger Anleitung erzeugtes Zertifikat kann man sich wie folgt anzeigen lassen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ openssl x509 -in Zertifikate/klient1cert.pem -noout -text&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==https-Zertifikat anzeigen==&lt;br /&gt;
Das funktioniert übrigens auch mit TLS-Zertifikaten, die von https genutzt werden. Beispielsweise kann man sich das Zertifikat von [https://www.heise.de/ https://www.heise.de/] wie folgt anzeigen lassen:&lt;br /&gt;
&lt;br /&gt;
 openssl s_client -connect www.heise.de:https&lt;br /&gt;
&lt;br /&gt;
Für [https://de.wikipedia.org/wiki/Server_Name_Indication SNI] server wird immer das default-Zertfikat zurückgegeben. Möchte man das Zertifikat einer spezifischen Domäne, muss man sie nochmals spezifizieren:&lt;br /&gt;
&lt;br /&gt;
 openssl s_client -connect map.hamburg.freifunk.net:https -servername map.hamburg.freifunk.net&lt;br /&gt;
&lt;br /&gt;
Bevor die Verbindung mangels Eingaben wieder abbricht, hohlt man sich den Inhalt von /&lt;br /&gt;
&lt;br /&gt;
 GET /&lt;br /&gt;
&lt;br /&gt;
In den angezeigten Informationen verbirgt sich das eigentliche Zertikiat im [http://de.wikipedia.org/wiki/X.509#Dateinamenserweiterungen_f.C3.BCr_Zertifikate PEM]-Format zwischen &amp;lt;i&amp;gt;-----BEGIN CERTIFICATE-----&amp;lt;/i&amp;gt; und &amp;lt;i&amp;gt;-----END CERTIFICATE-----&amp;lt;/i&amp;gt;. Um es für den Anwender lesbar zu machen makiert und kopiert man diesen Text (inkl. &amp;lt;i&amp;gt;-----BEGIN CERTIFICATE-----&amp;lt;/i&amp;gt; und &amp;lt;i&amp;gt;-----END CERTIFICATE-----&amp;lt;/i&amp;gt;) und speichert ihn in eine Datei:&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;&amp;lt;i&amp;gt;hier den in die Zwischenablage kopierten Zertifikatstext einfügen&amp;lt;/i&amp;gt;&amp;quot; &amp;gt; heise.pem&lt;br /&gt;
&lt;br /&gt;
Nun lässt man sich das Zertifikiat von &amp;lt;i&amp;gt;openssl&amp;lt;/i&amp;gt; in Klartext umwandeln:&lt;br /&gt;
&lt;br /&gt;
 openssl x509 -in heise.pem -noout -text&lt;br /&gt;
&lt;br /&gt;
[[Category:Mac_nix_basteln]]&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Termin:ffnordcon2015.2&amp;diff=23500</id>
		<title>Termin:ffnordcon2015.2</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Termin:ffnordcon2015.2&amp;diff=23500"/>
		<updated>2015-05-21T17:41:13Z</updated>

		<summary type="html">&lt;p&gt;Andre: Created page with &amp;quot;{{Termin |date=2015/09/11 18:00:00  |enddate=2015/09/13 17:00:00  |title=ffnord-&amp;gt;con 2015.2 |visible=true }} Freifunk Treffen der Gruppen aus dem Norden. Weitere Infos unter h...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Termin&lt;br /&gt;
|date=2015/09/11 18:00:00 &lt;br /&gt;
|enddate=2015/09/13 17:00:00 &lt;br /&gt;
|title=ffnord-&amp;gt;con 2015.2&lt;br /&gt;
|visible=true&lt;br /&gt;
}}&lt;br /&gt;
Freifunk Treffen der Gruppen aus dem Norden. Weitere Infos unter http://ffnord.net/&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:Quelloffene_Programme_kompilieren&amp;diff=19889</id>
		<title>Mac nix basteln:Quelloffene Programme kompilieren</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:Quelloffene_Programme_kompilieren&amp;diff=19889"/>
		<updated>2013-12-11T16:20:09Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;Auf Mac OS X&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compiler: dieser übersetzt den Quelltext in Maschinensprache. Man kann &amp;lt;i&amp;gt;Xcode&amp;lt;/i&amp;gt; installieren. Bei bei 10.7 kann man es sich aus dem App Store ziehen, bei 10.6 ist es auf der Installations-DVD zu finden&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Packetverwaltungsprogramm: es übernimmt drei Schritte des Bauens von Programmen:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Konfigurieren: wählt sinnvolle Voreinstellungen zum Kompilieren des Programmes auf dem jeweiligen Betriebssystem&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Kompilieren: schmeisst den Quelltext (welcher nicht nur in einer Datei sein, sondern aus einem ganzen Paket von Bibliotheken bestehen kann) in den compiler (hier: &amp;lt;i&amp;gt;make&amp;lt;/i&amp;gt;, welches mit &amp;lt;i&amp;gt;Xcode&amp;lt;/i&amp;gt; kommt)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Installieren: schiebt die beim Kompilieren entstanden Dateien in die richtigen Verzeichnisse und nimmt Einstellungen vor, damit das Programm auf dem jeweiligen Betriebssystem auch lauffähig ist&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
Als Paketverwaltungsprogram wählen wir [http://en.wikipedia.org/wiki/Homebrew_%28package_management_software%29 homebrew]. Zum Herunterladen und Installieren von &amp;lt;i&amp;gt;homebrew&amp;lt;/i&amp;gt; schreiben wir ins Terminal:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;ruby -e &amp;quot;$(curl -fsSL https://raw.github.com/mxcl/homebrew/go/install)&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Das bedeutet soviel wie [http://de.wikipedia.org/wiki/Ruby_%28Programmiersprache%29 ruby], schnapp dir mal mit Hilfe von [http://de.wikipedia.org/wiki/CURL cURL] den an der angegeben Adresse liegenden Quelltext und führe diesen aus (Parameter &amp;lt;code&amp;gt;-e&amp;lt;/code&amp;gt;)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;homebrew&amp;lt;/i&amp;gt; hat eine Datenbank welche software es so gibt, wie es damit umgehen soll und wo die im Netz so rumliegt. Um diese Datenbank zu aktuallisieren schreiben wir:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ brew update&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Jetzt installieren wir noch die Versionierungsverwaltung [http://de.wikipedia.org/wiki/Git git]:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ brew install git&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Installieren: Im letzten Schritt kann man dann die gewünschte software, die man eigentlich installieren wollte, herunterladen, übersetzen und installieren. Dies läuft auch nicht anders als schon die Installation von &amp;lt;i&amp;gt;git&amp;lt;/i&amp;gt;. Als weiteres Beispiel wird der FTP-Dienst &amp;lt;i&amp;gt;VSFTPd&amp;lt;/i&amp;gt; installiert:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ brew install vsftpd&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sollten weitere Eingaben erforderlich sein, weisst &amp;lt;i&amp;gt;homebrew&amp;lt;/i&amp;gt; darauf hin.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Brew entfernen&amp;lt;/h4&amp;gt;&lt;br /&gt;
Falls man &amp;lt;i&amp;gt;brew&amp;lt;/i&amp;gt; wieder los werden möchte:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd `brew --prefix`&amp;lt;br&amp;gt;&lt;br /&gt;
$ rm -rf Cellar&amp;lt;br&amp;gt;&lt;br /&gt;
$ brew prune&amp;lt;br&amp;gt;&lt;br /&gt;
$ rm -rf Library .git .gitignore bin/brew README.md share/man/man1/brew&amp;lt;br&amp;gt;&lt;br /&gt;
$ rm -rf ~/Library/Caches/Homebrew&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Mac_nix_basteln]]&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Termin:Securecamp_%E2%80%93_Sicherheit_und_Anonymit%C3%A4t_im_Internet&amp;diff=14261</id>
		<title>Termin:Securecamp – Sicherheit und Anonymität im Internet</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Termin:Securecamp_%E2%80%93_Sicherheit_und_Anonymit%C3%A4t_im_Internet&amp;diff=14261"/>
		<updated>2012-12-02T13:57:43Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Termin&lt;br /&gt;
|date=2012/11/24 10:00:00 AM&lt;br /&gt;
|enddate=2012/11/25 06:00:00 PM&lt;br /&gt;
|title=SecureCamp – Sicherheit und Anonymität im Internet&lt;br /&gt;
|url=http://www.securecamp.org&lt;br /&gt;
|visible=Yes&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
[[File:Securecamp.jpg|left|link=]]&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;SecureCamp – Sicherheit und Anonymität im Internet&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Wochenende vom 24. - 25. November 2012 veranstalten wir das SecureCamp, das BarCamp rund um Sicherheit und Anonymität im Internet. &lt;br /&gt;
&lt;br /&gt;
Bereits am Vorabend besteht die Möglichkeit die ersten Teilnehmer und den Veranstaltungort, im Rahmen der Warm Up-Party, kennenzulernen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Worum geht es?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es geht um Sicherheit und Anonymität im Internet, angefangen beim IT-Grundschutz bis hin zur Verschlüsselung der Festplatte oder der Nutzung von Anonymisierungsdiensten.&lt;br /&gt;
&lt;br /&gt;
Ansprechen möchte wir alle, die sich beruflich oder privat mit den Themen beschäftigen und Interesse haben sich auszutauschen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ob Workshops, Gesprächsrunden, oder klassische Vorträge – dem Format sind barcamptypisch keine Grenzen gesetzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zu finden sind wir ebenfalls auf folgenden Plattformen: [http://securecamp.mixxt.de/ mixxt] | [http://www.facebook.com/SecureCamp Facebook] | [http://twitter.com/securecamp Twitter] #securecamp um euch auf dem Laufenden zu halten. ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Da das BarCamp über die mixxt-Plattform organisiert wird, ist die Registrierung dort Voraussetzung um sich später verbindlich anzumelden!&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wer wissen möchte, was ein BarCamp genau ist, kann dies im [http://dl.dropbox.com/u/5922926/Barcamp-Leitfaden.pdf BarCamp Leitfaden] von Torsten Maue oder bei [http://de.wikipedia.org/wiki/BarCamp Wikipedia] nachlesen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wir freuen uns über euer Interesse, zahlreiche  Unterstützer und auf ein spannendes Camp!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
==Folien==&lt;br /&gt;
&lt;br /&gt;
* [[media:stuxnet_smay.pdf | Stuxnet, Stefan May]]&lt;br /&gt;
* [[media:SMIME.pdf | Nachrichtenverschlüsselung mit S/MIME, Andre Schmidt]]&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=File:SMIME.pdf&amp;diff=14260</id>
		<title>File:SMIME.pdf</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=File:SMIME.pdf&amp;diff=14260"/>
		<updated>2012-12-02T13:55:09Z</updated>

		<summary type="html">&lt;p&gt;Andre: Präsentation zur Nachrichtenverschlüsselung mit S/MIME vom securecamp 2012&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Präsentation zur Nachrichtenverschlüsselung mit S/MIME vom securecamp 2012&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:Quelloffene_Programme_kompilieren&amp;diff=14107</id>
		<title>Mac nix basteln:Quelloffene Programme kompilieren</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:Quelloffene_Programme_kompilieren&amp;diff=14107"/>
		<updated>2012-11-27T19:43:18Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;Auf Mac OS X&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compiler: dieser übersetzt den Quelltext in Maschinensprache. Man kann &amp;lt;i&amp;gt;Xcode&amp;lt;/i&amp;gt; installieren. Bei bei 10.7 kann man es sich aus dem App Store ziehen, bei 10.6 ist es auf der Installations-DVD zu finden&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Packetverwaltungsprogramm: es übernimmt drei Schritte des Bauens von Programmen:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Konfigurieren: wählt sinnvolle Voreinstellungen zum Kompilieren des Programmes auf dem jeweiligen Betriebssystem&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Kompilieren: schmeisst den Quelltext (welcher nicht nur in einer Datei sein, sondern aus einem ganzen Paket von Bibliotheken bestehen kann) in den compiler (hier: &amp;lt;i&amp;gt;make&amp;lt;/i&amp;gt;, welches mit &amp;lt;i&amp;gt;Xcode&amp;lt;/i&amp;gt; kommt)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Installieren: schiebt die beim Kompilieren entstanden Dateien in die richtigen Verzeichnisse und nimmt Einstellungen vor, damit das Programm auf dem jeweiligen Betriebssystem auch lauffähig ist&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
Als Paketverwaltungsprogram wählen wir [http://en.wikipedia.org/wiki/Homebrew_%28package_management_software%29 homebrew]. Zum Herunterladen und Installieren von &amp;lt;i&amp;gt;homebrew&amp;lt;/i&amp;gt; schreiben wir ins Terminal:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ ruby -e &amp;quot;$(curl -fsSkL raw.github.com/mxcl/homebrew/go)&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Das bedeutet soviel wie [http://de.wikipedia.org/wiki/Ruby_%28Programmiersprache%29 ruby], schnapp dir mal mit Hilfe von [http://de.wikipedia.org/wiki/CURL cURL] den an der angegeben Adresse liegenden Quelltext und führe diesen aus (Parameter &amp;lt;code&amp;gt;-e&amp;lt;/code&amp;gt;)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;homebrew&amp;lt;/i&amp;gt; hat eine Datenbank welche software es so gibt, wie es damit umgehen soll und wo die im Netz so rumliegt. Um diese Datenbank zu aktuallisieren schreiben wir:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ brew update&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Jetzt installieren wir noch die Versionierungsverwaltung [http://de.wikipedia.org/wiki/Git git]:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ brew install git&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Installieren: Im letzten Schritt kann man dann die gewünschte software, die man eigentlich installieren wollte, herunterladen, übersetzen und installieren. Dies läuft auch nicht anders als schon die Installation von &amp;lt;i&amp;gt;git&amp;lt;/i&amp;gt;. Als weiteres Beispiel wird der FTP-Dienst &amp;lt;i&amp;gt;VSFTPd&amp;lt;/i&amp;gt; installiert:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ brew install vsftpd&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sollten weitere Eingaben erforderlich sein, weisst &amp;lt;i&amp;gt;homebrew&amp;lt;/i&amp;gt; darauf hin.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Brew entfernen&amp;lt;/h4&amp;gt;&lt;br /&gt;
Falls man &amp;lt;i&amp;gt;brew&amp;lt;/i&amp;gt; wieder los werden möchte:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd `brew --prefix`&amp;lt;br&amp;gt;&lt;br /&gt;
$ rm -rf Cellar&amp;lt;br&amp;gt;&lt;br /&gt;
$ brew prune&amp;lt;br&amp;gt;&lt;br /&gt;
$ rm -rf Library .git .gitignore bin/brew README.md share/man/man1/brew&amp;lt;br&amp;gt;&lt;br /&gt;
$ rm -rf ~/Library/Caches/Homebrew&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Mac_nix_basteln]]&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenVPN&amp;diff=5489</id>
		<title>Mac nix basteln:OpenVPN</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenVPN&amp;diff=5489"/>
		<updated>2012-04-30T06:21:31Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;Einleitung&amp;lt;/h2&amp;gt;&lt;br /&gt;
Um diesen Artikel einigermaßen sinnvoll nutzen zu können, sei empfohlen vorher die [[Mac_nix_basteln:Krypto_Grundlagen|Krypto Grundlagen]] gelesen zu haben. Darüber hinaus wird es zum Anwenden der aufgelisteten Beispiele erforderlich werden [[Mac_nix_basteln:OpenSSL|Schlüssel per OpenSSL]] erzeugt zu haben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Bei VPN geht es grundsätzlich darum, eine verschlüsselte Verbindung zwischen Rechnern über ein Drittnetz aufzubauen, damit sie agieren können, als hingen sie im selben Netz. VPN ist jedoch nicht automatisch gleich VPN. Es gibt viele Möglichkeiten ein virtuelles privates Netzwerk aufzusetzen:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[[#Klient_zu_server_Verbindung_.28peer_to_peer.29|Verbinden zweier Rechner über ein anderes Netz]], damit sie agieren können, als würden sie im selben Netz hängen. (Wenn es sich lediglich um zwei Rechner handelt, gibt es sicherlich auch einfacherere Wege zum Erfolg)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Einzelne Rechner (Klienten) sollen sich über ein anderes Netz (z.B. dem Internet) mit einem privaten Netz verbinden (z.B. Firmennetz): [[#Klient_zu_server_Verbindung_mit_routing|&lt;br /&gt;
Klient zu server Verbindung mit routing]] oder [[#Klient_zu_server_Verbindung_mit_bridging|Klient zu server Verbindung mit bridging]]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Zusätzlich zum Letzteren kann man auch [http://wiki.openvpn.eu/index.php/Konfiguration_eines_Internetgateways den Internetverkehr der Klienten über das private Netz wieder ins Internet routen]. Das kann sinnvoll sein, wenn man sich an einem Ort mit Internetsperren befindet&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[[#Verbinden_mehrerer_Netze|Verbinden zweier Netze]] über ein drittes, damit die beiden so agieren können, als wären sie eins. (Z.B. zum Verbinden mehrerer Firmenstandorte)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die hier aufgeführten Beispiele sind aus verschiedenen Quellen zusammengetragen. Um einen guten Durchblick zum bekommen lohnt es sich sie alle zu studieren:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://openvpn.net/index.php/open-source/documentation/howto.html OpenVPN.net]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://wiki.openvpn.eu/ OpenVPN Wiki]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://www.online-tutorials.net/security/openvpn-tutorial/tutorials-t-69-209.html OpenVPN Tutorial]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://wiki.freifunk.net/OpenVPN_Howto OpenVPN Howto]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Die Installation von OpenVPN ist die Selbe, ob man Klient oder server ist. Gesteuert wird das Verhalten des jeweiligen Rechners über Konfigurationsdateien. Genau diese werden hier für verschiedene Beispielkonfigurationen gezeigt und erläutert. Sie sind der Einfachheit halber auf das lauffähige Minimum reduziert. Es gibt durchaus noch weitere Einstellungsmöglichkeiten zum Anpassen individueller Bedürfnisse. Ein guten Ausgangspunkt für individuelle Anpassungen findet man am [http://openvpn.net/index.php/open-source/documentation/howto.html#examples Ende der OpenVPN Hilfeseiten]. Die meisten (alle?) Parameter sind dort enthalten und man kann sie nach Bedarf ein und auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Neben den Konfigurationsdateien braucht man zum Betrieb ggf. noch die bereits genannten [[Mac_nix_basteln:OpenSSL|Schlüssel]].&lt;br /&gt;
&lt;br /&gt;
Es wird in den Beispielen davon ausgegangen, dass OpenVPN auf dem Port 1194 läuft. Dieser ist ggf. auf dem Router zum OpenVPN-server durchzuleiten.&lt;br /&gt;
&lt;br /&gt;
Die VPN-Verbindung wird über eine virtuelle Netzwerkkarte &amp;lt;i&amp;gt;getunnelt&amp;lt;/i&amp;gt;. Dieses virtuelle Gerät heißt entweder tun oder tap. Während ein tun-Gerät auf IP-Ebene läuft, läuft das tap-Gerät eine Ebene darunter auf ethernet-Ebene. Möglicher Weise müssen diese Geräte bei OS X nachinstalliert werden. Dafür gibt es [http://tuntaposx.sourceforge.net/ TunTap] (Möglicher Weise deshalb, weil TunTap auf meinen Testrechnern installiert ist und ich nicht weiß, ob es auch ohne funktionert. Möglicher Weise stellt auch OpenVPN selbst tun- &amp;amp;amp; tap-Geräte zur Verfügung).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;h2&amp;gt;Testkonfiguration&amp;lt;/h2&amp;gt;&lt;br /&gt;
Dieser Absatz stellt den denkbar einfachsten Aufbau dar, ist aber nicht wirklich praxistauglich. Der Absatz kann übersprungen werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Installation&amp;lt;/h3&amp;gt;&lt;br /&gt;
Zunächst wird zum Test eine Verbindung zwischen nur zwei Rechnern aufgebaut. Da diese [http://www.openvpn.net/index.php/open-source/documentation/miscellaneous/static-key-mini-howto.html Anleitung] für Anfänger nicht gerade ausführlich ist und für Fortgeschrittene belanglos, wird sie ein wenig weiter aufgeschlüsselt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Im ersten Schritt braucht man zwei Rechner zum Testen. Dabei ist es auch ausreichend wenn man sich beispielsweise zwei [http://de.wikipedia.org/wiki/Virtuelle_Maschine Virtuelle Maschinen] mit Linux aufsetzt. Also...&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[https://www.virtualbox.org/ VirtualBox] installieren und zwei Linuxmaschinen der Wahl aufsetzen. Dabei kann die zweite VM eine Kopie der ersten sein - geht schneller (&amp;lt;code&amp;gt;rechtsklick auf die VM / Klonen&amp;lt;/code&amp;gt;). Wichtig beim Anlegen des Klons ist, darauf zu achten dass man den Haken bei &amp;lt;code&amp;gt;Zuweisen neuer MAC-Adressen für alle Netzwerkkarten&amp;lt;/code&amp;gt; setzt&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Dafür sorgen, dass die VMs vom router jeweils eigene IP-Adressen zugewiesen bekommen, als wären es Rechner die ganz normal im Intranet hängen: &amp;lt;code&amp;gt;VM anklicken / Ändern / Netzwerk / Adapter 1 / Angeschlossen an: Netzwerkbrücke&amp;lt;/code&amp;gt;. Da die VMs unterschiedliche MACs haben, bekommen sie nun auch individuelle IPs&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Auf den VMs muss jeweils OpenVPN installiert werden. Unter Linux: &amp;lt;code&amp;gt;$ apt-get install openvpn&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Konfiguration&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Jetzt kann man wieder der [http://www.openvpn.net/index.php/open-source/documentation/miscellaneous/static-key-mini-howto.html Anleitung] folgen.&lt;br /&gt;
	&amp;lt;ul&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;Statischen Schlüssel für die Verschlüsselung der Verbindung auf dem OpenVPN-Server erzeugen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ openvpn --genkey --secret static.key&amp;lt;/code&amp;gt;. &amp;lt;br&amp;gt;Dieser Schlüssel muss auch auf das den Klienten kopiert werden.&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Die Konfigurationsdatei &amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt; auf dem Server anlegen:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;&lt;br /&gt;
				dev tun&amp;lt;br&amp;gt;&lt;br /&gt;
    			ifconfig 10.8.0.1 10.8.0.2&amp;lt;br&amp;gt;&lt;br /&gt;
    			secret static.key&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
			Es wird eine Virtuelle Netzwerkkarte [http://backreference.org/2010/03/26/tuntap-interface-tutorial/ tunnel device] angelegt. Die server-IP im VPN endet auf 1, die des Klienten auf 2 und die Datei &amp;lt;i&amp;gt;static.key&amp;lt;/i&amp;gt; wird für die Verschlüsselung benutzt&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Die Konfigurationsdatei &amp;lt;i&amp;gt;client.conf&amp;lt;/i&amp;gt; auf dem Klienten anlegen:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;&lt;br /&gt;
				remote myremote.mydomain&amp;lt;br&amp;gt;&lt;br /&gt;
				dev tun&amp;lt;br&amp;gt;&lt;br /&gt;
				ifconfig 10.8.0.2 10.8.0.1&amp;lt;br&amp;gt;&lt;br /&gt;
				secret static.key&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
			&amp;lt;i&amp;gt;myremote.mydomain&amp;lt;/i&amp;gt; ist durch dei Adresse des servers im Intranet zu ersetzen.	Auch hier wird das virtuelle Tunnelgerät angelegt. Jetzt kommt die Klienten-IP im VPN zuerst, dann die server-IP und die Datei &amp;lt;i&amp;gt;static.key&amp;lt;/i&amp;gt; wird für die Verschlüsselung benutzt&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Starten auf dem server als root:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ sudo openvpn --config server.conf &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Starten auf dem Klienten als root:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ sudo openvpn --config client.conf &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Testlauf&amp;lt;/h3&amp;gt;&lt;br /&gt;
Jetzt sollte der Klient in der Lage sein den serven anzupingen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ ping 10.8.0.1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn&#039;s klappt, kann man sich die routing-Informationen anschauen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ route -n&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Ziel&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Router&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Genmask&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;FLags&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Metric&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Ref&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Use&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Iface&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0.0.0.0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;&amp;lt;i&amp;gt;router-IP im Intranet&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0.0.0.0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;UG&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;eth0&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;10.8.0.1&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0.0.0.0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;255.255.255.255&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;UH&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;thn0&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Die IP 10.8.0.1 ist also dem Tunnelgerät zugeordnet worüber die beiden Rechner nun kommunizieren können.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Klient zu server Verbindung (peer to peer)&amp;lt;/h2&amp;gt;&lt;br /&gt;
Hier geht es um das Verbinden zweier (oder mehrer) Rechner über ein anderes Netz, damit sie agieren können, als würden sie im selben Netz hängen. Es gibt nur einen server, der im VPN unter 10.8.0.1 zu erreichen ist, mit dem sich einer oder mehrere Klienten verbinden können, die dann höhere IPs im Subnetz 10.8.0.0/24 erhalten. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;klient1.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 client # Diese Datei konfiguriert einen Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 remote openvpn.beispiel.de 1194 # Hostname/externe IP des servers/routers, Port entsprechend anpassen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-client&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/klient1cert.pem&lt;br /&gt;
 key ./Schluessel/klient1key.pem&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Die Konfiguration des Klienten ist also recht simpel: Adresse &amp;amp;amp; Port des servers werden angegeben, das Protokoll ist UDP, das ganze soll über das tun0-Gerät laufen und es wird das Zertifikat der CA, das eigene Zertifikat und der eigene Schlüssel benötigt. Das war&#039;s.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 server 10.8.0.0 255.255.255.0 # virtuelles VPN-Netzwerk&lt;br /&gt;
 port 1194 # Auf Port 1194 horchen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-server&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte tun0. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/servercert.pem&lt;br /&gt;
 key ./Schluessel/serverkey.pem&lt;br /&gt;
 dh ./dh1024.pem&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 keepalive 20 180 # Alle 20 Sekunden pingen. 3 Minuten time out f&amp;amp;uuml;r Klientenverbindung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Das VPN wird unter 10.8.0.0/24 laufen. Entsprechend ist darauf zu achten, dass dieser IP-Bereich weder im regulären Intranet des Klienten noch des servers vorkommt. Port ist 1194 (ggf. auf der firewall durchleiten nicht vergessen). Es wird UDP verwendet. Wenn in beiden Konfigurationsdateien TCP steht funktioniert es auch. UDP wurde gewählt, da eine der Anleitungen sagt TCP über TCP zu tunneln wäre die schlechteste Idee. Auch hier kommt das &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;-Gerät zum Einsatz und es werden die Zertifikate der CA, des servers sowie der server-Schlüssel als auch die Diffie-Hellmann-Zufallszahlen angegeben. Die Verbindung wird bis zu 3min mit einem keepalive aufrecht erhalten.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun kann es losgehen. Auf dem server:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo openvpn --config server.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf dem Klienten:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo openvpn --config klient1.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Server sollte unter 10.8.0.1 zu erreichen sein&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ ping 10.8.0.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Klient zu server Verbindung mit routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
Diese Konfiguration entspricht im Wesentlichen der letzten. Zusätzlich wird den Klienten allerdings noch erlaubt die Rechner im Intranet des server-Netzes zu sehen. Dies entspricht also dem was i.d.R. passiert wenn man sich mit seinem Firmenrechner über VPN im Intranet der Firma anmeldet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;klient1.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 client # Diese Datei konfiguriert einen Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 remote openvpn.beispiel.de 1194 # Hostname/externe IP des servers/routers, Port entsprechend anpassen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-client&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/klient1cert.pem&lt;br /&gt;
 key ./Schluessel/klient1key.pem&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Man sieht, für die Klienten ändert sich nichts. Es ist die selbige Konfiguration, wie im obigen Beispiel.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 server 10.8.0.0 255.255.255.0 # virtuelles VPN-Netzwerk&lt;br /&gt;
 port 1194 # Auf Port 1194 horchen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-server&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte tun0. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/servercert.pem&lt;br /&gt;
 key ./Schluessel/serverkey.pem&lt;br /&gt;
 dh ./dh1024.pem&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 client-to-client # Daten von VPN-Client zu VPN-Client wird direkt in OpenVPN weitergeleitet&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 push &amp;quot;route 192.168.1.0 255.255.255.0&amp;quot; # Den Client über das Server-LAN informieren (wichtig!)&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # float # Nur wenn Clients ihre IPs während der Verbindung wechseln&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 keepalive 20 180 # Alle 20 Sekunden pingen. 3 Minuten time out f&amp;amp;uuml;r Klientenverbindung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Beim server ändert sich also auch recht wenig. Neu ist der Befehl &#039;&#039;client-to-client&#039;&#039;, der ermöglicht dass die verschiedenen Klienten sich auch untereinander unterhalten können - dies hätte man auch schon bei der obigen Konfiguration machen können. Wichtiger noch ist der Befehl &#039;&#039;push&#039;&#039;. Erst dieser informiert den Klienten darüber, dass hinter dem VPN-server noch ein Intranet liegt mit dem man kommunizieren kann. In diesem Beispiel wird angenommen, das Intranet des servers sei 192.168.1.0/24. Auch hier ist wieder zu beachten, dass dieses Intranet nicht dem eines Klienten entsprechen darf, denn sonst kommt es zu routing-Konflikten.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Routing-Problematik&amp;lt;/h3&amp;gt;&lt;br /&gt;
Leider ist es mit diesem Befehl allein noch nicht getan. Der server muss außerdem in die Lage versetzt werden, die Daten aus dem Intranet ins VPN zu routen und umgekehrt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unter LINUX &amp;amp; Windows geht das [http://wiki.openvpn.eu/index.php/Config_ServerNET_Routing#Forwarding_am_Server_aktivieren folgendermaßen]. Unter Mac OS X sollte man sich ggf. eine plist schreiben, damit dieser Befehl beim Start ausgeführt wird:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo sysctl -w net.inet.ip.forwarding=1&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit ist man aber leider immer noch nicht durch. Jetzt wissen die Klienten also über das Intranet Bescheid und der server routet auch alles brav durch, doch woher wissen die Intranet-Rechner, wie sie mit den VPN-Klienten kommunizieren?  Bisher gar nicht.&amp;lt;br&amp;gt;&lt;br /&gt;
Beispielsweise will der Rechner 192.168.1.5 aus dem Intranet mit einem VPN-Klienten 10.8.0.6 reden. Er wird seinen router fragen, wo er diesen Rechner findet. Und wenn der router nicht gleichzeitig auch der VPN-server ist, wird dieser Antworten: kenne ich nicht. Es gibt also zwei Möglichkeiten. Entweder muss der router auch der VPN-server sein, oder man muss auf jedem Rechner des Intranets eine Route einrichten die sagt: wenn Du einen Rechner aus dem Netz 10.8.0.0/24 erreichen möchtest, frag bitte nicht deinen Standardrouter sondern den VPN-server, der Hilft dir weiter.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo route add -net 10.8.0.0 -netmask 255.255.255.0 -gateway 192.168.1.2&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In diesem Beispiel wird angenommen, dass die Intranet-Adresse des VPN-servers 192.168.1.2 ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Klient zu server Verbindung mit bridging&amp;lt;/h2&amp;gt;&lt;br /&gt;
Im [[#Klient_zu_server_Verbindung_mit_routing|letzten Beispiel]] hat man also verschiedene Subnetze (das Intranet des VPN servers und das VPN selbst) miteinander Verbunden. Beim bridging agiert der VPN-server als Brücke, was bedeutet, dass die VPN-Klienten direkt in das Intranet des VPN-servers gehängt werden. Der server wird damit also quasi zum [http://de.wikipedia.org/wiki/Switch_%28Computertechnik%29 switch].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;klient1.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 client # Diese Datei konfiguriert einen Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 remote openvpn.beispiel.de 1194 # Hostname/externe IP des servers/routers, Port entsprechend anpassen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-client&lt;br /&gt;
 dev tap0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &amp;lt;i&amp;gt;tap0&amp;lt;/i&amp;gt;&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/klient1cert.pem&lt;br /&gt;
 key ./Schluessel/klient1key.pem&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Diesmal hat sich klienten-seitig nur die &#039;&#039;tun&#039;&#039;-Schnittstelle nach &#039;&#039;tap&#039;&#039; geändert. Es gehen also nicht mehr IP-Pakete über das VPN, sondern, eine Ebene tiefer, Ethernetpakete.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 server-bridge 192.168.1.2 255.255.255.0 192.168.1.220 192.168.1.230 # Server IP, Subnetzmaske, Start &amp;amp; End IPs für die VPN-Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 port 1194 # Auf Port 1194 horchen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-server&lt;br /&gt;
 dev tap0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &#039;&#039;tap0&#039;&#039;&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/servercert.pem&lt;br /&gt;
 key ./Schluessel/serverkey.pem&lt;br /&gt;
 dh ./dh1024.pem&lt;br /&gt;
 &amp;lt;br&amp;gt; &lt;br /&gt;
 keepalive 20 180 # Alle 20 Sekunden pingen. 3 Minuten time out f&amp;amp;uuml;r Klientenverbindung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Der Server soll also als Brücke agieren, hat die IP 192.168.1.2 im Subnetz 192.168.1.2/24 und soll an die Klienten IPs im Bereich zwischen 192.168.1.220 und 192.168.1.230 verteilen. Diese Klienten können dann agieren, als würden sie im selben Intranet mit dem VPN-server hängen.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Verbinden mehrerer Netze&amp;lt;/h2&amp;gt;&lt;br /&gt;
Dies ist ein Beispiel für das Verbinden verschiedener Netze (z.B. verschiedene Firmenstandorte oder befreundete Heimnetzwerke) durch routing. Es entspricht also dem Beispiel [[#Klient_zu_server_Verbindung_mit_routing|Klient zu server Verbindung mit routing]], außer dass auf Klienten-Seite nicht nur ein Rechner, sondern ein ganzes Netzwerk hängt.&lt;br /&gt;
&lt;br /&gt;
 ---------------------------                          --------------         -------------&lt;br /&gt;
 |   Server 1              |                          | Rechner 1.1|         |  R 1.N    |&lt;br /&gt;
 |OVPN-Server              | Netzwerk 1: Hamburg      |            |         |           |&lt;br /&gt;
 |eth0: openvpn.beispiel.de|--------------------------|192.168.0.2 |-- ... --|192.168.0.n|&lt;br /&gt;
 |eth1: 192.168.0.1        | 192.168.0.0/24           |            |         |           |&lt;br /&gt;
 |tun0: 10.0.0.1           |                          |            |         |           |&lt;br /&gt;
 ---------------------------                          --------------         -------------&lt;br /&gt;
           | | Internet&lt;br /&gt;
           | |&lt;br /&gt;
           | | &lt;br /&gt;
           | | Netzwerk 3: OpenVPN&lt;br /&gt;
           | | 10.0.0.0/24&lt;br /&gt;
           | |&lt;br /&gt;
           | |&lt;br /&gt;
 --------------------------                          --------------         -------------&lt;br /&gt;
 |   Server 2             |                          | Rechner 2.1|         |  R 2.N    |&lt;br /&gt;
 |OVPN-Client             | Netzwerk 2: Dortmund     |            |         |           |&lt;br /&gt;
 |eth0: IP von Provider   |--------------------------|192.168.1.2 |-- ... --|192.168.1.n|&lt;br /&gt;
 |eth1: 192.168.1.1       | 192.168.1.0/24           |            |         |           |&lt;br /&gt;
 |tun0: 10.0.0.6          |                          |            |         |           |&lt;br /&gt;
 --------------------------                          --------------         -------------&lt;br /&gt;
&lt;br /&gt;
Dementsprechend ist die Klienten-Konfiguration auch die selbe:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;klient1.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 client # Diese Datei konfiguriert einen Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 remote openvpn.beispiel.de 1194 # Hostname/externe IP des servers/routers, Port entsprechend anpassen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-client&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/klient1cert.pem&lt;br /&gt;
 key ./Schluessel/klient1key.pem&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 server 10.0.0.0 255.255.255.0 # virtuelles VPN-Netzwerk&lt;br /&gt;
 port 1194 # Auf Port 1194 horchen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-server&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte tun0. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/servercert.pem&lt;br /&gt;
 key ./Schluessel/serverkey.pem&lt;br /&gt;
 dh ./dh1024.pem&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 client-config-dir ./ccd&lt;br /&gt;
 route 192.168.1.0 255.255.255.0         # Klientennetz + Maske&lt;br /&gt;
 push &amp;quot;route 192.168.0.0 255.255.255.0&amp;quot; # Den Client über das Server-LAN informieren&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # float # Nur wenn Clients ihre IPs während der Verbindung wechseln&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 keepalive 20 180 # Alle 20 Sekunden pingen. 3 Minuten time out f&amp;amp;uuml;r Klientenverbindung&lt;br /&gt;
&lt;br /&gt;
Diesmal wird noch eine weitere Datei im Klienten-Konfigurations-Verzeichnis (CCD) benötigt. Der Pfad der Datei ist in der &#039;&#039;server.conf&#039;&#039; angegeben &#039;&#039;client-config-dir ./ccd&#039;&#039;. Der Dateiname des jeweiligen Klienten muss dem &#039;&#039;common name&#039;&#039; im Klientenzertifikat &#039;&#039;klient1cert.pem&#039;&#039; entsprechen. Ist der &#039;&#039;common name&#039;&#039; dort beispielsweise &#039;&#039;dortmundnetz&#039;&#039;, muss die Datei &#039;&#039;./ccd/dortmundnetz&#039;&#039; heissen. Der Inhalt:&lt;br /&gt;
 iroute 192.168.1.0 255.255.255.0  # Klientennetz + Maske&lt;br /&gt;
&lt;br /&gt;
Es scheint redundant, dass das Klientennetz zweimal angegeben wird (einmal in der &#039;&#039;server.conf&#039;&#039; und einmal im CCD). Alerdings sind die Befehle unterschiedlich: &#039;&#039;route&#039;&#039; macht das routing zwischen kernel und dem OpenVPN-server über &#039;&#039;tun0&#039;&#039;, während iroute das routing zwischen dem server und den Klienten macht.&lt;br /&gt;
&lt;br /&gt;
Auch hier ergibt sich wieder die [[#Routing-Problematik|routing-Problematik]] - und diesmal auf beiden Seiten. Sowohl der server als auch der Klient müssen in diesem Fall als router in ihrem jeweiligen Netzwerk agieren, um die beiden Netzwerke über VPN zusammen zu bringen. Beide müssen also wie oben beschrieben als router konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
Danach sollten die Rechner unter den IPs des einleitenden Schaubildes pingbar sein.&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenVPN&amp;diff=5482</id>
		<title>Mac nix basteln:OpenVPN</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenVPN&amp;diff=5482"/>
		<updated>2012-04-29T18:23:32Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;Einleitung&amp;lt;/h2&amp;gt;&lt;br /&gt;
Um diesen Artikel einigermaßen sinnvoll nutzen zu können, sei empfohlen vorher die [[Mac_nix_basteln:Krypto_Grundlagen|Krypto Grundlagen]] gelesen zu haben. Darüber hinaus wird es zum Anwenden der aufgelisteten Beispiele erforderlich werden [[Mac_nix_basteln:OpenSSL|Schlüssel per OpenSSL]] erzeugt zu haben (mit Ausnahme des Testbeispiels).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Bei VPN geht es grundsätzlich darum, eine verschlüsselte Verbindung zwischen Rechnern über ein Drittnetz aufzubauen, damit sie agieren können, als hingen sie im selben Netz. VPN ist jedoch nicht automatisch gleich VPN. Es gibt viele Möglichkeiten ein virtuelles privates Netzwerk aufzusetzen:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[[#Klient_zu_server_Verbindung_.28peer_to_peer.29|Verbinden zweier Rechner über ein anderes Netz]], damit sie agieren können, als würden sie im selben Netz hängen. (Wenn es sich lediglich um zwei Rechner handelt, gibt es sicherlich auch einfacherere Wege zum Erfolg)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Einzelne Rechner (Klienten) sollen sich über ein anderes Netz (z.B. dem Internet) mit einem privaten Netz verbinden (z.B. Firmennetz): [[#Klient_zu_server_Verbindung_mit_routing|&lt;br /&gt;
Klient zu server Verbindung mit routing]] oder [[#Klient_zu_server_Verbindung_mit_bridging|Klient zu server Verbindung mit bridging]]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Zusätzlich zum Letzteren kann man auch [http://wiki.openvpn.eu/index.php/Konfiguration_eines_Internetgateways den Internetverkehr der Klienten über das private Netz wieder ins Internet routen]. Das kann sinnvoll sein, wenn man sich an einem Ort mit Internetsperren befindet&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[[#Verbinden_mehrerer_Netze|Verbinden zweier Netze]] über ein drittes, damit die beiden so agieren können, als wären sie eins. (Z.B. zum Verbinden mehrerer Firmenstandorte)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die hier aufgeführten Beispiele sind aus verschiedenen Quellen zusammengetragen. Um einen guten Durchblick zum bekommen lohnt es sich sie alle zu studieren:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://openvpn.net/index.php/open-source/documentation/howto.html OpenVPN.net]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://wiki.openvpn.eu/ OpenVPN Wiki]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://www.online-tutorials.net/security/openvpn-tutorial/tutorials-t-69-209.html OpenVPN Tutorial]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://wiki.freifunk.net/OpenVPN_Howto OpenVPN Howto]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Die Installation von OpenVPN ist die Selbe, ob man Klient oder server ist. Gesteuert wird das Verhalten des jeweiligen Rechners über Konfigurationsdateien. Genau diese werden hier für verschiedene Beispielkonfigurationen gezeigt und erläutert. Sie sind der Einfachheit halber auf das lauffähige Minimum reduziert. Es gibt durchaus noch weitere Einstellungsmöglichkeiten zum Anpassen individueller Bedürfnisse. Ein guten Ausgangspunkt für individuelle Anpassungen findet man am [http://openvpn.net/index.php/open-source/documentation/howto.html#examples Ende der OpenVPN Hilfeseiten]. Die meisten (alle?) Parameter sind dort enthalten und man kann sie nach Bedarf ein und auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Neben den Konfigurationsdateien braucht man zum Betrieb ggf. noch die bereits genannten [[Mac_nix_basteln:OpenSSL|Schlüssel]].&lt;br /&gt;
&lt;br /&gt;
Es wird in den Beispielen davon ausgegangen, dass OpenVPN auf dem Port 1194 läuft, diese ist ggf. auf dem Router zum OpenVPN-server durchzuleiten.&lt;br /&gt;
&lt;br /&gt;
Die VPN-Verbindung wird über eine virtuelle Netzwerkkarte &amp;lt;i&amp;gt;getunnelt&amp;lt;/i&amp;gt;. Dieses virtuelle Gerät heißt entweder tun oder tap. Während ein tun-Gerät auf IP-Ebene läuft, läuft das tap-Gerät eine Ebene darunter auf ethernet-Ebene. Möglicher Weise müssen diese Geräte bei OS X nachinstalliert werden. Dafür gibt es [http://tuntaposx.sourceforge.net/ TunTap] (Möglicher Weise deshalb, weil TunTap auf meinen Testrechnern installiert ist und ich nicht weiß, ob es auch ohne funktionert. Möglicherweise stellt auch OpenVPN selbst tun- &amp;amp;amp; tap-Geräte zur Verfügung).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;h2&amp;gt;Testkonfiguration&amp;lt;/h2&amp;gt;&lt;br /&gt;
Dieser Absatz stellt den denkbar einfachsten Aufbau dar, ist aber nicht wirklich praxistauglich. Der Absatz kann übersprungen werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Installation&amp;lt;/h3&amp;gt;&lt;br /&gt;
Zunächst wird zum Test eine Verbindung zwischen nur zwei Rechnern aufgebaut. Da diese [http://www.openvpn.net/index.php/open-source/documentation/miscellaneous/static-key-mini-howto.html Anleitung] für Anfänger nicht gerade ausführlich ist und für Fortgeschrittene belanglos, wird sie ein wenig weiter aufgeschlüsselt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Im ersten Schritt braucht man zwei Rechner zum Testen. Dabei ist es auch ausreichend wenn man sich beispielsweise zwei [http://de.wikipedia.org/wiki/Virtuelle_Maschine Virtuelle Maschinen] mit Linux aufsetzt. Also...&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[https://www.virtualbox.org/ VirtualBox] installieren und zwei Linuxmaschinen der Wahl aufsetzen. Dabei kann die zweite VM eine Kopie der ersten sein - geht schneller (&amp;lt;code&amp;gt;rechtsklick auf die VM / Klonen&amp;lt;/code&amp;gt;). Wichtig beim Anlegen des Klons ist, darauf zu achten dass man den Haken bei &amp;lt;code&amp;gt;Zuweisen neuer MAC-Adressen für alle Netzwerkkarten&amp;lt;/code&amp;gt; setzt&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Dafür sorgen, dass die VMs vom router jeweils eigene IP-Adressen zugewiesen bekommen, als wären es Rechner die ganz normal im Intranet hängen: &amp;lt;code&amp;gt;VM anklicken / Ändern / Netzwerk / Adapter 1 / Angeschlossen an: Netzwerkbrücke&amp;lt;/code&amp;gt;. Da die VMs unterschiedliche MACs haben, bekommen sie nun auch individuelle IPs&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Auf den VMs muss jeweils OpenVPN installiert werden. Unter Linux: &amp;lt;code&amp;gt;$ apt-get install openvpn&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Konfiguration&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Jetzt kann man wieder der [http://www.openvpn.net/index.php/open-source/documentation/miscellaneous/static-key-mini-howto.html Anleitung] folgen.&lt;br /&gt;
	&amp;lt;ul&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;Statischen Schlüssel für die Verschlüsselung der Verbindung auf dem OpenVPN-Server erzeugen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ openvpn --genkey --secret static.key&amp;lt;/code&amp;gt;. &amp;lt;br&amp;gt;Dieser Schlüssel muss auch auf das den Klienten kopiert werden.&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Die Konfigurationsdatei &amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt; auf dem Server anlegen:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;&lt;br /&gt;
				dev tun&amp;lt;br&amp;gt;&lt;br /&gt;
    			ifconfig 10.8.0.1 10.8.0.2&amp;lt;br&amp;gt;&lt;br /&gt;
    			secret static.key&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
			Es wird eine Virtuelle Netzwerkkarte [http://backreference.org/2010/03/26/tuntap-interface-tutorial/ tunnel device] angelegt. Die server-IP im VPN endet auf 1, die des Klienten auf 2 und die Datei &amp;lt;i&amp;gt;static.key&amp;lt;/i&amp;gt; wird für die Verschlüsselung benutzt&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Die Konfigurationsdatei &amp;lt;i&amp;gt;client.conf&amp;lt;/i&amp;gt; auf dem Klienten anlegen:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;&lt;br /&gt;
				remote myremote.mydomain&amp;lt;br&amp;gt;&lt;br /&gt;
				dev tun&amp;lt;br&amp;gt;&lt;br /&gt;
				ifconfig 10.8.0.2 10.8.0.1&amp;lt;br&amp;gt;&lt;br /&gt;
				secret static.key&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
			&amp;lt;i&amp;gt;myremote.mydomain&amp;lt;/i&amp;gt; ist durch dei Adresse des servers im Intranet zu ersetzen.	Auch hier wird das virtuelle Tunnelgerät angelegt. Jetzt kommt die Klienten-IP im VPN zuerst, dann die server-IP und die Datei &amp;lt;i&amp;gt;static.key&amp;lt;/i&amp;gt; wird für die Verschlüsselung benutzt&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Starten auf dem server als root:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ sudo openvpn --config server.conf &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Starten auf dem Klienten als root:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ sudo openvpn --config client.conf &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Testlauf&amp;lt;/h3&amp;gt;&lt;br /&gt;
Jetzt sollte der Klient in der Lage sein den serven anzupingen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ ping 10.8.0.1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn&#039;s klappt, kann man sich die routing-Informationen anschauen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ route -n&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Ziel&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Router&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Genmask&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;FLags&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Metric&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Ref&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Use&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Iface&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0.0.0.0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;&amp;lt;i&amp;gt;router-IP im Intranet&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0.0.0.0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;UG&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;eth0&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;10.8.0.1&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0.0.0.0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;255.255.255.255&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;UH&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;thn0&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Die IP 10.8.0.1 ist also dem Tunnelgerät zugeordnet worüber die beiden Rechner nun kommunizieren können.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Klient zu server Verbindung (peer to peer)&amp;lt;/h2&amp;gt;&lt;br /&gt;
Hier geht es um das Verbinden zweier (oder mehrer) Rechner über ein anderes Netz, damit sie agieren können, als würden sie im selben Netz hängen. Es gibt nur einen server, der im VPN unter 10.8.0.1 zu erreichen ist, mit dem sich einer oder mehrere Klienten verbinden können, die dann höhere IPs im Subnetz 10.8.0.0/24 erhalten. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;klient1.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 client # Diese Datei konfiguriert einen Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 remote openvpn.beispiel.de 1194 # Hostname/externe IP des servers/routers, Port entsprechend anpassen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-client&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/klient1cert.pem&lt;br /&gt;
 key ./Schluessel/klient1key.pem&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Die Konfiguration des Klienten ist also recht simpel: Adresse &amp;amp;amp; Port des servers werden angegeben, das Protokoll ist UDP, das ganze soll über das tun0-Gerät laufen und es wird das Zertifikat der CA, das eigene Zertifikat und der eigene Schlüssel benötigt. Das war&#039;s.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 server 10.8.0.0 255.255.255.0 # virtuelles VPN-Netzwerk&lt;br /&gt;
 port 1194 # Auf Port 1194 horchen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-server&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte tun0. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/servercert.pem&lt;br /&gt;
 key ./Schluessel/serverkey.pem&lt;br /&gt;
 dh ./dh1024.pem&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 keepalive 20 180 # Alle 20 Sekunden pingen. 3 Minuten time out f&amp;amp;uuml;r Klientenverbindung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Das VPN wird unter 10.8.0.0/24 laufen. Entsprechend ist darauf zu achten, dass dieser IP-Bereich weder im regulären Intranet des Klienten noch des servers vorkommt. Port ist 1194 (ggf. auf der firewall durchleiten nicht vergessen). Es wird UDP verwendet. Wenn in beiden Konfigurationsdateien TCP steht funktioniert es auch. UDP wurde gewählt, da eine der Anleitungen sagt TCP über TCP zu tunneln wäre die schlechteste Idee. Auch hier kommt das &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;-Gerät zum Einsatz und es werden die Zertifikate der CA, des servers sowie der server-Schlüssel als auch die Diffie-Hellmann-Zufallszahlen angegeben. Die Verbindung wird bis zu 3min mit einem keepalive aufrecht erhalten.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun kann es losgehen. Auf dem server:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo openvpn --config server.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf dem Klienten:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo openvpn --config klient1.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Server sollte unter 10.8.0.1 zu erreichen sein&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ ping 10.8.0.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Klient zu server Verbindung mit routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
Diese Konfiguration entspricht im Wesentlichen der letzten. Zusätzlich wird den Klienten allerdings noch erlaubt die Rechner im Intranet des server-Netzes zu sehen. Dies entspricht also dem was i.d.R. passiert wenn man sich mit seinem Firmenrechner über VPN im Intranet der Firma anmeldet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;klient1.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 client # Diese Datei konfiguriert einen Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 remote openvpn.beispiel.de 1194 # Hostname/externe IP des servers/routers, Port entsprechend anpassen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-client&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/klient1cert.pem&lt;br /&gt;
 key ./Schluessel/klient1key.pem&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Man sieht, für die Klienten ändert sich nichts. Es ist die selbige Konfiguration, wie im obigen Beispiel.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 server 10.8.0.0 255.255.255.0 # virtuelles VPN-Netzwerk&lt;br /&gt;
 port 1194 # Auf Port 1194 horchen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-server&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte tun0. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/servercert.pem&lt;br /&gt;
 key ./Schluessel/serverkey.pem&lt;br /&gt;
 dh ./dh1024.pem&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 client-to-client # Daten von VPN-Client zu VPN-Client wird direkt in OpenVPN weitergeleitet&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 push &amp;quot;route 192.168.1.0 255.255.255.0&amp;quot; # Den Client über das Server-LAN informieren (wichtig!)&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # float # Nur wenn Clients ihre IPs während der Verbindung wechseln&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 keepalive 20 180 # Alle 20 Sekunden pingen. 3 Minuten time out f&amp;amp;uuml;r Klientenverbindung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Beim server ändert sich also auch recht wenig. Neu ist der Befehl &#039;&#039;client-to-client&#039;&#039;, der ermöglicht dass die verschiedenen Klienten sich auch untereinander unterhalten können - dies hätte man auch schon bei der obigen Konfiguration machen können. Wichtiger noch ist der Befehl &#039;&#039;push&#039;&#039;. Erst dieser informiert den Klienten darüber, dass hinter dem VPN-server noch ein Intranet liegt mit dem man kommunizieren kann. In diesem Beispiel wird angenommen, das Intranet des servers sei 192.168.1.0/24. Auch hier ist wieder zu beachten, dass dieses Intranet nicht dem eines Klienten entsprechen darf, denn sonst kommt es zu routing-Konflikten.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Routing-Problematik&amp;lt;/h3&amp;gt;&lt;br /&gt;
Leider ist es mit diesem Befehl allein noch nicht getan. Der server muss außerdem in die Lage versetzt werden, die Daten aus dem Intranet ins VPN zu routen und umgekehrt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unter LINUX &amp;amp; Windows geht das [http://wiki.openvpn.eu/index.php/Config_ServerNET_Routing#Forwarding_am_Server_aktivieren folgendermaßen]. Unter Mac OS X sollte man sich ggf. eine plist schreiben, damit dieser Befehl beim Start ausgeführt wird:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo sysctl -w net.inet.ip.forwarding=1&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit ist man aber leider immer noch nicht durch. Jetzt wissen die Klienten also über das Intranet Bescheid und der server routet auch alles brav durch, doch woher wissen die Intranet-Rechner, wie sie mit den VPN-Klienten kommunizieren?  Bisher gar nicht.&amp;lt;br&amp;gt;&lt;br /&gt;
Beispielsweise will der Rechner 192.168.1.5 aus dem Intranet mit einem VPN-Klienten 10.8.0.6 reden. Er wird seinen router fragen, wo er diesen Rechner findet. Und wenn der router nicht gleichzeitig auch der VPN-server ist, wird dieser Antworten: kenne ich nicht. Es gibt also zwei Möglichkeiten. Entweder muss der router auch der VPN-server sein, oder man muss auf jedem Rechner des Intranets eine Route einrichten die sagt: wenn Du einen Rechner aus dem Netz 10.8.0.0/24 erreichen möchtest, frag bitte nicht deinen Standardrouter sondern den VPN-server, der Hilft dir weiter.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo route add -net 10.8.0.0 -netmask 255.255.255.0 -gateway 192.168.1.2&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In diesem Beispiel wird angenommen, dass die Intranet-Adresse des VPN-servers 192.168.1.2 ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Klient zu server Verbindung mit bridging&amp;lt;/h2&amp;gt;&lt;br /&gt;
Im [[#Klient_zu_server_Verbindung_mit_routing|letzten Beispiel]] hat man also verschiedene Subnetze (das Intranet des VPN servers und das VPN selbst) miteinander Verbunden. Beim bridging agiert der VPN-server als Brücke, was bedeutet, dass die VPN-Klienten direkt in das Intranet des VPN-servers gehängt werden. Der server wird damit also quasi zum [http://de.wikipedia.org/wiki/Switch_%28Computertechnik%29 switch].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;klient1.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 client # Diese Datei konfiguriert einen Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 remote openvpn.beispiel.de 1194 # Hostname/externe IP des servers/routers, Port entsprechend anpassen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-client&lt;br /&gt;
 dev tap0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &amp;lt;i&amp;gt;tap0&amp;lt;/i&amp;gt;&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/klient1cert.pem&lt;br /&gt;
 key ./Schluessel/klient1key.pem&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Diesmal hat sich klienten-seitig nur die &#039;&#039;tun&#039;&#039;-Schnittstelle nach &#039;&#039;tap&#039;&#039; geändert. Es gehen also nicht mehr IP-Pakete über das VPN, sondern, eine Ebene tiefer, Ethernetpakete.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 server-bridge 192.168.1.2 255.255.255.0 192.168.1.220 192.168.1.230 # Server IP, Subnetzmaske, Start &amp;amp; End IPs für die VPN-Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 port 1194 # Auf Port 1194 horchen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-server&lt;br /&gt;
 dev tap0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &#039;&#039;tap0&#039;&#039;&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/servercert.pem&lt;br /&gt;
 key ./Schluessel/serverkey.pem&lt;br /&gt;
 dh ./dh1024.pem&lt;br /&gt;
 &amp;lt;br&amp;gt; &lt;br /&gt;
 keepalive 20 180 # Alle 20 Sekunden pingen. 3 Minuten time out f&amp;amp;uuml;r Klientenverbindung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Der Server soll also als Brücke agieren, hat die IP 192.168.1.2 im Subnetz 192.168.1.2/24 und soll an die Klienten IPs im Bereich zwischen 192.168.1.220 und 192.168.1.230 verteilen. Diese Klienten können dann agieren, als würden sie im selben Intranet mit dem VPN-server hängen.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Verbinden mehrerer Netze&amp;lt;/h2&amp;gt;&lt;br /&gt;
Dies ist ein Beispiel für das Verbinden verschiedener Netze (z.B. verschiedene Firmenstandorte oder befreundete Heimnetzwerke) durch routing. Es entspricht also dem Beispiel [[#Klient_zu_server_Verbindung_mit_routing|Klient zu server Verbindung mit routing]], außer dass auf Klienten-Seite nicht nur ein Rechner, sondern ein ganzes Netzwerk hängt.&lt;br /&gt;
&lt;br /&gt;
 ---------------------------                          --------------         -------------&lt;br /&gt;
 |   Server 1              |                          | Rechner 1.1|         |  R 1.N    |&lt;br /&gt;
 |OVPN-Server              | Netzwerk 1: Hamburg      |            |         |           |&lt;br /&gt;
 |eth0: openvpn.beispiel.de|--------------------------|192.168.0.2 |-- ... --|192.168.0.n|&lt;br /&gt;
 |eth1: 192.168.0.1        | 192.168.0.0/24           |            |         |           |&lt;br /&gt;
 |tun0: 10.0.0.1           |                          |            |         |           |&lt;br /&gt;
 ---------------------------                          --------------         -------------&lt;br /&gt;
           | | Internet&lt;br /&gt;
           | |&lt;br /&gt;
           | | &lt;br /&gt;
           | | Netzwerk 3: OpenVPN&lt;br /&gt;
           | | 10.0.0.0/24&lt;br /&gt;
           | |&lt;br /&gt;
           | |&lt;br /&gt;
 --------------------------                          --------------         -------------&lt;br /&gt;
 |   Server 2             |                          | Rechner 2.1|         |  R 2.N    |&lt;br /&gt;
 |OVPN-Client             | Netzwerk 2: Dortmund     |            |         |           |&lt;br /&gt;
 |eth0: IP von Provider   |--------------------------|192.168.1.2 |-- ... --|192.168.1.n|&lt;br /&gt;
 |eth1: 192.168.1.1       | 192.168.1.0/24           |            |         |           |&lt;br /&gt;
 |tun0: 10.0.0.6          |                          |            |         |           |&lt;br /&gt;
 --------------------------                          --------------         -------------&lt;br /&gt;
&lt;br /&gt;
Dementsprechend ist die Klienten-Konfiguration auch die selbe:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;klient1.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 client # Diese Datei konfiguriert einen Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 remote openvpn.beispiel.de 1194 # Hostname/externe IP des servers/routers, Port entsprechend anpassen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-client&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/klient1cert.pem&lt;br /&gt;
 key ./Schluessel/klient1key.pem&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 server 10.0.0.0 255.255.255.0 # virtuelles VPN-Netzwerk&lt;br /&gt;
 port 1194 # Auf Port 1194 horchen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-server&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte tun0. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/servercert.pem&lt;br /&gt;
 key ./Schluessel/serverkey.pem&lt;br /&gt;
 dh ./dh1024.pem&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 client-config-dir ./ccd&lt;br /&gt;
 route 192.168.1.0 255.255.255.0         # Klientennetz + Maske&lt;br /&gt;
 push &amp;quot;route 192.168.0.0 255.255.255.0&amp;quot; # Den Client über das Server-LAN informieren&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # float # Nur wenn Clients ihre IPs während der Verbindung wechseln&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 keepalive 20 180 # Alle 20 Sekunden pingen. 3 Minuten time out f&amp;amp;uuml;r Klientenverbindung&lt;br /&gt;
&lt;br /&gt;
Diesmal wird noch eine weitere Datei im Klienten-Konfigurations-Verzeichnis (CCD) benötigt. Der Pfad der Datei ist in der &#039;&#039;server.conf&#039;&#039; angegeben &#039;&#039;client-config-dir ./ccd&#039;&#039;. Der Dateiname des jeweiligen Klienten muss dem &#039;&#039;common name&#039;&#039; im Klientenzertifikat &#039;&#039;klient1cert.pem&#039;&#039; entsprechen. Ist der &#039;&#039;common name&#039;&#039; dort beispielsweise &#039;&#039;dortmundnetz&#039;&#039;, muss die Datei &#039;&#039;./ccd/dortmundnetz&#039;&#039; heissen. Der Inhalt:&lt;br /&gt;
 iroute 192.168.1.0 255.255.255.0  # Klientennetz + Maske&lt;br /&gt;
&lt;br /&gt;
Es scheint redundant, dass das Klientennetz zweimal angegeben wird (einmal in der &#039;&#039;server.conf&#039;&#039; und einmal im CCD). Alerdings sind die Befehle unterschiedlich: &#039;&#039;route&#039;&#039; macht das routing zwischen kernel und dem OpenVPN-server über &#039;&#039;tun0&#039;&#039;, während iroute das routing zwischen dem server und den Klienten macht.&lt;br /&gt;
&lt;br /&gt;
Auch hier ergibt sich wieder die [[#Routing-Problematik|routing-Problematik]] - und diesmal auf beiden Seiten. Sowohl der server als auch der Klient müssen in diesem Fall als router in ihrem jeweiligen Netzwerk agieren, um die beiden Netzwerke über VPN zusammen zu bringen. Beide müssen also wie oben beschrieben als router konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
Danach sollten die Rechner unter den IPs des einleitenden Schaubildes pingbar sein.&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenVPN&amp;diff=5481</id>
		<title>Mac nix basteln:OpenVPN</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenVPN&amp;diff=5481"/>
		<updated>2012-04-29T17:49:49Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;Einleitung&amp;lt;/h2&amp;gt;&lt;br /&gt;
Um diesen Artikel einigermassen sinnvoll nutzen zu können, sei empfohlen vorher die [[Mac_nix_basteln:Krypto_Grundlagen|Krypto Grundlagen]] gelesen zu haben. Darüber hinaus wird es zum Anwenden der aufgelisteten Beispiele erforderlich werden [[Mac_nix_basteln:OpenSSL|Schlüssel per OpenSSL]] erzeugt zu haben (mit Außnahme des Testbeispiels).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Bei VPN geht es grundsätzlich darum, eine verschlüsselte Verbindung zwischen Rechnern über ein Drittnetz aufzubauen, damit sie aggieren können, als hingen sie im selben Netz. VPN ist jedoch nicht automatisch gleich VPN. Es gibt viele Möglichkeiten ein virtuelles privates Netzwerk aufzusetzen:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Verbinden zweier Rechner über ein anderes Netz, damit sie aggieren können, als würden sie im selben Netz hängen. (Wenn es sich lediglich um zwei Rechner handelt, gibt es sicherlich auch einfacherere Wege zum Erfolg)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Einzelne Rechner (Klienten) sollen sich über ein anderes Netz (z.B. dem Internet) mit einem privaten Netz verbinden (z.B. Firmennetz)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Zusätzlich zum Letzteren kann man auch den Internetverkehr der Klienten über das private Netz wieder ins Internet routen. Das kann sinnvoll sein, wenn man sich an einem Ort mit Internetsperren befindet&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Verbinden zweier Netze über ein drittes, damit die beiden so aggieren können, als wären sie eins. (Z.B. zum Verbinden mehrerer Firmenstandorte)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die hier aufgeführten Beispiele sind aus verschiedenen Quellen zusammengetragen. Um einen guten Durchblick zum bekommen, lohnt es sich sie alle zu studieren:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://openvpn.net/index.php/open-source/documentation/howto.html OpenVPN.net]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://wiki.openvpn.eu/ OpenVPN Wiki]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://www.online-tutorials.net/security/openvpn-tutorial/tutorials-t-69-209.html OpenVPN Tutorial]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://wiki.freifunk.net/OpenVPN_Howto OpenVPN Howto]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Die Installation von OpenVPN ist die selbe, ob man Klient oder server ist. Gesteuert wird das Verhalten des jeweiligen Rechners über Konfigurationsdateien. Genau diese werden hier für verschiedene Beispielkonfigurationen gezeigt und erläutert. Sie sind der Einfachheit halber auf das lauffähige Minimum reduziert. Es gibt durchaus noch weitere Einstellungsmöglichkeiten zum Anpassen individueller Bedürfnisse. Ein guten Ausgangspunkt für individuelle Anpassungen findet man am [http://openvpn.net/index.php/open-source/documentation/howto.html#examples Ende der OpenVPN Hilfeseiten]. Die meisten (alle?) Parameter sind dort enthalten und man kann sie nach Bedarf ein und auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Neben den Konfigurationsdateien braucht man zum Betrieb ggf. noch die bereits genannten [[Mac_nix_basteln:OpenSSL|Schlüssel]].&lt;br /&gt;
&lt;br /&gt;
Es wird in den Beispielen davon ausgegangen, dass OpenVPN auf dem Port 1194 läuft, diese ist ggf. auf dem Router zum OpenVPN-server durchzuleiten.&lt;br /&gt;
&lt;br /&gt;
Die VPN-Verbindung wird über eine virtuelle Netzverkkarte &amp;lt;i&amp;gt;getunnelt&amp;lt;/i&amp;gt;. Dieses virtuelle Gerät heisst entweder tun oder tap. Während ein tun-Gerät auf IP-Ebene läuft, läuft das tap-Gerät eine Ebene darunter auf ethernet-Ebene. Möglicher Weise müssen diese Geräte bei OS X nachinstalliert werden. Dafür gibt es [http://tuntaposx.sourceforge.net/ TunTap] (Möglicher Weise deshalb, weil TunTap auf meinen Testrechnern installiert ist und ich nicht weiss, ob es auch ohne funktionert. Möglicherweise stellt auch OpenVPN selbst tun- &amp;amp;amp; tap-Geräte zur Verfügung).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;h2&amp;gt;Testkonfiguration&amp;lt;/h2&amp;gt;&lt;br /&gt;
Dieser Absatz stellt den denkbar einfachsten Aufbau dar, ist aber nicht wirklich praxistauglich. Der Absatz kann übersprungen werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Installation&amp;lt;/h3&amp;gt;&lt;br /&gt;
Zunächst wird zum Test eine Verbindung zwischen nur zwei Rechnern aufgebaut. Da diese [http://www.openvpn.net/index.php/open-source/documentation/miscellaneous/static-key-mini-howto.html Anleitung] für Anfänger nicht gerade ausführlich ist und für Fortgeschrittene belanglos, wird sie ein wenig weiter aufgeschlüsselt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Im ersten Schritt braucht man zwei Rechner zum Testen. Dabei ist es auch ausreichend wenn man sich beispielsweise zwei [http://de.wikipedia.org/wiki/Virtuelle_Maschine Virtuelle Maschinen] mit Linux aufsetzt. Also...&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[https://www.virtualbox.org/ VirtualBox] installieren und zwei Linuxmaschinen der Wahl aufsetzen. Dabei kann die zweite VM eine Kopie der ersten sein - geht schneller (&amp;lt;code&amp;gt;rechtsklick auf die VM / Klonen&amp;lt;/code&amp;gt;). Wichtig beim Anlegen des Klons ist, darauf zu achten dass man den Haken bei &amp;lt;code&amp;gt;Zuweisen neuer MAC-Adressen für alle Netzwerkkarten&amp;lt;/code&amp;gt; setzt&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Dafür sorgen, dass die VMs vom router jeweils eigene IP-Adressen zugewiesen bekommen, als wären es Rechner die ganz normal im Intranet hängen: &amp;lt;code&amp;gt;VM anklicken / Ändern / Netzwerk / Adapter 1 / Angeschlossen an: Netzwerkbrücke&amp;lt;/code&amp;gt;. Da die VMs unterschiedliche MACs haben, bekommen sie nun auch individuelle IPs&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Auf den VMs muss jeweils OpenVPN installiert werden. Unter Linux: &amp;lt;code&amp;gt;$ apt-get install openvpn&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Konfiguration&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Jetzt kann man wieder der [http://www.openvpn.net/index.php/open-source/documentation/miscellaneous/static-key-mini-howto.html Anleitung] folgen.&lt;br /&gt;
	&amp;lt;ul&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;Statischen Schlüssel für die Verschlüsselung der Verbindung auf dem OpenVPN-Server erzeugen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ openvpn --genkey --secret static.key&amp;lt;/code&amp;gt;. &amp;lt;br&amp;gt;Dieser Schlüssel muss auch auf das den Klienten kopiert werden.&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Die Konfigurationsdatei &amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt; auf dem Server anlegen:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;&lt;br /&gt;
				dev tun&amp;lt;br&amp;gt;&lt;br /&gt;
    			ifconfig 10.8.0.1 10.8.0.2&amp;lt;br&amp;gt;&lt;br /&gt;
    			secret static.key&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
			Es wird eine Virtuelle Netzwerkkarte [http://backreference.org/2010/03/26/tuntap-interface-tutorial/ tunnel device] angelegt. Die server-IP im VPN endet auf 1, die des Klienten auf 2 und die Datei &amp;lt;i&amp;gt;static.key&amp;lt;/i&amp;gt; wird für die Verschlüsselung benutzt&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Die Konfigurationsdatei &amp;lt;i&amp;gt;client.conf&amp;lt;/i&amp;gt; auf dem Klienten anlegen:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;&lt;br /&gt;
				remote myremote.mydomain&amp;lt;br&amp;gt;&lt;br /&gt;
				dev tun&amp;lt;br&amp;gt;&lt;br /&gt;
				ifconfig 10.8.0.2 10.8.0.1&amp;lt;br&amp;gt;&lt;br /&gt;
				secret static.key&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
			&amp;lt;i&amp;gt;myremote.mydomain&amp;lt;/i&amp;gt; ist durch dei Adresse des servers im Intranet zu ersetzen.	Auch hier wird das virtuelle Tunnelgerät angelegt. Jetzt kommt die Klienten-IP im VPN zuerst, dann die server-IP und die Datei &amp;lt;i&amp;gt;static.key&amp;lt;/i&amp;gt; wird für die Verschlüsselung benutzt&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Starten auf dem server als root:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ sudo openvpn --config server.conf &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Starten auf dem Klienten als root:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ sudo openvpn --config client.conf &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Testlauf&amp;lt;/h3&amp;gt;&lt;br /&gt;
Jetzt sollte der Klient in der Lage sein den serven anzupingen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ ping 10.8.0.1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn&#039;s klappt, kann man sich die routing-Informationen anschauen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ route -n&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Ziel&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Router&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Genmask&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;FLags&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Metric&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Ref&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Use&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Iface&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0.0.0.0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;&amp;lt;i&amp;gt;router-IP im Intranet&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0.0.0.0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;UG&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;eth0&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;10.8.0.1&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0.0.0.0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;255.255.255.255&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;UH&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;thn0&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Die IP 10.8.0.1 ist also dem Tunnelgerät zugeordnet worüber die beiden Rechner nun kommunizieren können.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Klient zu server Verbindung (peer to peer)&amp;lt;/h2&amp;gt;&lt;br /&gt;
Hier geht es um das Verbinden zweier (oder mehrer) Rechner über ein anderes Netz, damit sie aggieren können, als würden sie im selben Netz hängen. Es gibt nur einen server, der im VPN unter 10.8.0.1 zu erreichen ist, mit dem sich einer oder mehrere Klienten verbinden können, die dann höhere IPs im subnetzt 10.8.0.0/24 erhalten. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;klient1.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 client # Diese Datei konfiguriert einen Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 remote openvpn.beispiel.de 1194 # Hostname/externe IP des servers/routers, Port entsprechend anpassen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-client&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/klient1cert.pem&lt;br /&gt;
 key ./Schluessel/klient1key.pem&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Die Konfiguartion des Klienten ist also recht simpel: Adresse &amp;amp;amp; Port des servers werden angegeben, das Protokoll ist UDP, das ganze soll über das tun0-Gerät laufen und es wird das Zertifikat der CA, das eigene Zertifikat und der eigene Schlüssel benötigt. Das war&#039;s.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 server 10.8.0.0 255.255.255.0 # virtuelles VPN-Netzwerk&lt;br /&gt;
 port 1194 # Auf Port 1194 horchen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-server&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte tun0. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/servercert.pem&lt;br /&gt;
 key ./Schluessel/serverkey.pem&lt;br /&gt;
 dh ./dh1024.pem&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 keepalive 20 180 # Alle 20 Sekunden pingen. 3 Minuten time out f&amp;amp;uuml;r Klientenverbindung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Das VPN wird unter 10.8.0.0/24 laufen. Entsprechend ist darauf zu achten, dass dieser IP-Bereich weder im regulären Intranet des Klienten noch des servers vorkommt. Port ist 1194 (ggf. auf der firewall durchleiten nicht vergessen). Es wird UDP verwendet. Wenn in beiden Konfigurationsdateien TCP steht funktioniert es auch. UDP wurde gewählt, da eine der Anleitungen sagt TCP über TCP zu tunneln wäre die schlechteste Idee. Auch hier kommt das &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;-Gerät zum Einsatz und es werden die Zertifikate der CA, des servers sowie der server-Schlüssel als auch die Diffie-Hellmann-Zufallszahlen angegeben. Die Verbindung wird bis zu 3min mit einem keepalive aufrecht erhalten.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun kann es losgehen. Auf dem server:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo openvpn --config server.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf dem Klienten:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo openvpn --config klient1.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Server sollte unter 10.8.0.1 zu erreichen sein&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ ping 10.8.0.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Klient zu server Verbindung mit routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
Diese Konfiguration entspricht im Wesentlichen der letzten. Zusätzlich wird den Klienten allerdings noch erlaubt die Rechner im Intranet des server-Netzes zu sehen. Dies entspricht also dem was i.d.R. passiert wenn man sich mit seinem Firmenrechner über VPN im Intranet der Firma anmeldet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;klient1.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 client # Diese Datei konfiguriert einen Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 remote openvpn.beispiel.de 1194 # Hostname/externe IP des servers/routers, Port entsprechend anpassen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-client&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/klient1cert.pem&lt;br /&gt;
 key ./Schluessel/klient1key.pem&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Man sieht, für die Klienten ändert sich nichts. Es ist die selbige Konfiguration, wie im obigen Beispiel.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 server 10.8.0.0 255.255.255.0 # virtuelles VPN-Netzwerk&lt;br /&gt;
 port 1194 # Auf Port 1194 horchen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-server&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte tun0. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/servercert.pem&lt;br /&gt;
 key ./Schluessel/serverkey.pem&lt;br /&gt;
 dh ./dh1024.pem&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 client-to-client # Daten von VPN-Client zu VPN-Client wird direkt in OpenVPN weitergeleitet&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 push &amp;quot;route 192.168.1.0 255.255.255.0&amp;quot; # Den Client über das Server-LAN informieren (wichtig!)&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # float # Nur wenn Clients ihre IPs während der Verbindung wechseln&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 keepalive 20 180 # Alle 20 Sekunden pingen. 3 Minuten time out f&amp;amp;uuml;r Klientenverbindung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Beim server ändert sich also auch recht wenig. Neu ist der Befehl &#039;&#039;client-to-client&#039;&#039;, der ermöglicht dass die verschiedenen Klienten sich auch untereinander unterhalten können - dies hätte man auch schon bei der obigen Konfiguration machen könenn. Wichtiger noch ist der Befehl &#039;&#039;push&#039;&#039;. Erst dieser informiert den Klienten darüber, dass hinter dem VPN-server noch ein Intranet liegt mit dem man kommunizieren kann. In diesem Beispiel wird angenommen, das Intranet des servers sei 192.168.1.0/24. Auch hier ist wieder zu beachten, dass dieses Intranet nicht dem eines Klienten entsprechen darf, denn sonst kommt es zu routing konflikten.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Routing-Problematik&amp;lt;/h3&amp;gt;&lt;br /&gt;
Leider ist es mit diesem Befehl allein noch nicht getan. Der server muss außerdem in die Lage versetzt werden, die Daten aus dem Intranet ins VPN zu routen und umgekehrt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unter LINUX &amp;amp; Windows geht das [http://wiki.openvpn.eu/index.php/Config_ServerNET_Routing#Forwarding_am_Server_aktivieren folgendermaßen]. Unter Mac OS X sollte man sich ggf. eine plist schreiben, damit dieser Befehl beim Start ausgeführt wird:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo sysctl -w net.inet.ip.forwarding=1&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit ist man aber leider immer noch nicht durch. Jetzt wissen die Klienten also über das Intranet Bescheid und der server routet auch alles brav durch, doch woher wissen die Intranet-Rechner, wie sie mit den VPN-Klienten kommunizieren?  Bisher gar nicht.&amp;lt;br&amp;gt;&lt;br /&gt;
Beispielsweise will der Rechner 192.168.1.5 aus dem Intranet mit einem VPN-Klienten 10.8.0.6 reden. Er wird seinen router fragen, wo er diesen Rechner findet. Und wenn der router nicht gleichzeitig auch der VPN-server ist, wird dieser Antworten: kenne ich nicht. Es gibt also zwei Möglichkeiten. Entweder muss der Router auch der VPN-server sein, oder man muss auf jedem Rechner des Intranets eine Route einrichten die sagt: wenn Du einen Rechner aus dem Netz 10.8.0.0/24 erreichen möchtest, frag bitte nicht deinen Standardrouter sondern den VPN-server, der Hilft dir weiter.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo route add -net 10.8.0.0 -netmask 255.255.255.0 -gateway 192.168.1.2&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In diesem Beispiel wird angenommen, dass die Intranet-Adresse des VPN-servers 192.168.1.2 ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Klient zu server Verbindung mit bridging&amp;lt;/h2&amp;gt;&lt;br /&gt;
Im [[Mac_nix_basteln:OpenVPN#Klient_zu_server_Verbindung_mit_routing|letzten Beispiel]] hat man also verschiedene Subnetze (das Intranet des VPN servers und das VPN selbst) miteinander Verbunden. Beim bridging aggiert der VPN-server als Brücke, was bedeutet, dass die VPN-Klienten direkt in das Intranet des VPN-servers gehängt werden. Der server wird damit also quasi zum [http://de.wikipedia.org/wiki/Switch_%28Computertechnik%29 switch].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;klient1.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 client # Diese Datei konfiguriert einen Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 remote openvpn.beispiel.de 1194 # Hostname/externe IP des servers/routers, Port entsprechend anpassen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-client&lt;br /&gt;
 dev tap0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &amp;lt;i&amp;gt;tap0&amp;lt;/i&amp;gt;&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/klient1cert.pem&lt;br /&gt;
 key ./Schluessel/klient1key.pem&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Diesmal hat sich klienten-seitig nur die &#039;&#039;tun&#039;&#039;-Schnittstelle nach &#039;&#039;tap&#039;&#039; geändert. Es gehen also nicht mehr IP-Pakete über das VPN, sondern, eine Ebene tiefer, Ethernetpakete.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 server-bridge 192.168.1.2 255.255.255.0 192.168.1.220 192.168.1.230 # Server IP, Subnetzmaske, Start &amp;amp; End IPs für die VPN-Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 port 1194 # Auf Port 1194 horchen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-server&lt;br /&gt;
 dev tap0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &#039;&#039;tap0&#039;&#039;&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/servercert.pem&lt;br /&gt;
 key ./Schluessel/serverkey.pem&lt;br /&gt;
 dh ./dh1024.pem&lt;br /&gt;
 &amp;lt;br&amp;gt; &lt;br /&gt;
 keepalive 20 180 # Alle 20 Sekunden pingen. 3 Minuten time out f&amp;amp;uuml;r Klientenverbindung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Der Server soll also als Brücke aggieren, hat die IP 192.168.1.2 im Subnetz 192.168.1.2/24 und soll an die Klienten IPs im Bereich zwischen 192.168.1.220 und 192.168.1.230 verteilen. Diese Klienten können dann aggieren, als würden sie im selben Intranet mit dem VPN-server hängen.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Verbinden mehrerer Netze&amp;lt;/h2&amp;gt;&lt;br /&gt;
Dies ist ein Beispiel für das Verbinden verschiedener Netze (z.B. verschiedene Firmenstandorte oder befreundete Heimnetzwerke) durch routing. Es entspricht also dem Beispiel [[Mac_nix_basteln:OpenVPN#Klient_zu_server_Verbindung_mit_routing|Klient zu server Verbindung mit routing]], außer dass auf Klienten-Seite nicht nur ein Rechner, sondern ein ganzes Netzwerk hängt.&lt;br /&gt;
&lt;br /&gt;
 ---------------------------                          --------------         -------------&lt;br /&gt;
 |   Server 1              |                          | Rechner 1.1|         |  R 1.N    |&lt;br /&gt;
 |OVPN-Server              | Netzwerk 1: Hamburg      |            |         |           |&lt;br /&gt;
 |eth0: openvpn.beispiel.de|--------------------------|192.168.0.2 |-- ... --|192.168.0.n|&lt;br /&gt;
 |eth1: 192.168.0.1        | 192.168.0.0/24           |            |         |           |&lt;br /&gt;
 |tun0: 10.0.0.1           |                          |            |         |           |&lt;br /&gt;
 ---------------------------                          --------------         -------------&lt;br /&gt;
           | | Internet&lt;br /&gt;
           | |&lt;br /&gt;
           | | &lt;br /&gt;
           | | Netzwerk 3: OpenVPN&lt;br /&gt;
           | | 10.0.0.0/24&lt;br /&gt;
           | |&lt;br /&gt;
           | |&lt;br /&gt;
 --------------------------                          --------------         -------------&lt;br /&gt;
 |   Server 2             |                          | Rechner 2.1|         |  R 2.N    |&lt;br /&gt;
 |OVPN-Client             | Netzwerk 2: Dortmund     |            |         |           |&lt;br /&gt;
 |eth0: IP von Provider   |--------------------------|192.168.1.2 |-- ... --|192.168.1.n|&lt;br /&gt;
 |eth1: 192.168.1.1       | 192.168.1.0/24           |            |         |           |&lt;br /&gt;
 |tun0: 10.0.0.6          |                          |            |         |           |&lt;br /&gt;
 --------------------------                          --------------         -------------&lt;br /&gt;
&lt;br /&gt;
Dementsprechend ist die Klienten-Konfiguration auch die selbe:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;klient1.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 client # Diese Datei konfiguriert einen Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 remote openvpn.beispiel.de 1194 # Hostname/externe IP des servers/routers, Port entsprechend anpassen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-client&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/klient1cert.pem&lt;br /&gt;
 key ./Schluessel/klient1key.pem&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 server 10.0.0.0 255.255.255.0 # virtuelles VPN-Netzwerk&lt;br /&gt;
 port 1194 # Auf Port 1194 horchen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-server&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte tun0. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/servercert.pem&lt;br /&gt;
 key ./Schluessel/serverkey.pem&lt;br /&gt;
 dh ./dh1024.pem&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 client-config-dir ./ccd&lt;br /&gt;
 route 192.168.1.0 255.255.255.0         # Klientennetz + Maske&lt;br /&gt;
 push &amp;quot;route 192.168.0.0 255.255.255.0&amp;quot; # Den Client über das Server-LAN informieren&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # float # Nur wenn Clients ihre IPs während der Verbindung wechseln&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 keepalive 20 180 # Alle 20 Sekunden pingen. 3 Minuten time out f&amp;amp;uuml;r Klientenverbindung&lt;br /&gt;
&lt;br /&gt;
Diesmal wird noch eine weitere Datei im Klienten-Konfigurations-Verzeichnis (CCD) benötigt. Der Pfad der Datei ist in der &#039;&#039;server.conf&#039;&#039; angegeben &#039;&#039;client-config-dir ./ccd&#039;&#039;. Der Dateiname des jeweiligen Klienten muss dem &#039;&#039;common name&#039;&#039; im Klientenzertifikat &#039;&#039;klient1cert.pem&#039;&#039; entsprechen. Ist der &#039;&#039;common name&#039;&#039; dort beispielsweise &#039;&#039;dortmundnetz&#039;&#039;, muss die Datei &#039;&#039;./ccd/dortmundnetz&#039;&#039; heissen. Der Inhalt:&lt;br /&gt;
 iroute 192.168.1.0 255.255.255.0  # Klientennetz + Maske&lt;br /&gt;
&lt;br /&gt;
Es scheint redundant, dass das Klientennetz zweimal angegeben wird (einmal in der &#039;&#039;server.conf&#039;&#039; und einmal im CCD). Alerdings sind die Befehle unterschiedlich: &#039;&#039;route&#039;&#039; macht das routing zwischen kernel und dem OpenVPN-server über &#039;&#039;tun0&#039;&#039;, während iroute das routing zwischen dem server und den Klienten macht.&lt;br /&gt;
&lt;br /&gt;
Auch hier ergibt sich wieder die [[Mac_nix_basteln:OpenVPN#Routing-Problematik|routing-Problematik]] - und diesmal auf beiden Seiten. Sowohl der server als auch der Klient müssen in diesem Fall als Router in ihrem jeweiligen Netzwerk aggieren, um die beiden Netzwerke über VPN zusammen zu bringen. Beide müssen also wie oben beschrieben als router konfiuguriert werden.&lt;br /&gt;
&lt;br /&gt;
Danach sollten die Rechner unter den IPs des einleitenden Schaubildes pingbar sein.&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenVPN&amp;diff=5480</id>
		<title>Mac nix basteln:OpenVPN</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenVPN&amp;diff=5480"/>
		<updated>2012-04-29T17:14:06Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;Einleitung&amp;lt;/h2&amp;gt;&lt;br /&gt;
Um diesen Artikel einigermassen sinnvoll nutzen zu können, sei empfohlen vorher die [[Mac_nix_basteln:Krypto_Grundlagen|Krypto Grundlagen]] gelesen zu haben. Darüber hinaus wird es zum Anwenden der aufgelisteten Beispiele erforderlich werden [[Mac_nix_basteln:OpenSSL|Schlüssel per OpenSSL]] erzeugt zu haben (mit Außnahme des Testbeispiels).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Bei VPN geht es grundsätzlich darum, eine verschlüsselte Verbindung zwischen Rechnern über ein Drittnetz aufzubauen, damit sie aggieren können, als hingen sie im selben Netz. VPN ist jedoch nicht automatisch gleich VPN. Es gibt viele Möglichkeiten ein virtuelles privates Netzwerk aufzusetzen:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Verbinden zweier Rechner über ein anderes Netz, damit sie aggieren können, als würden sie im selben Netz hängen. (Wenn es sich lediglich um zwei Rechner handelt, gibt es sicherlich auch einfacherere Wege zum Erfolg)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Einzelne Rechner (Klienten) sollen sich über ein anderes Netz (z.B. dem Internet) mit einem privaten Netz verbinden (z.B. Firmennetz)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Zusätzlich zum Letzteren kann man auch den Internetverkehr der Klienten über das private Netz wieder ins Internet routen. Das kann sinnvoll sein, wenn man sich an einem Ort mit Internetsperren befindet&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Verbinden zweier Netze über ein drittes, damit die beiden so aggieren können, als wären sie eins. (Z.B. zum Verbinden mehrerer Firmenstandorte)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die hier aufgeführten Beispiele sind aus verschiedenen Quellen zusammengetragen. Um einen guten Durchblick zum bekommen, lohnt es sich sie alle zu studieren:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://openvpn.net/index.php/open-source/documentation/howto.html OpenVPN.net]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://wiki.openvpn.eu/ OpenVPN Wiki]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://www.online-tutorials.net/security/openvpn-tutorial/tutorials-t-69-209.html OpenVPN Tutorial]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://wiki.freifunk.net/OpenVPN_Howto OpenVPN Howto]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Die Installation von OpenVPN ist die selbe, ob man Klient oder server ist. Gesteuert wird das Verhalten des jeweiligen Rechners über Konfigurationsdateien. Genau diese werden hier für verschiedene Beispielkonfigurationen gezeigt und erläutert. Sie sind der Einfachheit halber auf das lauffähige Minimum reduziert. Es gibt durchaus noch weitere Einstellungsmöglichkeiten zum Anpassen individueller Bedürfnisse. Ein guten Ausgangspunkt für individuelle Anpassungen findet man am [http://openvpn.net/index.php/open-source/documentation/howto.html#examples Ende der OpenVPN Hilfeseiten]. Die meisten (alle?) Parameter sind dort enthalten und man kann sie nach Bedarf ein und auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Neben den Konfigurationsdateien braucht man zum Betrieb ggf. noch die bereits genannten [[Mac_nix_basteln:OpenSSL|Schlüssel]].&lt;br /&gt;
&lt;br /&gt;
Es wird in den Beispielen davon ausgegangen, dass OpenVPN auf dem Port 1194 läuft, diese ist ggf. auf dem Router zum OpenVPN-server durchzuleiten.&lt;br /&gt;
&lt;br /&gt;
Die VPN-Verbindung wird über eine virtuelle Netzverkkarte &amp;lt;i&amp;gt;getunnelt&amp;lt;/i&amp;gt;. Dieses virtuelle Gerät heisst entweder tun oder tap. Während ein tun-Gerät auf IP-Ebene läuft, läuft das tap-Gerät eine Ebene darunter auf ethernet-Ebene. Möglicher Weise müssen diese Geräte bei OS X nachinstalliert werden. Dafür gibt es [http://tuntaposx.sourceforge.net/ TunTap] (Möglicher Weise deshalb, weil TunTap auf meinen Testrechnern installiert ist und ich nicht weiss, ob es auch ohne funktionert. Möglicherweise stellt auch OpenVPN selbst tun- &amp;amp;amp; tap-Geräte zur Verfügung).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;h2&amp;gt;Testkonfiguration&amp;lt;/h2&amp;gt;&lt;br /&gt;
Dieser Absatz stellt den denkbar einfachsten Aufbau dar, ist aber nicht wirklich praxistauglich. Der Absatz kann übersprungen werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Installation&amp;lt;/h3&amp;gt;&lt;br /&gt;
Zunächst wird zum Test eine Verbindung zwischen nur zwei Rechnern aufgebaut. Da diese [http://www.openvpn.net/index.php/open-source/documentation/miscellaneous/static-key-mini-howto.html Anleitung] für Anfänger nicht gerade ausführlich ist und für Fortgeschrittene belanglos, wird sie ein wenig weiter aufgeschlüsselt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Im ersten Schritt braucht man zwei Rechner zum Testen. Dabei ist es auch ausreichend wenn man sich beispielsweise zwei [http://de.wikipedia.org/wiki/Virtuelle_Maschine Virtuelle Maschinen] mit Linux aufsetzt. Also...&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[https://www.virtualbox.org/ VirtualBox] installieren und zwei Linuxmaschinen der Wahl aufsetzen. Dabei kann die zweite VM eine Kopie der ersten sein - geht schneller (&amp;lt;code&amp;gt;rechtsklick auf die VM / Klonen&amp;lt;/code&amp;gt;). Wichtig beim Anlegen des Klons ist, darauf zu achten dass man den Haken bei &amp;lt;code&amp;gt;Zuweisen neuer MAC-Adressen für alle Netzwerkkarten&amp;lt;/code&amp;gt; setzt&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Dafür sorgen, dass die VMs vom router jeweils eigene IP-Adressen zugewiesen bekommen, als wären es Rechner die ganz normal im Intranet hängen: &amp;lt;code&amp;gt;VM anklicken / Ändern / Netzwerk / Adapter 1 / Angeschlossen an: Netzwerkbrücke&amp;lt;/code&amp;gt;. Da die VMs unterschiedliche MACs haben, bekommen sie nun auch individuelle IPs&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Auf den VMs muss jeweils OpenVPN installiert werden. Unter Linux: &amp;lt;code&amp;gt;$ apt-get install openvpn&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Konfiguration&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Jetzt kann man wieder der [http://www.openvpn.net/index.php/open-source/documentation/miscellaneous/static-key-mini-howto.html Anleitung] folgen.&lt;br /&gt;
	&amp;lt;ul&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;Statischen Schlüssel für die Verschlüsselung der Verbindung auf dem OpenVPN-Server erzeugen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ openvpn --genkey --secret static.key&amp;lt;/code&amp;gt;. &amp;lt;br&amp;gt;Dieser Schlüssel muss auch auf das den Klienten kopiert werden.&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Die Konfigurationsdatei &amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt; auf dem Server anlegen:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;&lt;br /&gt;
				dev tun&amp;lt;br&amp;gt;&lt;br /&gt;
    			ifconfig 10.8.0.1 10.8.0.2&amp;lt;br&amp;gt;&lt;br /&gt;
    			secret static.key&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
			Es wird eine Virtuelle Netzwerkkarte [http://backreference.org/2010/03/26/tuntap-interface-tutorial/ tunnel device] angelegt. Die server-IP im VPN endet auf 1, die des Klienten auf 2 und die Datei &amp;lt;i&amp;gt;static.key&amp;lt;/i&amp;gt; wird für die Verschlüsselung benutzt&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Die Konfigurationsdatei &amp;lt;i&amp;gt;client.conf&amp;lt;/i&amp;gt; auf dem Klienten anlegen:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;&lt;br /&gt;
				remote myremote.mydomain&amp;lt;br&amp;gt;&lt;br /&gt;
				dev tun&amp;lt;br&amp;gt;&lt;br /&gt;
				ifconfig 10.8.0.2 10.8.0.1&amp;lt;br&amp;gt;&lt;br /&gt;
				secret static.key&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
			&amp;lt;i&amp;gt;myremote.mydomain&amp;lt;/i&amp;gt; ist durch dei Adresse des servers im Intranet zu ersetzen.	Auch hier wird das virtuelle Tunnelgerät angelegt. Jetzt kommt die Klienten-IP im VPN zuerst, dann die server-IP und die Datei &amp;lt;i&amp;gt;static.key&amp;lt;/i&amp;gt; wird für die Verschlüsselung benutzt&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Starten auf dem server als root:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ sudo openvpn --config server.conf &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Starten auf dem Klienten als root:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ sudo openvpn --config client.conf &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Testlauf&amp;lt;/h3&amp;gt;&lt;br /&gt;
Jetzt sollte der Klient in der Lage sein den serven anzupingen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ ping 10.8.0.1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn&#039;s klappt, kann man sich die routing-Informationen anschauen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ route -n&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Ziel&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Router&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Genmask&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;FLags&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Metric&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Ref&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Use&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Iface&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0.0.0.0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;&amp;lt;i&amp;gt;router-IP im Intranet&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0.0.0.0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;UG&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;eth0&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;10.8.0.1&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0.0.0.0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;255.255.255.255&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;UH&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;thn0&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Die IP 10.8.0.1 ist also dem Tunnelgerät zugeordnet worüber die beiden Rechner nun kommunizieren können.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Klient zu server Verbindung (peer to peer)&amp;lt;/h2&amp;gt;&lt;br /&gt;
Hier geht es um das Verbinden zweier (oder mehrer) Rechner über ein anderes Netz, damit sie aggieren können, als würden sie im selben Netz hängen. Es gibt nur einen server, der im VPN unter 10.8.0.1 zu erreichen ist, mit dem sich einer oder mehrere Klienten verbinden können, die dann höhere IPs im subnetzt 10.8.0.0/24 erhalten. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;klient1.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 client # Diese Datei konfiguriert einen Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 remote openvpn.beispiel.de 1194 # Hostname/externe IP des servers/routers, Port entsprechend anpassen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-client&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/klient1cert.pem&lt;br /&gt;
 key ./Schluessel/klient1key.pem&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Die Konfiguartion des Klienten ist also recht simpel: Adresse &amp;amp;amp; Port des servers werden angegeben, das Protokoll ist UDP, das ganze soll über das tun0-Gerät laufen und es wird das Zertifikat der CA, das eigene Zertifikat und der eigene Schlüssel benötigt. Das war&#039;s.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 server 10.8.0.0 255.255.255.0 # virtuelles VPN-Netzwerk&lt;br /&gt;
 port 1194 # Auf Port 1194 horchen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-server&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte tun0. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/servercert.pem&lt;br /&gt;
 key ./Schluessel/serverkey.pem&lt;br /&gt;
 dh ./dh1024.pem&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 keepalive 20 180 # Alle 20 Sekunden pingen. 3 Minuten time out f&amp;amp;uuml;r Klientenverbindung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Das VPN wird unter 10.8.0.0/24 laufen. Entsprechend ist darauf zu achten, dass dieser IP-Bereich weder im regulären Intranet des Klienten noch des servers vorkommt. Port ist 1194 (ggf. auf der firewall durchleiten nicht vergessen). Es wird UDP verwendet. Wenn in beiden Konfigurationsdateien TCP steht funktioniert es auch. UDP wurde gewählt, da eine der Anleitungen sagt TCP über TCP zu tunneln wäre die schlechteste Idee. Auch hier kommt das &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;-Gerät zum Einsatz und es werden die Zertifikate der CA, des servers sowie der server-Schlüssel als auch die Diffie-Hellmann-Zufallszahlen angegeben. Die Verbindung wird bis zu 3min mit einem keepalive aufrecht erhalten.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun kann es losgehen. Auf dem server:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo openvpn --config server.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf dem Klienten:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo openvpn --config klient1.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Server sollte unter 10.8.0.1 zu erreichen sein&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ ping 10.8.0.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Klient zu server Verbindung mit routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
Diese Konfiguration entspricht im Wesentlichen der letzten. Zusätzlich wird den Klienten allerdings noch erlaubt die Rechner im Intranet des server-Netzes zu sehen. Dies entspricht also dem was i.d.R. passiert wenn man sich mit seinem Firmenrechner über VPN im Intranet der Firma anmeldet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;klient1.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 client # Diese Datei konfiguriert einen Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 remote openvpn.beispiel.de 1194 # Hostname/externe IP des servers/routers, Port entsprechend anpassen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-client&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/klient1cert.pem&lt;br /&gt;
 key ./Schluessel/klient1key.pem&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Man sieht, für die Klienten ändert sich nichts. Es ist die selbige Konfiguration, wie im obigen Beispiel.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 server 10.8.0.0 255.255.255.0 # virtuelles VPN-Netzwerk&lt;br /&gt;
 port 1194 # Auf Port 1194 horchen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-server&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte tun0. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/servercert.pem&lt;br /&gt;
 key ./Schluessel/serverkey.pem&lt;br /&gt;
 dh ./dh1024.pem&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 client-to-client # Daten von VPN-Client zu VPN-Client wird direkt in OpenVPN weitergeleitet&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 push &amp;quot;route 192.168.1.0 255.255.255.0&amp;quot; # Den Client über das Server-LAN informieren (wichtig!)&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # float # Nur wenn Clients ihre IPs während der Verbindung wechseln&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 keepalive 20 180 # Alle 20 Sekunden pingen. 3 Minuten time out f&amp;amp;uuml;r Klientenverbindung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Beim server ändert sich also auch recht wenig. Neu ist der Befehl &#039;&#039;client-to-client&#039;&#039;, der ermöglicht dass die verschiedenen Klienten sich auch untereinander unterhalten können - dies hätte man auch schon bei der obigen Konfiguration machen könenn. Wichtiger noch ist der Befehl &#039;&#039;push&#039;&#039;. Erst dieser informiert den Klienten darüber, dass hinter dem VPN-server noch ein Intranet liegt mit dem man kommunizieren kann. In diesem Beispiel wird angenommen, das Intranet des servers sei 192.168.1.0/24. Auch hier ist wieder zu beachten, dass dieses Intranet nicht dem eines Klienten entsprechen darf, denn sonst kommt es zu routing konflikten.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Routing-Problematik&amp;lt;/h3&amp;gt;&lt;br /&gt;
Leider ist es mit diesem Befehl allein noch nicht getan. Der server muss außerdem in die Lage versetzt werden, die Daten aus dem Intranet ins VPN zu routen und umgekehrt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unter LINUX &amp;amp; Windows geht das [http://wiki.openvpn.eu/index.php/Config_ServerNET_Routing#Forwarding_am_Server_aktivieren folgendermaßen]. Unter Mac OS X sollte man sich ggf. eine plist schreiben, damit dieser Befehl beim Start ausgeführt wird:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo sysctl -w net.inet.ip.forwarding=1&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit ist man aber leider immer noch nicht durch. Jetzt wissen die Klienten also über das Intranet Bescheid und der server routet auch alles brav durch, doch woher wissen die Intranet-Rechner, wie sie mit den VPN-Klienten kommunizieren?  Bisher gar nicht.&amp;lt;br&amp;gt;&lt;br /&gt;
Beispielsweise will der Rechner 192.168.1.5 aus dem Intranet mit einem VPN-Klienten 10.8.0.6 reden. Er wird seinen router fragen, wo er diesen Rechner findet. Und wenn der router nicht gleichzeitig auch der VPN-server ist, wird dieser Antworten: kenne ich nicht. Es gibt also zwei Möglichkeiten. Entweder muss der Router auch der VPN-server sein, oder man muss auf jedem Rechner des Intranets eine Route einrichten die sagt: wenn Du einen Rechner aus dem Netz 10.8.0.0/24 erreichen möchtest, frag bitte nicht deinen Standardrouter sondern den VPN-server, der Hilft dir weiter.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo route add -net 10.8.0.0 -netmask 255.255.255.0 -gateway 192.168.1.2&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In diesem Beispiel wird angenommen, dass die Intranet-Adresse des VPN-servers 192.168.1.2 ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Klient zu server Verbindung mit bridging&amp;lt;/h2&amp;gt;&lt;br /&gt;
Im [[Mac_nix_basteln:OpenVPN#Klient_zu_server_Verbindung_mit_routing|letzten Beispiel]] hat man also verschiedene Subnetze (das Intranet des VPN servers und das VPN selbst) miteinander Verbunden. Beim bridging aggiert der VPN-server als Brücke, was bedeutet, dass die VPN-Klienten direkt in das Intranet des VPN-servers gehängt werden. Der server wird damit also quasi zum [http://de.wikipedia.org/wiki/Switch_%28Computertechnik%29 switch].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;klient1.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 client # Diese Datei konfiguriert einen Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 remote openvpn.beispiel.de 1194 # Hostname/externe IP des servers/routers, Port entsprechend anpassen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-client&lt;br /&gt;
 dev tap0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &amp;lt;i&amp;gt;tap0&amp;lt;/i&amp;gt;&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/klient1cert.pem&lt;br /&gt;
 key ./Schluessel/klient1key.pem&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Diesmal hat sich klienten-seitig nur die &#039;&#039;tun&#039;&#039;-Schnittstelle nach &#039;&#039;tap&#039;&#039; geändert. Es gehen also nicht mehr IP-Pakete über das VPN, sondern, eine Ebene tiefer, Ethernetpakete.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 server-bridge 192.168.1.2 255.255.255.0 192.168.1.220 192.168.1.230 # Server IP, Subnetzmaske, Start &amp;amp; End IPs für die VPN-Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 port 1194 # Auf Port 1194 horchen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-server&lt;br /&gt;
 dev tap0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &#039;&#039;tap0&#039;&#039;&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/servercert.pem&lt;br /&gt;
 key ./Schluessel/serverkey.pem&lt;br /&gt;
 dh ./dh1024.pem&lt;br /&gt;
 &amp;lt;br&amp;gt; &lt;br /&gt;
 keepalive 20 180 # Alle 20 Sekunden pingen. 3 Minuten time out f&amp;amp;uuml;r Klientenverbindung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Der Server soll also als Brücke aggieren, hat die IP 192.168.1.2 im Subnetz 192.168.1.2/24 und soll an die Klienten IPs im Bereich zwischen 192.168.1.220 und 192.168.1.230 verteilen. Diese Klienten können dann aggieren, als würden sie im selben Intranet mit dem VPN-server hängen.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Verbinden mehrerer Netze&amp;lt;/h2&amp;gt;&lt;br /&gt;
Dies ist ein Beispiel für das Verbinden verschiedener Netze (z.B. verschiedene Firmenstandorte oder befreundete Heimnetzwerke) durch routing. Es entspricht also dem Beispiel [[Mac_nix_basteln:OpenVPN#Klient_zu_server_Verbindung_mit_routing|Klient zu server Verbindung mit routing]], außer dass auf Klienten-Seite nicht nur ein Rechner, sondern ein ganzes Netzwerk hängt.&lt;br /&gt;
&lt;br /&gt;
 ---------------------------                          --------------         -------------&lt;br /&gt;
 |   Server 1              |                          | Rechner 1.1|         |  R 1.N    |&lt;br /&gt;
 |OVPN-Server              | Netzwerk 1: Hamburg      |            |         |           |&lt;br /&gt;
 |eth0: openvpn.beispiel.de|--------------------------|192.168.0.2 |-- ... --|192.168.0.n|&lt;br /&gt;
 |eth1: 192.168.0.1        | 192.168.0.0/24           |            |         |           |&lt;br /&gt;
 |tun0: 10.0.0.1           |                          |            |         |           |&lt;br /&gt;
 ---------------------------                          --------------         -------------&lt;br /&gt;
           | | Internet&lt;br /&gt;
           | |&lt;br /&gt;
           | | &lt;br /&gt;
           | | Netzwerk 3: OpenVPN&lt;br /&gt;
           | | 10.0.0.0/24&lt;br /&gt;
           | |&lt;br /&gt;
           | |&lt;br /&gt;
 --------------------------                          --------------         -------------&lt;br /&gt;
 |   Server 2             |                          | Rechner 2.1|         |  R 2.N    |&lt;br /&gt;
 |OVPN-Client             | Netzwerk 2: Dortmund     |            |         |           |&lt;br /&gt;
 |eth0: IP von Provider   |--------------------------|192.168.1.2 |-- ... --|192.168.1.n|&lt;br /&gt;
 |eth1: 192.168.1.1       | 192.168.1.0/24           |            |         |           |&lt;br /&gt;
 |tun0: 10.0.0.6          |                          |            |         |           |&lt;br /&gt;
 --------------------------                          --------------         -------------&lt;br /&gt;
&lt;br /&gt;
Dementsprechend ist die Klienten-Konfiguration auch die selbe:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;klient1.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 client # Diese Datei konfiguriert einen Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 remote openvpn.beispiel.de 1194 # Hostname/externe IP des servers/routers, Port entsprechend anpassen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-client&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/klient1cert.pem&lt;br /&gt;
 key ./Schluessel/klient1key.pem&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 server 10.0.0.0 255.255.255.0 # virtuelles VPN-Netzwerk&lt;br /&gt;
 port 1194 # Auf Port 1194 horchen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-server&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte tun0. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/servercert.pem&lt;br /&gt;
 key ./Schluessel/serverkey.pem&lt;br /&gt;
 dh ./dh1024.pem&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 client-config-dir ./ccd&lt;br /&gt;
 route 192.168.1.0 255.255.255.0         # Klientennetz + Maske&lt;br /&gt;
 push &amp;quot;route 192.168.0.0 255.255.255.0&amp;quot; # Den Client über das Server-LAN informieren&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # float # Nur wenn Clients ihre IPs während der Verbindung wechseln&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 keepalive 20 180 # Alle 20 Sekunden pingen. 3 Minuten time out f&amp;amp;uuml;r Klientenverbindung&lt;br /&gt;
&lt;br /&gt;
Diesmal wird noch eine weitere Datei im Klienten-Konfigurations-Verzeichnis (CCD) benötigt. Der Pfad der Datei ist in der &#039;&#039;server.conf&#039;&#039; angegeben &#039;&#039;client-config-dir ./ccd&#039;&#039;. Der Dateiname des jeweiligen Klienten muss dem &#039;&#039;common name&#039;&#039; im Klientenzertifikat &#039;&#039;klient1cert.pem&#039;&#039; entsprechen. Ist der &#039;&#039;common name&#039;&#039; dort beispielsweise &#039;&#039;dortmundnetz&#039;&#039;, muss die Datei &#039;&#039;./ccd/dortmundnetz&#039;&#039; heissen. Der Inhalt:&lt;br /&gt;
 iroute 192.168.1.0 255.255.255.0  # Klientennetz + Maske&lt;br /&gt;
&lt;br /&gt;
Auch hier ergibt sich wieder die [[Mac_nix_basteln:OpenVPNt#Routing-Problematik|routing-Problematik]] - und diesmal auf beiden Seiten. Sowohl der server als auch der Klient müssen in diesem Fall als Router in ihrem jeweiligen Netzwerk aggieren, um die beiden Netzwerke über VPN zusammen zu bringen. Beide müssen also wie oben beschrieben als router konfiuguriert werden.&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenVPN&amp;diff=5478</id>
		<title>Mac nix basteln:OpenVPN</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenVPN&amp;diff=5478"/>
		<updated>2012-04-29T14:00:37Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;Einleitung&amp;lt;/h2&amp;gt;&lt;br /&gt;
Um diesen Artikel einigermassen sinnvoll nutzen zu können, sei empfohlen vorher die [[Mac_nix_basteln:Krypto_Grundlagen|Krypto Grundlagen]] gelesen zu haben. Darüber hinaus wird es zum Anwenden der aufgelisteten Beispiele erforderlich werden [[Mac_nix_basteln:OpenSSL|Schlüssel per OpenSSL]] erzeugt zu haben (mit Außnahme des Testbeispiels).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Bei VPN geht es grundsätzlich darum, eine verschlüsselte Verbindung zwischen Rechnern über ein Drittnetz aufzubauen, damit sie aggieren können, als hingen sie im selben Netz. VPN ist jedoch nicht automatisch gleich VPN. Es gibt viele Möglichkeiten ein virtuelles privates Netzwerk aufzusetzen:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Verbinden zweier Rechner über ein anderes Netz, damit sie aggieren können, als würden sie im selben Netz hängen. (Wenn es sich lediglich um zwei Rechner handelt, gibt es sicherlich auch einfacherere Wege zum Erfolg)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Einzelne Rechner (Klienten) sollen sich über ein anderes Netz (z.B. dem Internet) mit einem privaten Netz verbinden (z.B. Firmennetz)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Zusätzlich zum Letzteren kann man auch den Internetverkehr der Klienten über das private Netz wieder ins Internet routen. Das kann sinnvoll sein, wenn man sich an einem Ort mit Internetsperren befindet&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Verbinden zweier Netze über ein drittes, damit die beiden so aggieren können, als wären sie eins. (Z.B. zum Verbinden mehrerer Firmenstandorte)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die hier aufgeführten Beispiele sind aus verschiedenen Quellen zusammengetragen. Um einen guten Durchblick zum bekommen, lohnt es sich sie alle zu studieren:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://openvpn.net/index.php/open-source/documentation/howto.html OpenVPN.net]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://wiki.openvpn.eu/ OpenVPN Wiki]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://www.online-tutorials.net/security/openvpn-tutorial/tutorials-t-69-209.html OpenVPN Tutorial]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://wiki.freifunk.net/OpenVPN_Howto OpenVPN Howto]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Die Installation von OpenVPN ist die selbe, ob man Klient oder server ist. Gesteuert wird das Verhalten des jeweiligen Rechners über Konfigurationsdateien. Genau diese werden hier für verschiedene Beispielkonfigurationen gezeigt und erläutert. Sie sind der Einfachheit halber auf das lauffähige Minimum reduziert. Es gibt durchaus noch weitere Einstellungsmöglichkeiten zum Anpassen individueller Bedürfnisse. Ein guten Ausgangspunkt für individuelle Anpassungen findet man am [http://openvpn.net/index.php/open-source/documentation/howto.html#examples Ende der OpenVPN Hilfeseiten]. Die meisten (alle?) Parameter sind dort enthalten und man kann sie nach Bedarf ein und auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Neben den Konfigurationsdateien braucht man zum Betrieb ggf. noch die bereits genannten [[Mac_nix_basteln:OpenSSL|Schlüssel]].&lt;br /&gt;
&lt;br /&gt;
Es wird in den Beispielen davon ausgegangen, dass OpenVPN auf dem Port 1194 läuft, diese ist ggf. auf dem Router zum OpenVPN-server durchzuleiten.&lt;br /&gt;
&lt;br /&gt;
Die VPN-Verbindung wird über eine virtuelle Netzverkkarte &amp;lt;i&amp;gt;getunnelt&amp;lt;/i&amp;gt;. Dieses virtuelle Gerät heisst entweder tun oder tap. Während ein tun-Gerät auf IP-Ebene läuft, läuft das tap-Gerät eine Ebene darunter auf ethernet-Ebene. Möglicher Weise müssen diese Geräte bei OS X nachinstalliert werden. Dafür gibt es [http://tuntaposx.sourceforge.net/ TunTap] (Möglicher Weise deshalb, weil TunTap auf meinen Testrechnern installiert ist und ich nicht weiss, ob es auch ohne funktionert. Möglicherweise stellt auch OpenVPN selbst tun- &amp;amp;amp; tap-Geräte zur Verfügung).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;h2&amp;gt;Testkonfiguration&amp;lt;/h2&amp;gt;&lt;br /&gt;
Dieser Absatz stellt den denkbar einfachsten Aufbau dar, ist aber nicht wirklich praxistauglich. Der Absatz kann übersprungen werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Installation&amp;lt;/h3&amp;gt;&lt;br /&gt;
Zunächst wird zum Test eine Verbindung zwischen nur zwei Rechnern aufgebaut. Da diese [http://www.openvpn.net/index.php/open-source/documentation/miscellaneous/static-key-mini-howto.html Anleitung] für Anfänger nicht gerade ausführlich ist und für Fortgeschrittene belanglos, wird sie ein wenig weiter aufgeschlüsselt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Im ersten Schritt braucht man zwei Rechner zum Testen. Dabei ist es auch ausreichend wenn man sich beispielsweise zwei [http://de.wikipedia.org/wiki/Virtuelle_Maschine Virtuelle Maschinen] mit Linux aufsetzt. Also...&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[https://www.virtualbox.org/ VirtualBox] installieren und zwei Linuxmaschinen der Wahl aufsetzen. Dabei kann die zweite VM eine Kopie der ersten sein - geht schneller (&amp;lt;code&amp;gt;rechtsklick auf die VM / Klonen&amp;lt;/code&amp;gt;). Wichtig beim Anlegen des Klons ist, darauf zu achten dass man den Haken bei &amp;lt;code&amp;gt;Zuweisen neuer MAC-Adressen für alle Netzwerkkarten&amp;lt;/code&amp;gt; setzt&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Dafür sorgen, dass die VMs vom router jeweils eigene IP-Adressen zugewiesen bekommen, als wären es Rechner die ganz normal im Intranet hängen: &amp;lt;code&amp;gt;VM anklicken / Ändern / Netzwerk / Adapter 1 / Angeschlossen an: Netzwerkbrücke&amp;lt;/code&amp;gt;. Da die VMs unterschiedliche MACs haben, bekommen sie nun auch individuelle IPs&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Auf den VMs muss jeweils OpenVPN installiert werden. Unter Linux: &amp;lt;code&amp;gt;$ apt-get install openvpn&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Konfiguration&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Jetzt kann man wieder der [http://www.openvpn.net/index.php/open-source/documentation/miscellaneous/static-key-mini-howto.html Anleitung] folgen.&lt;br /&gt;
	&amp;lt;ul&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;Statischen Schlüssel für die Verschlüsselung der Verbindung auf dem OpenVPN-Server erzeugen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ openvpn --genkey --secret static.key&amp;lt;/code&amp;gt;. &amp;lt;br&amp;gt;Dieser Schlüssel muss auch auf das den Klienten kopiert werden.&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Die Konfigurationsdatei &amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt; auf dem Server anlegen:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;&lt;br /&gt;
				dev tun&amp;lt;br&amp;gt;&lt;br /&gt;
    			ifconfig 10.8.0.1 10.8.0.2&amp;lt;br&amp;gt;&lt;br /&gt;
    			secret static.key&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
			Es wird eine Virtuelle Netzwerkkarte [http://backreference.org/2010/03/26/tuntap-interface-tutorial/ tunnel device] angelegt. Die server-IP im VPN endet auf 1, die des Klienten auf 2 und die Datei &amp;lt;i&amp;gt;static.key&amp;lt;/i&amp;gt; wird für die Verschlüsselung benutzt&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Die Konfigurationsdatei &amp;lt;i&amp;gt;client.conf&amp;lt;/i&amp;gt; auf dem Klienten anlegen:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;&lt;br /&gt;
				remote myremote.mydomain&amp;lt;br&amp;gt;&lt;br /&gt;
				dev tun&amp;lt;br&amp;gt;&lt;br /&gt;
				ifconfig 10.8.0.2 10.8.0.1&amp;lt;br&amp;gt;&lt;br /&gt;
				secret static.key&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
			&amp;lt;i&amp;gt;myremote.mydomain&amp;lt;/i&amp;gt; ist durch dei Adresse des servers im Intranet zu ersetzen.	Auch hier wird das virtuelle Tunnelgerät angelegt. Jetzt kommt die Klienten-IP im VPN zuerst, dann die server-IP und die Datei &amp;lt;i&amp;gt;static.key&amp;lt;/i&amp;gt; wird für die Verschlüsselung benutzt&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Starten auf dem server als root:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ sudo openvpn --config server.conf &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Starten auf dem Klienten als root:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ sudo openvpn --config client.conf &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Testlauf&amp;lt;/h3&amp;gt;&lt;br /&gt;
Jetzt sollte der Klient in der Lage sein den serven anzupingen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ ping 10.8.0.1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn&#039;s klappt, kann man sich die routing-Informationen anschauen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ route -n&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Ziel&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Router&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Genmask&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;FLags&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Metric&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Ref&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Use&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Iface&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0.0.0.0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;&amp;lt;i&amp;gt;router-IP im Intranet&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0.0.0.0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;UG&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;eth0&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;10.8.0.1&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0.0.0.0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;255.255.255.255&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;UH&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;thn0&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Die IP 10.8.0.1 ist also dem Tunnelgerät zugeordnet worüber die beiden Rechner nun kommunizieren können.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Klient zu server Verbindung (peer to peer)&amp;lt;/h2&amp;gt;&lt;br /&gt;
Hier geht es um das Verbinden zweier (oder mehrer) Rechner über ein anderes Netz, damit sie aggieren können, als würden sie im selben Netz hängen. Es gibt nur einen server, der im VPN unter 10.8.0.1 zu erreichen ist, mit dem sich einer oder mehrere Klienten verbinden können, die dann höhere IPs im subnetzt 10.8.0.0/24 erhalten. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;klient1.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 client # Diese Datei konfiguriert einen Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 remote openvpn.beispiel.de 1194 # Hostname/externe IP des servers/routers, Port entsprechend anpassen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-client&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/klient1cert.pem&lt;br /&gt;
 key ./Schluessel/klient1key.pem&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Die Konfiguartion des Klienten ist also recht simpel: Adresse &amp;amp;amp; Port des servers werden angegeben, das Protokoll ist UDP, das ganze soll über das tun0-Gerät laufen und es wird das Zertifikat der CA, das eigene Zertifikat und der eigene Schlüssel benötigt. Das war&#039;s.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 server 10.8.0.0 255.255.255.0 # virtuelles VPN-Netzwerk&lt;br /&gt;
 port 1194 # Auf Port 1194 horchen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-server&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte tun0. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/servercert.pem&lt;br /&gt;
 key ./Schluessel/serverkey.pem&lt;br /&gt;
 dh ./dh1024.pem&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 keepalive 20 180 # Alle 20 Sekunden pingen. 3 Minuten time out f&amp;amp;uuml;r Klientenverbindung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Das VPN wird unter 10.8.0.0/24 laufen. Entsprechend ist darauf zu achten, dass dieser IP-Bereich weder im regulären Intranet des Klienten noch des servers vorkommt. Port ist 1194 (ggf. auf der firewall durchleiten nicht vergessen). Es wird UDP verwendet. Wenn in beiden Konfigurationsdateien TCP steht funktioniert es auch. UDP wurde gewählt, da eine der Anleitungen sagt TCP über TCP zu tunneln wäre die schlechteste Idee. Auch hier kommt das &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;-Gerät zum Einsatz und es werden die Zertifikate der CA, des servers sowie der server-Schlüssel als auch die Diffie-Hellmann-Zufallszahlen angegeben. Die Verbindung wird bis zu 3min mit einem keepalive aufrecht erhalten.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun kann es losgehen. Auf dem server:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo openvpn --config server.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf dem Klienten:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo openvpn --config klient1.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Server sollte unter 10.8.0.1 zu erreichen sein&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ ping 10.8.0.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Klient zu server Verbindung mit routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
Diese Konfiguration entspricht im Wesentlichen der letzten. Zusätzlich wird den Klienten allerdings noch erlaubt die Rechner im Intranet des server-Netzes zu sehen. Dies entspricht also dem was i.d.R. passiert wenn man sich mit seinem Firmenrechner über VPN im Intranet der Firma anmeldet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;klient1.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 client # Diese Datei konfiguriert einen Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 remote openvpn.beispiel.de 1194 # Hostname/externe IP des servers/routers, Port entsprechend anpassen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-client&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/klient1cert.pem&lt;br /&gt;
 key ./Schluessel/klient1key.pem&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Man sieht, für die Klienten ändert sich nichts. Es ist die selbige Konfiguration, wie im obigen Beispiel.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 server 10.8.0.0 255.255.255.0 # virtuelles VPN-Netzwerk&lt;br /&gt;
 port 1194 # Auf Port 1194 horchen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-server&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte tun0. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/servercert.pem&lt;br /&gt;
 key ./Schluessel/serverkey.pem&lt;br /&gt;
 dh ./dh1024.pem&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 client-to-client # Daten von VPN-Client zu VPN-Client wird direkt in OpenVPN weitergeleitet&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 push &amp;quot;route 192.168.1.0 255.255.255.0&amp;quot; # Den Client über das Server-LAN informieren (wichtig!)&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # float # Nur wenn Clients ihre IPs während der Verbindung wechseln&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 keepalive 20 180 # Alle 20 Sekunden pingen. 3 Minuten time out f&amp;amp;uuml;r Klientenverbindung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Beim server ändert sich also auch recht wenig. Neu ist der Befehl &#039;&#039;client-to-client&#039;&#039;, der ermöglicht dass die verschiedenen Klienten sich auch untereinander unterhalten können - dies hätte man auch schon bei der obigen Konfiguration machen könenn. Wichtiger noch ist der Befehl &#039;&#039;push&#039;&#039;. Erst dieser informiert den Klienten darüber, dass hinter dem VPN-server noch ein Intranet liegt mit dem man kommunizieren kann. In diesem Beispiel wird angenommen, das Intranet des servers sei 192.168.1.0/24. Auch hier ist wieder zu beachten, dass dieses Intranet nicht dem eines Klienten entsprechen darf, denn sonst kommt es zu routing konflikten.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Routing-Problematik&amp;lt;/h3&amp;gt;&lt;br /&gt;
Leider ist es mit diesem Befehl allein noch nicht getan. Der server muss außerdem in die Lage versetzt werden, die Daten aus dem Intranet ins VPN zu routen und umgekehrt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unter LINUX &amp;amp; Windows geht das [http://wiki.openvpn.eu/index.php/Config_ServerNET_Routing#Forwarding_am_Server_aktivieren folgendermaßen]. Unter Mac OS X sollte man sich ggf. eine plist schreiben, damit dieser Befehl beim Start ausgeführt wird:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo sysctl -w net.inet.ip.forwarding=1&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit ist man aber leider immer noch nicht durch. Jetzt wissen die Klienten also über das Intranet Bescheid und der server routet auch alles brav durch, doch woher wissen die Intranet-Rechner, wie sie mit den VPN-Klienten kommunizieren?  Bisher gar nicht.&amp;lt;br&amp;gt;&lt;br /&gt;
Beispielsweise will der Rechner 192.168.1.5 aus dem Intranet mit einem VPN-Klienten 10.8.0.6 reden. Er wird seinen router fragen, wo er diesen Rechner findet. Und wenn der router nicht gleichzeitig auch der VPN-server ist, wird dieser Antworten: kenne ich nicht. Es gibt also zwei Möglichkeiten. Entweder muss der Router auch der VPN-server sein, oder man muss auf jedem Rechner des Intranets eine Route einrichten die sagt: wenn Du einen Rechner aus dem Netz 10.8.0.0/24 erreichen möchtest, frag bitte nicht deinen Standardrouter sondern den VPN-server, der Hilft dir weiter.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo route add -net 10.8.0.0 -netmask 255.255.255.0 -gateway 192.168.1.2&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In diesem Beispiel wird angenommen, dass die Intranet-Adresse des VPN-servers 192.168.1.2 ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Klient zu server Verbindung mit bridging&amp;lt;/h2&amp;gt;&lt;br /&gt;
Im [[Mac_nix_basteln:OpenVPN#Klient_zu_server_Verbindung_mit_routing|letzten Beispiel]] hat man also verschiedene Subnetze (das Intranet des VPN servers und das VPN selbst) miteinander Verbunden. Beim bridging aggiert der VPN-server als Brücke, was bedeutet, dass die VPN-Klienten direkt in das Intranet des VPN-servers gehängt werden. Der server wird damit also quasi zum [http://de.wikipedia.org/wiki/Switch_%28Computertechnik%29 switch].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;klient1.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 client # Diese Datei konfiguriert einen Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 remote openvpn.beispiel.de 1194 # Hostname/externe IP des servers/routers, Port entsprechend anpassen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-client&lt;br /&gt;
 dev tap0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &amp;lt;i&amp;gt;tap0&amp;lt;/i&amp;gt;&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/klient1cert.pem&lt;br /&gt;
 key ./Schluessel/klient1key.pem&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Diesmal hat sich klienten-seitig nur die &#039;&#039;tun&#039;&#039;-Schnittstelle nach &#039;&#039;tap&#039;&#039; geändert. Es gehen also nicht mehr IP-Pakete über das VPN, sondern, eine Ebene tiefer, Ethernetpakete.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 server-bridge 192.168.1.2 255.255.255.0 192.168.1.220 192.168.1.230 # Server IP, Subnetzmaske, Start &amp;amp; End IPs für die VPN-Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 port 1194 # Auf Port 1194 horchen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-server&lt;br /&gt;
 dev tap0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &#039;&#039;tap0&#039;&#039;&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/servercert.pem&lt;br /&gt;
 key ./Schluessel/serverkey.pem&lt;br /&gt;
 dh ./dh1024.pem&lt;br /&gt;
 &amp;lt;br&amp;gt; &lt;br /&gt;
 keepalive 20 180 # Alle 20 Sekunden pingen. 3 Minuten time out f&amp;amp;uuml;r Klientenverbindung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Der Server soll also als Brücke aggieren, hat die IP 192.168.1.2 im Subnetz 192.168.1.2/24 und soll an die Klienten IPs im Bereich zwischen 192.168.1.220 und 192.168.1.230 verteilen. Diese Klienten können dann aggieren, als würden sie im selben Intranet mit dem VPN-server hängen.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Verbinden mehrerer Netze&amp;lt;/h2&amp;gt;&lt;br /&gt;
Dies ist ein Beispiel für das Verbinden verschiedener Netze (z.B. verschiedene Firmenstandorte oder befreundete Heimnetzwerke) durch routing. Es entspricht also dem Beispiel [[Mac_nix_basteln:OpenVPN#Klient_zu_server_Verbindung_mit_routing|Klient zu server Verbindung mit routing]], außer dass auf Klienten-Seite nicht nur ein Rechner, sondern ein ganzes Netzwerk hängt.&lt;br /&gt;
&lt;br /&gt;
 ---------------------------                          --------------         -------------&lt;br /&gt;
 |   Server 1              |                          | Rechner 1.1|         |  R 1.N    |&lt;br /&gt;
 |OVPN-Server              | Netzwerk 1: Hamburg      |            |         |           |&lt;br /&gt;
 |eth0: openvpn.beispiel.de|--------------------------|192.168.0.2 |-- ... --|192.168.0.n|&lt;br /&gt;
 |eth1: 192.168.0.1        | 192.168.0.0/24           |            |         |           |&lt;br /&gt;
 |tun0: 10.0.0.1           |                          |            |         |           |&lt;br /&gt;
 ---------------------------                          --------------         -------------&lt;br /&gt;
           | | Internet&lt;br /&gt;
           | |&lt;br /&gt;
           | | &lt;br /&gt;
           | | Netzwerk 3: OpenVPN&lt;br /&gt;
           | | 10.0.0.0/24&lt;br /&gt;
           | |&lt;br /&gt;
           | |&lt;br /&gt;
 --------------------------                          --------------         -------------&lt;br /&gt;
 |   Server 2             |                          | Rechner 2.1|         |  R 2.N    |&lt;br /&gt;
 |OVPN-Client             | Netzwerk 2: Dortmund     |            |         |           |&lt;br /&gt;
 |eth0: IP von Provider   |--------------------------|192.168.1.2 |-- ... --|192.168.1.n|&lt;br /&gt;
 |eth1: 192.168.1.1       | 192.168.1.0/24           |            |         |           |&lt;br /&gt;
 |tun0: 10.0.0.6          |                          |            |         |           |&lt;br /&gt;
 --------------------------                          --------------         -------------&lt;br /&gt;
&lt;br /&gt;
Dementsprechend ist die Klienten-Konfiguration auch die selbe:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;klient1.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 client # Diese Datei konfiguriert einen Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 remote openvpn.beispiel.de 1194 # Hostname/externe IP des servers/routers, Port entsprechend anpassen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-client&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/klient1cert.pem&lt;br /&gt;
 key ./Schluessel/klient1key.pem&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenVPN&amp;diff=5476</id>
		<title>Mac nix basteln:OpenVPN</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenVPN&amp;diff=5476"/>
		<updated>2012-04-29T13:03:03Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;Einleitung&amp;lt;/h2&amp;gt;&lt;br /&gt;
Um diesen Artikel einigermassen sinnvoll nutzen zu können, sei empfohlen vorher die [[Mac_nix_basteln:Krypto_Grundlagen|Krypto Grundlagen]] gelesen zu haben. Darüber hinaus wird es zum Anwenden der aufgelisteten Beispiele erforderlich werden [[Mac_nix_basteln:OpenSSL|Schlüssel per OpenSSL]] erzeugt zu haben (mit Außnahme des Testbeispiels).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Bei VPN geht es grundsätzlich darum, eine verschlüsselte Verbindung zwischen Rechnern über ein Drittnetz aufzubauen, damit sie aggieren können, als hingen sie im selben Netz. VPN ist jedoch nicht automatisch gleich VPN. Es gibt viele Möglichkeiten ein virtuelles privates Netzwerk aufzusetzen:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Verbinden zweier Rechner über ein anderes Netz, damit sie aggieren können, als würden sie im selben Netz hängen. (Wenn es sich lediglich um zwei Rechner handelt, gibt es sicherlich auch einfacherere Wege zum Erfolg)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Einzelne Rechner (Klienten) sollen sich über ein anderes Netz (z.B. dem Internet) mit einem privaten Netz verbinden (z.B. Firmennetz)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Zusätzlich zum Letzteren kann man auch den Internetverkehr der Klienten über das private Netz wieder ins Internet routen. Das kann sinnvoll sein, wenn man sich an einem Ort mit Internetsperren befindet&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Verbinden zweier Netze über ein drittes, damit die beiden so aggieren können, als wären sie eins. (Z.B. zum Verbinden mehrerer Firmenstandorte)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die hier aufgeführten Beispiele sind aus verschiedenen Quellen zusammengetragen. Um einen guten Durchblick zum bekommen, lohnt es sich sie alle zu studieren:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://openvpn.net/index.php/open-source/documentation/howto.html OpenVPN.net]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://wiki.openvpn.eu/ OpenVPN Wiki]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://www.online-tutorials.net/security/openvpn-tutorial/tutorials-t-69-209.html OpenVPN Tutorial]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://wiki.freifunk.net/OpenVPN_Howto OpenVPN Howto]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Die Installation von OpenVPN ist die selbe, ob man Klient oder server ist. Gesteuert wird das Verhalten des jeweiligen Rechners über Konfigurationsdateien. Genau diese werden hier für verschiedene Beispielkonfigurationen gezeigt und erläutert. Sie sind der Einfachheit halber auf das lauffähige Minimum reduziert. Es gibt durchaus noch weitere Einstellungsmöglichkeiten zum Anpassen individueller Bedürfnisse. Ein guten Ausgangspunkt für individuelle Anpassungen findet man am [http://openvpn.net/index.php/open-source/documentation/howto.html#examples Ende der OpenVPN Hilfeseiten]. Die meisten (alle?) Parameter sind dort enthalten und man kann sie nach Bedarf ein und auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Neben den Konfigurationsdateien braucht man zum Betrieb ggf. noch die bereits genannten [[Mac_nix_basteln:OpenSSL|Schlüssel]].&lt;br /&gt;
&lt;br /&gt;
Es wird in den Beispielen davon ausgegangen, dass OpenVPN auf dem Port 1194 läuft, diese ist ggf. auf dem Router zum OpenVPN-server durchzuleiten.&lt;br /&gt;
&lt;br /&gt;
Die VPN-Verbindung wird über eine virtuelle Netzverkkarte &amp;lt;i&amp;gt;getunnelt&amp;lt;/i&amp;gt;. Dieses virtuelle Gerät heisst entweder tun oder tap. Während ein tun-Gerät auf IP-Ebene läuft, läuft das tap-Gerät eine Ebene darunter auf ethernet-Ebene. Möglicher Weise müssen diese Geräte bei OS X nachinstalliert werden. Dafür gibt es [http://tuntaposx.sourceforge.net/ TunTap] (Möglicher Weise deshalb, weil TunTap auf meinen Testrechnern installiert ist und ich nicht weiss, ob es auch ohne funktionert. Möglicherweise stellt auch OpenVPN selbst tun- &amp;amp;amp; tap-Geräte zur Verfügung).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;h2&amp;gt;Testkonfiguration&amp;lt;/h2&amp;gt;&lt;br /&gt;
Dieser Absatz stellt den denkbar einfachsten Aufbau dar, ist aber nicht wirklich praxistauglich. Der Absatz kann übersprungen werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Installation&amp;lt;/h3&amp;gt;&lt;br /&gt;
Zunächst wird zum Test eine Verbindung zwischen nur zwei Rechnern aufgebaut. Da diese [http://www.openvpn.net/index.php/open-source/documentation/miscellaneous/static-key-mini-howto.html Anleitung] für Anfänger nicht gerade ausführlich ist und für Fortgeschrittene belanglos, wird sie ein wenig weiter aufgeschlüsselt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Im ersten Schritt braucht man zwei Rechner zum Testen. Dabei ist es auch ausreichend wenn man sich beispielsweise zwei [http://de.wikipedia.org/wiki/Virtuelle_Maschine Virtuelle Maschinen] mit Linux aufsetzt. Also...&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[https://www.virtualbox.org/ VirtualBox] installieren und zwei Linuxmaschinen der Wahl aufsetzen. Dabei kann die zweite VM eine Kopie der ersten sein - geht schneller (&amp;lt;code&amp;gt;rechtsklick auf die VM / Klonen&amp;lt;/code&amp;gt;). Wichtig beim Anlegen des Klons ist, darauf zu achten dass man den Haken bei &amp;lt;code&amp;gt;Zuweisen neuer MAC-Adressen für alle Netzwerkkarten&amp;lt;/code&amp;gt; setzt&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Dafür sorgen, dass die VMs vom router jeweils eigene IP-Adressen zugewiesen bekommen, als wären es Rechner die ganz normal im Intranet hängen: &amp;lt;code&amp;gt;VM anklicken / Ändern / Netzwerk / Adapter 1 / Angeschlossen an: Netzwerkbrücke&amp;lt;/code&amp;gt;. Da die VMs unterschiedliche MACs haben, bekommen sie nun auch individuelle IPs&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Auf den VMs muss jeweils OpenVPN installiert werden. Unter Linux: &amp;lt;code&amp;gt;$ apt-get install openvpn&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Konfiguration&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Jetzt kann man wieder der [http://www.openvpn.net/index.php/open-source/documentation/miscellaneous/static-key-mini-howto.html Anleitung] folgen.&lt;br /&gt;
	&amp;lt;ul&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;Statischen Schlüssel für die Verschlüsselung der Verbindung auf dem OpenVPN-Server erzeugen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ openvpn --genkey --secret static.key&amp;lt;/code&amp;gt;. &amp;lt;br&amp;gt;Dieser Schlüssel muss auch auf das den Klienten kopiert werden.&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Die Konfigurationsdatei &amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt; auf dem Server anlegen:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;&lt;br /&gt;
				dev tun&amp;lt;br&amp;gt;&lt;br /&gt;
    			ifconfig 10.8.0.1 10.8.0.2&amp;lt;br&amp;gt;&lt;br /&gt;
    			secret static.key&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
			Es wird eine Virtuelle Netzwerkkarte [http://backreference.org/2010/03/26/tuntap-interface-tutorial/ tunnel device] angelegt. Die server-IP im VPN endet auf 1, die des Klienten auf 2 und die Datei &amp;lt;i&amp;gt;static.key&amp;lt;/i&amp;gt; wird für die Verschlüsselung benutzt&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Die Konfigurationsdatei &amp;lt;i&amp;gt;client.conf&amp;lt;/i&amp;gt; auf dem Klienten anlegen:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;&lt;br /&gt;
				remote myremote.mydomain&amp;lt;br&amp;gt;&lt;br /&gt;
				dev tun&amp;lt;br&amp;gt;&lt;br /&gt;
				ifconfig 10.8.0.2 10.8.0.1&amp;lt;br&amp;gt;&lt;br /&gt;
				secret static.key&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
			&amp;lt;i&amp;gt;myremote.mydomain&amp;lt;/i&amp;gt; ist durch dei Adresse des servers im Intranet zu ersetzen.	Auch hier wird das virtuelle Tunnelgerät angelegt. Jetzt kommt die Klienten-IP im VPN zuerst, dann die server-IP und die Datei &amp;lt;i&amp;gt;static.key&amp;lt;/i&amp;gt; wird für die Verschlüsselung benutzt&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Starten auf dem server als root:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ sudo openvpn --config server.conf &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Starten auf dem Klienten als root:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ sudo openvpn --config client.conf &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Testlauf&amp;lt;/h3&amp;gt;&lt;br /&gt;
Jetzt sollte der Klient in der Lage sein den serven anzupingen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ ping 10.8.0.1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn&#039;s klappt, kann man sich die routing-Informationen anschauen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ route -n&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Ziel&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Router&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Genmask&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;FLags&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Metric&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Ref&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Use&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Iface&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0.0.0.0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;&amp;lt;i&amp;gt;router-IP im Intranet&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0.0.0.0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;UG&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;eth0&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;10.8.0.1&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0.0.0.0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;255.255.255.255&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;UH&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;thn0&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Die IP 10.8.0.1 ist also dem Tunnelgerät zugeordnet worüber die beiden Rechner nun kommunizieren können.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Klient zu server Verbindung (peer to peer)&amp;lt;/h2&amp;gt;&lt;br /&gt;
Hier geht es um das Verbinden zweier (oder mehrer) Rechner über ein anderes Netz, damit sie aggieren können, als würden sie im selben Netz hängen. Es gibt nur einen server, der im VPN unter 10.8.0.1 zu erreichen ist, mit dem sich einer oder mehrere Klienten verbinden können, die dann höhere IPs im subnetzt 10.8.0.0/24 erhalten. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;klient1.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 client # Diese Datei konfiguriert einen Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 remote openvpn.beispiel.de 1194 # Hostname/externe IP des servers/routers, Port entsprechend anpassen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-client&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/klient1cert.pem&lt;br /&gt;
 key ./Schluessel/klient1key.pem&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Die Konfiguartion des Klienten ist also recht simpel: Adresse &amp;amp;amp; Port des servers werden angegeben, das Protokoll ist UDP, das ganze soll über das tun0-Gerät laufen und es wird das Zertifikat der CA, das eigene Zertifikat und der eigene Schlüssel benötigt. Das war&#039;s.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 server 10.8.0.0 255.255.255.0 # virtuelles VPN-Netzwerk&lt;br /&gt;
 port 1194 # Auf Port 1194 horchen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-server&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte tun0. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/servercert.pem&lt;br /&gt;
 key ./Schluessel/serverkey.pem&lt;br /&gt;
 dh ./dh1024.pem&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 keepalive 20 180 # Alle 20 Sekunden pingen. 3 Minuten time out f&amp;amp;uuml;r Klientenverbindung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Das VPN wird unter 10.8.0.0/24 laufen. Entsprechend ist darauf zu achten, dass dieser IP-Bereich weder im regulären Intranet des Klienten noch des servers vorkommt. Port ist 1194 (ggf. auf der firewall durchleiten nicht vergessen). Es wird UDP verwendet. Wenn in beiden Konfigurationsdateien TCP steht funktioniert es auch. UDP wurde gewählt, da eine der Anleitungen sagt TCP über TCP zu tunneln wäre die schlechteste Idee. Auch hier kommt das &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;-Gerät zum Einsatz und es werden die Zertifikate der CA, des servers sowie der server-Schlüssel als auch die Diffie-Hellmann-Zufallszahlen angegeben. Die Verbindung wird bis zu 3min mit einem keepalive aufrecht erhalten.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun kann es losgehen. Auf dem server:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo openvpn --config server.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf dem Klienten:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo openvpn --config klient1.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Server sollte unter 10.8.0.1 zu erreichen sein&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ ping 10.8.0.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Klient zu server Verbindung mit routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
Diese Konfiguration entspricht im Wesentlichen der letzten. Zusätzlich wird den Klienten allerdings noch erlaubt die Rechner im Intranet des server-Netzes zu sehen. Dies entspricht also dem was i.d.R. passiert wenn man sich mit seinem Firmenrechner über VPN im Intranet der Firma anmeldet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;klient1.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 client # Diese Datei konfiguriert einen Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 remote openvpn.beispiel.de 1194 # Hostname/externe IP des servers/routers, Port entsprechend anpassen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-client&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/klient1cert.pem&lt;br /&gt;
 key ./Schluessel/klient1key.pem&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Man sieht, für die Klienten ändert sich nichts. Es ist die selbige Konfiguration, wie im obigen Beispiel.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 server 10.8.0.0 255.255.255.0 # virtuelles VPN-Netzwerk&lt;br /&gt;
 port 1194 # Auf Port 1194 horchen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-server&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte tun0. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/servercert.pem&lt;br /&gt;
 key ./Schluessel/serverkey.pem&lt;br /&gt;
 dh ./dh1024.pem&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 client-to-client # Daten von VPN-Client zu VPN-Client wird direkt in OpenVPN weitergeleitet&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 push &amp;quot;route 192.168.1.0 255.255.255.0&amp;quot; # Den Client über das Server-LAN informieren (wichtig!)&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # float # Nur wenn Clients ihre IPs während der Verbindung wechseln&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 keepalive 20 180 # Alle 20 Sekunden pingen. 3 Minuten time out f&amp;amp;uuml;r Klientenverbindung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Beim server ändert sich also auch recht wenig. Neu ist der Befehl &#039;&#039;client-to-client&#039;&#039;, der ermöglicht dass die verschiedenen Klienten sich auch untereinander unterhalten können - dies hätte man auch schon bei der obigen Konfiguration machen könenn. Wichtiger noch ist der Befehl &#039;&#039;push&#039;&#039;. Erst dieser informiert den Klienten darüber, dass hinter dem VPN-server noch ein Intranet liegt mit dem man kommunizieren kann. In diesem Beispiel wird angenommen, das Intranet des servers sei 192.168.1.0/24. Auch hier ist wieder zu beachten, dass dieses Intranet nicht dem eines Klienten entsprechen darf, denn sonst kommt es zu routing konflikten.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Routing-Problematik&amp;lt;/h3&amp;gt;&lt;br /&gt;
Leider ist es mit diesem Befehl allein noch nicht getan. Der server muss außerdem in die Lage versetzt werden, die Daten aus dem Intranet ins VPN zu routen und umgekehrt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unter LINUX &amp;amp; Windows geht das [http://wiki.openvpn.eu/index.php/Config_ServerNET_Routing#Forwarding_am_Server_aktivieren folgendermaßen]. Unter Mac OS X sollte man sich ggf. eine plist schreiben, damit dieser Befehl beim Start ausgeführt wird:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo sysctl -w net.inet.ip.forwarding=1&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit ist man aber leider immer noch nicht durch. Jetzt wissen die Klienten also über das Intranet Bescheid und der server routet auch alles brav durch, doch woher wissen die Intranet-Rechner, wie sie mit den VPN-Klienten kommunizieren?  Bisher gar nicht.&amp;lt;br&amp;gt;&lt;br /&gt;
Beispielsweise will der Rechner 192.168.1.5 aus dem Intranet mit einem VPN-Klienten 10.8.0.6 reden. Er wird seinen router fragen, wo er diesen Rechner findet. Und wenn der router nicht gleichzeitig auch der VPN-server ist, wird dieser Antworten: kenne ich nicht. Es gibt also zwei Möglichkeiten. Entweder muss der Router auch der VPN-server sein, oder man muss auf jedem Rechner des Intranets eine Route einrichten die sagt: wenn Du einen Rechner aus dem Netz 10.8.0.0/24 erreichen möchtest, frag bitte nicht deinen Standardrouter sondern den VPN-server, der Hilft dir weiter.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo route add -net 10.8.0.0 -netmask 255.255.255.0 -gateway 192.168.1.2&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In diesem Beispiel wird angenommen, dass die Intranet-Adresse des VPN-servers 192.168.1.2 ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Klient zu server Verbindung mit bridging&amp;lt;/h2&amp;gt;&lt;br /&gt;
Im [[https://wiki.attraktor.org/index.php?title=Mac_nix_basteln:OpenVPN&amp;amp;action=submit#Klient_zu_server_Verbindung_mit_routing|letzten Beispiel]] hat man also verschiedene Subnetze (das Intranet des VPN servers und das VPN selbst) miteinander Verbunden. Beim bridging aggiert der VPN-server als Brücke, was bedeutet, dass die VPN-Klienten direkt in das Intranet des VPN-servers gehängt werden. Der server wird damit also quasi zum [http://de.wikipedia.org/wiki/Switch_%28Computertechnik%29 switch].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;klient1.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 client # Diese Datei konfiguriert einen Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 remote openvpn.beispiel.de 1194 # Hostname/externe IP des servers/routers, Port entsprechend anpassen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-client&lt;br /&gt;
 dev tap0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &amp;lt;i&amp;gt;tap0&amp;lt;/i&amp;gt;&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/klient1cert.pem&lt;br /&gt;
 key ./Schluessel/klient1key.pem&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Diesmal hat sich klienten-seitig nur die &#039;&#039;tun&#039;&#039;-Schnittstelle nach &#039;&#039;tap&#039;&#039; geändert. Es gehen also nicht mehr IP-Pakete über das VPN, sondern, eine Ebene tiefer, Ethernetpakete.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 server-bridge 192.168.1.2 255.255.255.0 192.168.1.220 192.168.1.230 # Server IP, Subnetzmaske, Start &amp;amp; End IPs für die VPN-Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 port 1194 # Auf Port 1194 horchen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-server&lt;br /&gt;
 dev tap0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &#039;&#039;tap0&#039;&#039;&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Schl&amp;amp;uuml;ssel zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/servercert.pem&lt;br /&gt;
 key ./Schluessel/serverkey.pem&lt;br /&gt;
 dh ./dh1024.pem&lt;br /&gt;
 &amp;lt;br&amp;gt; &lt;br /&gt;
 keepalive 20 180 # Alle 20 Sekunden pingen. 3 Minuten time out f&amp;amp;uuml;r Klientenverbindung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Der Server soll also als Brücke aggieren, hat die IP 192.168.1.2 im Subnetz 192.168.1.2/24 und soll an die Klienten IPs im Bereich zwischen 192.168.1.220 und 192.168.1.230 verteilen. Diese Klienten können dann aggieren, als würden sie im selben Intranet mit dem VPN-server hängen.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenVPN&amp;diff=5475</id>
		<title>Mac nix basteln:OpenVPN</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenVPN&amp;diff=5475"/>
		<updated>2012-04-29T12:13:14Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;Einleitung&amp;lt;/h2&amp;gt;&lt;br /&gt;
Um diesen Artikel einigermassen sinnvoll nutzen zu können, sei empfohlen vorher die [[Mac_nix_basteln:Krypto_Grundlagen|Krypto Grundlagen]] gelesen zu haben. Darüber hinaus wird es zum Anwenden der aufgelisteten Beispiele erforderlich werden [[Mac_nix_basteln:OpenSSL|Schlüssel per OpenSSL]] erzeugt zu haben (mit Außnahme des Testbeispiels).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Bei VPN geht es grundsätzlich darum, eine verschlüsselte Verbindung zwischen Rechnern über ein Drittnetz aufzubauen, damit sie aggieren können, als hingen sie im selben Netz. VPN ist jedoch nicht automatisch gleich VPN. Es gibt viele Möglichkeiten ein virtuelles privates Netzwerk aufzusetzen:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Verbinden zweier Rechner über ein anderes Netz, damit sie aggieren können, als würden sie im selben Netz hängen. (Wenn es sich lediglich um zwei Rechner handelt, gibt es sicherlich auch einfacherere Wege zum Erfolg)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Einzelne Rechner (Klienten) sollen sich über ein anderes Netz (z.B. dem Internet) mit einem privaten Netz verbinden (z.B. Firmennetz)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Zusätzlich zum Letzteren kann man auch den Internetverkehr der Klienten über das private Netz wieder ins Internet routen. Das kann sinnvoll sein, wenn man sich an einem Ort mit Internetsperren befindet&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Verbinden zweier Netze über ein drittes, damit die beiden so aggieren können, als wären sie eins. (Z.B. zum Verbinden mehrerer Firmenstandorte)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die hier aufgeführten Beispiele sind aus verschiedenen Quellen zusammengetragen. Um einen guten Durchblick zum bekommen, lohnt es sich sie alle zu studieren:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://openvpn.net/index.php/open-source/documentation/howto.html OpenVPN.net]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://wiki.openvpn.eu/ OpenVPN Wiki]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://www.online-tutorials.net/security/openvpn-tutorial/tutorials-t-69-209.html OpenVPN Tutorial]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://wiki.freifunk.net/OpenVPN_Howto OpenVPN Howto]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Die Installation von OpenVPN ist die selbe, ob man Klient oder server ist. Gesteuert wird das Verhalten des jeweiligen Rechners über Konfigurationsdateien. Genau diese werden hier für verschiedene Beispielkonfigurationen gezeigt und erläutert. Sie sind der Einfachheit halber auf das lauffähige Minimum reduziert. Es gibt durchaus noch weitere Einstellungsmöglichkeiten zum Anpassen individueller Bedürfnisse. Ein guten Ausgangspunkt für individuelle Anpassungen findet man am [http://openvpn.net/index.php/open-source/documentation/howto.html#examples Ende der OpenVPN Hilfeseiten]. Die meisten (alle?) Parameter sind dort enthalten und man kann sie nach Bedarf ein und auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Neben den Konfigurationsdateien braucht man zum Betrieb ggf. noch die bereits genannten [[Mac_nix_basteln:OpenSSL|Schlüssel]].&lt;br /&gt;
&lt;br /&gt;
Es wird in den Beispielen davon ausgegangen, dass OpenVPN auf dem Port 1194 läuft, diese ist ggf. auf dem Router zum OpenVPN-server durchzuleiten.&lt;br /&gt;
&lt;br /&gt;
Die VPN-Verbindung wird über eine virtuelle Netzverkkarte &amp;lt;i&amp;gt;getunnelt&amp;lt;/i&amp;gt;. Dieses virtuelle Gerät heisst entweder tun oder tap. Während ein tun-Gerät auf IP-Ebene läuft, läuft das tap-Gerät eine Ebene darunter auf ethernet-Ebene. Möglicher Weise müssen diese Geräte bei OS X nachinstalliert werden. Dafür gibt es [http://tuntaposx.sourceforge.net/ TunTap] (Möglicher Weise deshalb, weil TunTap auf meinen Testrechnern installiert ist und ich nicht weiss, ob es auch ohne funktionert. Möglicherweise stellt auch OpenVPN selbst tun- &amp;amp;amp; tap-Geräte zur Verfügung).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;h2&amp;gt;Testkonfiguration&amp;lt;/h2&amp;gt;&lt;br /&gt;
Dieser Absatz stellt den denkbar einfachsten Aufbau dar, ist aber nicht wirklich praxistauglich. Der Absatz kann übersprungen werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Installation&amp;lt;/h3&amp;gt;&lt;br /&gt;
Zunächst wird zum Test eine Verbindung zwischen nur zwei Rechnern aufgebaut. Da diese [http://www.openvpn.net/index.php/open-source/documentation/miscellaneous/static-key-mini-howto.html Anleitung] für Anfänger nicht gerade ausführlich ist und für Fortgeschrittene belanglos, wird sie ein wenig weiter aufgeschlüsselt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Im ersten Schritt braucht man zwei Rechner zum Testen. Dabei ist es auch ausreichend wenn man sich beispielsweise zwei [http://de.wikipedia.org/wiki/Virtuelle_Maschine Virtuelle Maschinen] mit Linux aufsetzt. Also...&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[https://www.virtualbox.org/ VirtualBox] installieren und zwei Linuxmaschinen der Wahl aufsetzen. Dabei kann die zweite VM eine Kopie der ersten sein - geht schneller (&amp;lt;code&amp;gt;rechtsklick auf die VM / Klonen&amp;lt;/code&amp;gt;). Wichtig beim Anlegen des Klons ist, darauf zu achten dass man den Haken bei &amp;lt;code&amp;gt;Zuweisen neuer MAC-Adressen für alle Netzwerkkarten&amp;lt;/code&amp;gt; setzt&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Dafür sorgen, dass die VMs vom router jeweils eigene IP-Adressen zugewiesen bekommen, als wären es Rechner die ganz normal im Intranet hängen: &amp;lt;code&amp;gt;VM anklicken / Ändern / Netzwerk / Adapter 1 / Angeschlossen an: Netzwerkbrücke&amp;lt;/code&amp;gt;. Da die VMs unterschiedliche MACs haben, bekommen sie nun auch individuelle IPs&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Auf den VMs muss jeweils OpenVPN installiert werden. Unter Linux: &amp;lt;code&amp;gt;$ apt-get install openvpn&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Konfiguration&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Jetzt kann man wieder der [http://www.openvpn.net/index.php/open-source/documentation/miscellaneous/static-key-mini-howto.html Anleitung] folgen.&lt;br /&gt;
	&amp;lt;ul&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;Statischen Schlüssel für die Verschlüsselung der Verbindung auf dem OpenVPN-Server erzeugen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ openvpn --genkey --secret static.key&amp;lt;/code&amp;gt;. &amp;lt;br&amp;gt;Dieser Schlüssel muss auch auf das den Klienten kopiert werden.&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Die Konfigurationsdatei &amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt; auf dem Server anlegen:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;&lt;br /&gt;
				dev tun&amp;lt;br&amp;gt;&lt;br /&gt;
    			ifconfig 10.8.0.1 10.8.0.2&amp;lt;br&amp;gt;&lt;br /&gt;
    			secret static.key&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
			Es wird eine Virtuelle Netzwerkkarte [http://backreference.org/2010/03/26/tuntap-interface-tutorial/ tunnel device] angelegt. Die server-IP im VPN endet auf 1, die des Klienten auf 2 und die Datei &amp;lt;i&amp;gt;static.key&amp;lt;/i&amp;gt; wird für die Verschlüsselung benutzt&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Die Konfigurationsdatei &amp;lt;i&amp;gt;client.conf&amp;lt;/i&amp;gt; auf dem Klienten anlegen:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;&lt;br /&gt;
				remote myremote.mydomain&amp;lt;br&amp;gt;&lt;br /&gt;
				dev tun&amp;lt;br&amp;gt;&lt;br /&gt;
				ifconfig 10.8.0.2 10.8.0.1&amp;lt;br&amp;gt;&lt;br /&gt;
				secret static.key&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
			&amp;lt;i&amp;gt;myremote.mydomain&amp;lt;/i&amp;gt; ist durch dei Adresse des servers im Intranet zu ersetzen.	Auch hier wird das virtuelle Tunnelgerät angelegt. Jetzt kommt die Klienten-IP im VPN zuerst, dann die server-IP und die Datei &amp;lt;i&amp;gt;static.key&amp;lt;/i&amp;gt; wird für die Verschlüsselung benutzt&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Starten auf dem server als root:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ sudo openvpn --config server.conf &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Starten auf dem Klienten als root:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ sudo openvpn --config client.conf &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Testlauf&amp;lt;/h3&amp;gt;&lt;br /&gt;
Jetzt sollte der Klient in der Lage sein den serven anzupingen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ ping 10.8.0.1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn&#039;s klappt, kann man sich die routing-Informationen anschauen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ route -n&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Ziel&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Router&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Genmask&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;FLags&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Metric&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Ref&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Use&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Iface&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0.0.0.0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;&amp;lt;i&amp;gt;router-IP im Intranet&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0.0.0.0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;UG&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;eth0&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;10.8.0.1&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0.0.0.0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;255.255.255.255&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;UH&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;thn0&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Die IP 10.8.0.1 ist also dem Tunnelgerät zugeordnet worüber die beiden Rechner nun kommunizieren können.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Klient zu server Verbindung (peer to peer)&amp;lt;/h2&amp;gt;&lt;br /&gt;
Hier geht es um das Verbinden zweier (oder mehrer) Rechner über ein anderes Netz, damit sie aggieren können, als würden sie im selben Netz hängen. Es gibt nur einen server, der im VPN unter 10.8.0.1 zu erreichen ist, mit dem sich einer oder mehrere Klienten verbinden können, die dann höhere IPs im subnetzt 10.8.0.0/24 erhalten. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;klient1.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 client # Diese Datei konfiguriert einen Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 remote openvpn.beispiel.de 1194 # Hostname/externe IP des Servers/Routers, Port entsprechend anpassen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-client&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Keys zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/klient1cert.pem&lt;br /&gt;
 key ./Schluessel/klient1key.pem&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Die Konfiguartion des Klienten ist also recht simpel: Adresse &amp;amp;amp; Port des servers werden angegeben, das Protokoll ist UDP, das ganze soll über das tun0-Gerät laufen und es wird das Zertifikat der CA, das eigene Zertifikat und der eigene Schlüssel benötigt. Das war&#039;s.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 server 10.8.0.0 255.255.255.0 # virtuelles VPN-Netzwerk&lt;br /&gt;
 port 1194 # Auf Port 1194 horchen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-server&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte tun0. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Keys zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/servercert.pem&lt;br /&gt;
 key ./Schluessel/serverkey.pem&lt;br /&gt;
 dh ./dh1024.pem&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 keepalive 20 180 # Alle 20 Sekunden pingen. 3 Minuten Timeout fuer Clientverbindung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Das VPN wird unter 10.8.0.0/24 laufen. Entsprechend ist darauf zu achten, dass dieser IP-Bereich weder im regulären Intranet des Klienten noch des servers vorkommt. Port ist 1194 (ggf. auf der firewall durchleiten nicht vergessen). Es wird UDP verwendet. Wenn in beiden Konfigurationsdateien TCP steht funktioniert es auch. UDP wurde gewählt, da eine der Anleitungen sagt TCP über TCP zu tunneln wäre die schlechteste Idee. Auch hier kommt das &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;-Gerät zum Einsatz und es werden die Zertifikate der CA, des servers sowie der server-Schlüssel als auch die Diffie-Hellmann-Zufallszahlen angegeben. Die Verbindung wird bis zu 3min mit einem keepalive aufrecht erhalten.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun kann es losgehen. Auf dem server:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo openvpn --config server.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf dem Klienten:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo openvpn --config klient1.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Server sollte unter 10.8.0.1 zu erreichen sein&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ ping 10.8.0.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Klient zu server Verbindung mit routing&amp;lt;/h2&amp;gt;&lt;br /&gt;
Diese Konfiguration entspricht im Wesentlichen der letzten. Zusätzlich wird den Klienten allerdings noch erlaubt die Rechner im Intranet des server-Netzes zu sehen. Dies entspricht also dem was i.d.R. passiert wenn man sich mit seinem Firmenrechner über VPN im Intranet der Firma anmeldet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;klient1.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 client # Diese Datei konfiguriert einen Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 remote openvpn.beispiel.de 1194 # Hostname/externe IP des Servers/Routers, Port entsprechend anpassen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-client&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Keys zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/klient1cert.pem&lt;br /&gt;
 key ./Schluessel/klient1key.pem&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Man sieht, für die Klienten ändert sich nichts. Es ist die selbige Konfiguration, wie im obigen Beispiel.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 server 10.8.0.0 255.255.255.0 # virtuelles VPN-Netzwerk&lt;br /&gt;
 port 1194 # Auf Port 1194 horchen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-server&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte tun0. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Keys zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/servercert.pem&lt;br /&gt;
 key ./Schluessel/serverkey.pem&lt;br /&gt;
 dh ./dh1024.pem&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 client-to-client # Daten von VPN-Client zu VPN-Client wird direkt in OpenVPN weitergeleitet&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 push &amp;quot;route 192.168.1.0 255.255.255.0&amp;quot; # Den Client über das Server-LAN informieren (wichtig!)&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # float # Nur wenn Clients ihre IPs während der Verbindung wechseln&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 keepalive 20 180 # Alle 20 Sekunden pingen. 3 Minuten Timeout fuer Clientverbindung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Beim server ändert sich also auch recht wenig. Neu ist der Befehl &#039;&#039;client-to-client&#039;&#039;, der ermöglicht dass die verschiedenen Klienten sich auch untereinander unterhalten können - dies hätte man auch schon bei der obigen Konfiguration machen könenn. Wichtiger noch ist der Befehl &#039;&#039;push&#039;&#039;. Erst dieser informiert den Klienten darüber, dass hinter dem VPN-server noch ein Intranet liegt mit dem man kommunizieren kann. In diesem Beispiel wird angenommen, das Intranet des servers sei 192.168.1.0/24. Auch hier ist wieder zu beachten, dass dieses Intranet nicht dem eines Klienten entsprechen darf, denn sonst kommt es zu routing konflikten.&amp;lt;br&amp;gt;&lt;br /&gt;
Leider ist es mit diesem Befehl allein noch nicht getan. Der server muss außerdem in die Lage versetzt werden, die Daten aus dem Intranet ins VPN zu routen und umgekehrt.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
Unter LINUX &amp;amp; Windows geht das [http://wiki.openvpn.eu/index.php/Config_ServerNET_Routing#Forwarding_am_Server_aktivieren folgendermaßen]. Unter Mac OS X sollte man sich ggf. eine plist schreiben, damit dieser Befehl beim Start ausgeführt wird:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo sysctl -w net.inet.ip.forwarding=1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit ist man aber leider immer noch nicht durch. Jetzt wissen die Klienten also über das Intranet Bescheid und der server routet auch alles brav durch, doch woher wissen die Intranet-Rechner, wie sie mit den VPN-Klienten kommunizieren?  Bisher gar nicht.&amp;lt;br&amp;gt;&lt;br /&gt;
Beispielsweise will der Rechner 192.168.1.5 aus dem Intranet mit einem VPN-Klienten 10.8.0.6 reden. Er wird seinen router fragen, wo er diesen Rechner findet. Und wenn der router nicht gleichzeitig auch der VPN-server ist, wird dieser Antworten: kenne ich nicht. Es gibt also zwei Möglichkeiten. Entweder muss der Router auch der VPN-server sein, oder man muss auf jedem Rechner des Intranets eine Route einrichten die sagt: wenn Du einen Rechner aus dem Netz 10.8.0.0/24 erreichen möchtest, frag bitte nicht deinen Standardrouter sondern den VPN-server, der Hilft dir weiter.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo route add -net 10.8.0.0 -netmask 255.255.255.0 -gateway 192.168.1.2&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In diesem Beispiel wird angenommen, dass die Intranet-Adresse des VPN-servers 192.168.1.2 ist.&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenVPN&amp;diff=5241</id>
		<title>Mac nix basteln:OpenVPN</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenVPN&amp;diff=5241"/>
		<updated>2012-04-17T16:41:34Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;Einleitung&amp;lt;/h2&amp;gt;&lt;br /&gt;
Um diesen Artikel einigermassen sinnvoll nutzen zu können, sei empfohlen vorher die [[Mac_nix_basteln:Krypto_Grundlagen|Krypto Grundlagen]] gelesen zu haben. Darüber hinaus wird es zum Anwenden der aufgelisteten Beispiele erforderlich werden [[Mac_nix_basteln:OpenSSL|Schlüssel per OpenSSL]] erzeugt zu haben (mit Außnahme des Testbeispiels).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Bei VPN geht es grundsätzlich darum, eine verschlüsselte Verbindung zwischen Rechnern über ein Drittnetz aufzubauen, damit sie aggieren können, als hingen sie im selben Netz. VPN ist jedoch nicht automatisch gleich VPN. Es gibt viele Möglichkeiten ein virtuelles privates Netzwerk aufzusetzen:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Verbinden zweier Rechner über ein anderes Netz, damit sie aggieren können, als würden sie im selben Netz hängen. (Wenn es sich lediglich um zwei Rechner handelt, gibt es sicherlich auch einfacherere Wege zum Erfolg)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Einzelne Rechner (Klienten) sollen sich über ein anderes Netz (z.B. dem Internet) mit einem privaten Netz verbinden (z.B. Firmennetz)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Zusätzlich zum Letzteren kann man auch den Internetverkehr der Klienten über das private Netz wieder ins Internet routen. Das kann sinnvoll sein, wenn man sich an einem Ort mit Internetsperren befindet&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Verbinden zweier Netze über ein drittes, damit die beiden so aggieren können, als wären sie eins. (Z.B. zum Verbinden mehrerer Firmenstandorte)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die hier aufgeführten Beispiele sind aus verschiedenen Quellen zusammengetragen. Um einen guten Durchblick zum bekommen, lohnt es sich sie alle zu studieren:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://openvpn.net/index.php/open-source/documentation/howto.html OpenVPN.net]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://wiki.openvpn.eu/ OpenVPN Wiki]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://www.online-tutorials.net/security/openvpn-tutorial/tutorials-t-69-209.html OpenVPN Tutorial]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://wiki.freifunk.net/OpenVPN_Howto OpenVPN Howto]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Die Installation von OpenVPN ist die selbe, ob man Klient oder server ist. Gesteuert wird das Verhalten des jeweiligen Rechners über Konfigurationsdateien. Genau diese werden hier für verschiedene Beispielkonfigurationen gezeigt und erläutert. Sie sind der Einfachheit halber auf das lauffähige Minimum reduziert. Es gibt durchaus noch weitere Einstellungsmöglichkeiten zum Anpassen individueller Bedürfnisse. Ein guten Ausgangspunkt für individuelle Anpassungen findet man am [http://openvpn.net/index.php/open-source/documentation/howto.html#examples Ende der OpenVPN Hilfeseiten]. Die meisten (alle?) Parameter sind dort enthalten und man kann sie nach Bedarf ein und auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Neben den Konfigurationsdateien braucht man zum Betrieb ggf. noch die bereits genannten [[Mac_nix_basteln:OpenSSL|Schlüssel]].&lt;br /&gt;
&lt;br /&gt;
Es wird in den Beispielen davon ausgegangen, dass OpenVPN auf dem Port 1194 läuft, diese ist ggf. auf dem Router zum OpenVPN-server durchzuleiten.&lt;br /&gt;
&lt;br /&gt;
Die VPN-Verbindung wird über eine virtuelle Netzverkkarte &amp;lt;i&amp;gt;getunnelt&amp;lt;/i&amp;gt;. Dieses virtuelle Gerät heisst entweder tun oder tap. Während ein tun-Gerät auf IP-Ebene läuft, läuft das tap-Gerät eine Ebene darunter auf ethernet-Ebene. Möglicher Weise müssen diese Geräte bei OS X nachinstalliert werden. Dafür gibt es [http://tuntaposx.sourceforge.net/ TunTap] (Möglicher Weise deshalb, weil TunTap auf meinen Testrechnern installiert ist und ich nicht weiss, ob es auch ohne funktionert. Möglicherweise stellt auch OpenVPN selbst tun- &amp;amp;amp; tap-Geräte zur Verfügung).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Testkonfiguration&amp;lt;/h2&amp;gt;&lt;br /&gt;
Dieser Absatz stellt den denkbar einfachsten Aufbau dar, ist aber nicht wirklich praxistauglich. Der Absatz kann übersprungen werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Installation&amp;lt;/h3&amp;gt;&lt;br /&gt;
Zunächst wird zum Test eine Verbindung zwischen nur zwei Rechnern aufgebaut. Da diese [http://www.openvpn.net/index.php/open-source/documentation/miscellaneous/static-key-mini-howto.html Anleitung] für Anfänger nicht gerade ausführlich ist und für Fortgeschrittene belanglos, wird sie ein wenig weiter aufgeschlüsselt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Im ersten Schritt braucht man zwei Rechner zum Testen. Dabei ist es auch ausreichend wenn man sich beispielsweise zwei [http://de.wikipedia.org/wiki/Virtuelle_Maschine Virtuelle Maschinen] mit Linux aufsetzt. Also...&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[https://www.virtualbox.org/ VirtualBox] installieren und zwei Linuxmaschinen der Wahl aufsetzen. Dabei kann die zweite VM eine Kopie der ersten sein - geht schneller (&amp;lt;code&amp;gt;rechtsklick auf die VM / Klonen&amp;lt;/code&amp;gt;). Wichtig beim Anlegen des Klons ist, darauf zu achten dass man den Haken bei &amp;lt;code&amp;gt;Zuweisen neuer MAC-Adressen für alle Netzwerkkarten&amp;lt;/code&amp;gt; setzt&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Dafür sorgen, dass die VMs vom router jeweils eigene IP-Adressen zugewiesen bekommen, als wären es Rechner die ganz normal im Intranet hängen: &amp;lt;code&amp;gt;VM anklicken / Ändern / Netzwerk / Adapter 1 / Angeschlossen an: Netzwerkbrücke&amp;lt;/code&amp;gt;. Da die VMs unterschiedliche MACs haben, bekommen sie nun auch individuelle IPs&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Auf den VMs muss jeweils OpenVPN installiert werden. Unter Linux: &amp;lt;code&amp;gt;$ apt-get install openvpn&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Konfiguration&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Jetzt kann man wieder der [http://www.openvpn.net/index.php/open-source/documentation/miscellaneous/static-key-mini-howto.html Anleitung] folgen.&lt;br /&gt;
	&amp;lt;ul&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;Statischen Schlüssel für die Verschlüsselung der Verbindung auf dem OpenVPN-Server erzeugen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ openvpn --genkey --secret static.key&amp;lt;/code&amp;gt;. &amp;lt;br&amp;gt;Dieser Schlüssel muss auch auf das den Klienten kopiert werden.&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Die Konfigurationsdatei &amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt; auf dem Server anlegen:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;&lt;br /&gt;
				dev tun&amp;lt;br&amp;gt;&lt;br /&gt;
    			ifconfig 10.8.0.1 10.8.0.2&amp;lt;br&amp;gt;&lt;br /&gt;
    			secret static.key&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
			Es wird eine Virtuelle Netzwerkkarte [http://backreference.org/2010/03/26/tuntap-interface-tutorial/ tunnel device] angelegt. Die server-IP im VPN endet auf 1, die des Klienten auf 2 und die Datei &amp;lt;i&amp;gt;static.key&amp;lt;/i&amp;gt; wird für die Verschlüsselung benutzt&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Die Konfigurationsdatei &amp;lt;i&amp;gt;client.conf&amp;lt;/i&amp;gt; auf dem Klienten anlegen:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;&lt;br /&gt;
				remote myremote.mydomain&amp;lt;br&amp;gt;&lt;br /&gt;
				dev tun&amp;lt;br&amp;gt;&lt;br /&gt;
				ifconfig 10.8.0.2 10.8.0.1&amp;lt;br&amp;gt;&lt;br /&gt;
				secret static.key&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
			&amp;lt;i&amp;gt;myremote.mydomain&amp;lt;/i&amp;gt; ist durch dei Adresse des servers im Intranet zu ersetzen.	Auch hier wird das virtuelle Tunnelgerät angelegt. Jetzt kommt die Klienten-IP im VPN zuerst, dann die server-IP und die Datei &amp;lt;i&amp;gt;static.key&amp;lt;/i&amp;gt; wird für die Verschlüsselung benutzt&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Starten auf dem server als root:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ sudo openvpn --config server.conf &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Starten auf dem Klienten als root:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ sudo openvpn --config client.conf &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Testlauf&amp;lt;/h3&amp;gt;&lt;br /&gt;
Jetzt sollte der Klient in der Lage sein den serven anzupingen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ ping 10.8.0.1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn&#039;s klappt, kann man sich die routing-Informationen anschauen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ route -n&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Ziel&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Router&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Genmask&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;FLags&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Metric&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Ref&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Use&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Iface&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0.0.0.0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;&amp;lt;i&amp;gt;router-IP im Intranet&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0.0.0.0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;UG&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;eth0&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;10.8.0.1&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0.0.0.0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;255.255.255.255&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;UH&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;thn0&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Die IP 10.8.0.1 ist also dem Tunnelgerät zugeordnet worüber die beiden Rechner nun kommunizieren können.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Klient zu Netz Verbindung&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;klient.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 client # Diese Datei konfiguriert einen Klienten&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 remote openvpn.beispiel.de 1194 # Hostname/externe IP des Servers/Routers, Port entsprechend anpassen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-client&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Keys zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/klient1cert.pem&lt;br /&gt;
 key ./Schluessel/klient1key.pem&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Die Konfiguartion des Klienten ist also recht simpel: Adresse &amp;amp;amp; Port des Servers werden angegeben, das Protokoll ist UDP, das ganze soll über das tun0-Gerät laufen und es wird das Zertifikat der CA, das eigene Zertifikat und der eigene Schlüssel benötigt. Das war&#039;s.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt;&lt;br /&gt;
 server 10.8.0.0 255.255.255.0 # virtuelles VPN-Netzwerk&lt;br /&gt;
 port 1194 # Auf Port 1194 horchen&lt;br /&gt;
 proto udp # Protokoll UDP, für TCP: proto tcp-server&lt;br /&gt;
 dev tun0 # Die Verbindung geht über die Virtuelle Netzwerkkarte tun0. Alternativ, tap&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 # Hier die Pfade anpassen um auf die erstellten Keys zu verweisen&lt;br /&gt;
 ca ./Zertifikate/vpn-ca.pem&lt;br /&gt;
 cert ./Zertifikate/servercert.pem&lt;br /&gt;
 key ./Schluessel/serverkey.pem&lt;br /&gt;
 dh ./dh1024.pem&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 keepalive 20 180 # Alle 20 Sekunden pingen. 3 Minuten Timeout fuer Clientverbindung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Das VPN wird unter 10.8.0.0/24 laufen. Entsprechend ist darauf zu achten, dass dieser IP-Bereich weder im regulären Intranet des Klienten noch des servers vorkommt. Port ist 1194 (ggf. auf der firewall durchleiten nicht vergessen). Es wird UDP verwendet. Wenn in beiden Konfigurationsdateien TCP steht funktioniert es auch. UDP wurde gewählt, da eine der Anleitungen sagt TCP über TCP zu tunneln wäre die schlechteste Idee. Auch hier kommt das &amp;lt;i&amp;gt;tun0&amp;lt;/i&amp;gt;-Gerät zum Einsatz und es werden die Zertifikate der CA, des servers sowie der server-Schlüssel als auch die Diffie-Hellmann-Zufallszahlen angegeben. Die Verbindung wird bis zu 3min mit einem keepalive aufrecht erhalten.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun kann es losgehen. Auf dem server:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo openvpn --config server.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf dem Klienten:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo openvpn --config klient.conf&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenSSL&amp;diff=5159</id>
		<title>Mac nix basteln:OpenSSL</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenSSL&amp;diff=5159"/>
		<updated>2012-04-06T23:44:32Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://openssl.org/docs/apps/openssl.html OpenSSL] lässt sich für verschiedene Krypto-Operationen nutzen, so z.B. Erstellen und verwalten von verschiedenen Schlüsseltypen, Erstellen von Zertifikaten, verschlüsseln/entschlüsseln...&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Schlüsselerzeugung für OpenVPN&amp;lt;/h2&amp;gt;&lt;br /&gt;
Als Beispiel wird ein Satz Schlüssel zum Aufsetzen einer OpenVPN-Verbindung erzeugt:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
		&amp;lt;h4&amp;gt;Erzeugen einer CA&amp;lt;/h4&amp;gt;&lt;br /&gt;
		Verzeichnis für private Schlüssel und Zertifikate erstellen:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;&lt;br /&gt;
				$ mkdir Schluessel&amp;lt;br&amp;gt;&lt;br /&gt;
				$ mkdir Zertifikate&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;/code&amp;gt;&lt;br /&gt;
		Zertifikatsnummerierungszähler erstellen und Wert 01 reinschreiben:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ echo &amp;quot;01&amp;quot; &amp;gt; Zertifikate/vpn-ca.srl&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		4096bit langer, privater RSA-Schlüssel (PKCS#1 im PEM-Format) [oder Schlüsselpaar???] erstellen, welcher mit AES (256bit) geschützt ist:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl genrsa -aes256 -out Schluessel/vpn-cakey.pem 4096&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		Man sollte meinen, dass man in die Zertifikate unter Name usw. nichts eintragen muss, denn schliesslich möchte man sie vorwiegend nur zur Verschlüsselung einsetzen. Leider streikt OpenVPN, wenn man die Felder leer lässt. Also sollte man zumindest Quatsch, wenn nicht gar echte Daten eintragen. Besonders der &amp;lt;i&amp;gt;common name&amp;lt;/i&amp;gt; (CN) ist tatsächlich wichtig.&amp;lt;br&amp;gt;&lt;br /&gt;
10a gültiges (&amp;lt;code&amp;gt;-days 3650&amp;lt;/code&amp;gt;), selbstsigniertes X509-Zertifkat (nur für Test oder root CA)(&amp;lt;code&amp;gt;-x509&amp;lt;/code&amp;gt;) aus privatem Schlüssel erstellen (&amp;lt;code&amp;gt;-key Schluessel/vpn-cakey.pem&amp;lt;/code&amp;gt;) und nach vpn-ca.pem schreiben (&amp;lt;code&amp;gt;-out Zertifikate/vpn-ca.pem&amp;lt;/code&amp;gt;). Zertifikates Seriennummer auf 1 setzen (&amp;lt;code&amp;gt;set_serial 1&amp;lt;/code&amp;gt;) (default 0):&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl req -new -x509 -days 3650 -key Schluessel/vpn-cakey.pem -out Zertifikate/vpn-ca.pem -set_serial 1&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;p&amp;gt;&lt;br /&gt;
		&amp;lt;i&amp;gt;&#039;&#039;&#039;Alternativ&#039;&#039;&#039;&amp;lt;/i&amp;gt;, die beiden letzten Befehle in einem: Allerdings kann hier nicht AES256 als Verschlüsselung des privaten Schlüssels (jedenfalls ist mir kein entsprechender Parameter bekannt) - stattdessen wird standardmäßig DES3 gewählt:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl req -x509 -days 3650 -newkey rsa:4096 -keyout Schluessel/vpn-cakey.pem -out Zertifikate/vpn-ca.pem -set_serial 1&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/p&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
		&amp;lt;h4&amp;gt;Erzeugen des server-Schlüssels&amp;lt;/h4&amp;gt;&lt;br /&gt;
		4096bit RSA-Serverschlüssel ohne Kennwort (&amp;lt;code&amp;gt;-nodes&amp;lt;/code&amp;gt;) erstellen (&amp;lt;code&amp;gt;-newkey rsa:4096 -keyout Schluessel/serverkey.pem&amp;lt;/code&amp;gt;) &amp;amp;amp; Anfrage für ein 10a gültiges Zertifikat für diesen Schlüssel erstellen (&amp;lt;code&amp;gt;req -out Zertifikate/servercsr.pem -days 3650&amp;lt;/code&amp;gt;):&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl req -out Zertifikate/servercsr.pem -days 3650 -newkey rsa:4096 -keyout Schluessel/serverkey.pem -nodes&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;p&amp;gt;&lt;br /&gt;
			10 gültiges X.509 Serverzertifikat aus Zertifikatsanfrage erstellen (&amp;lt;code&amp;gt;x509 -req -in certs/servercsr.pem -out certs/servercert.pem -days 3650&amp;lt;/code&amp;gt;), von der root CA signieren (&amp;lt;code&amp;gt;-CA vpn-ca.pem -CAkey private/vpn-cakey.pem&amp;lt;/code&amp;gt;). Dabei wird &#039;&#039;vpn-ca.srl&#039;&#039; automatisch hoch gezählt:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ openssl x509 -req -in Zertifikate/servercsr.pem -out Zertifikate/servercert.pem -days 3650 -CA Zertifikate/vpn-ca.pem -CAkey Schluessel/vpn-cakey.pem&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/p&amp;gt;&lt;br /&gt;
		Zertifikatsanfrage kann gelöscht werden:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ rm Zertifikate/servercsr.pem&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
		&amp;lt;h4&amp;gt;Erzeugen eines Klienten-Schlüssels&amp;lt;/h4&amp;gt;&lt;br /&gt;
		Klienten-Schlüssel erstellen &amp;amp;amp; Zertifikatsanfrage für Klienten-Schlüssel:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl req -out Zertifikate/klient1csr.pem -days 3650 -newkey rsa:4096 -keyout Schluessel/klient1key.pem -nodes&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;p&amp;gt;&lt;br /&gt;
			Clientzertifikat aus Zertifikatsanfrage erstellen:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ openssl x509 -req -in Zertifikate/klient1csr.pem -out Zertifikate/klient1cert.pem -days 3650 -CA Zertifikate/vpn-ca.pem -CAkey Schluessel/vpn-cakey.pem&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/p&amp;gt;&lt;br /&gt;
		Zertifikatsanfrage kann gelöscht werden:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ rm Zertifikate/klient1csr.pem&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
		&amp;lt;h4&amp;gt;Zufallszahlen &amp;quot;Diffie-Hellman Parameter&amp;quot; erzeugen&amp;lt;/h4&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl dhparam -out dh1024.pem 1024&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Anzeigen von Zertifikaten&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Selbsterstelltes Zertifikat anzeigen&amp;lt;/h3&amp;gt;&lt;br /&gt;
Ein mit obiger Anleitung erzeugtes Zertifikat kann man sich wie folgt anzeigen lassen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ openssl x509 -in Zertifikate/klient1cert.pem -noout -text&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;https-Zertifikat anzeigen&amp;lt;/h3&amp;gt;&lt;br /&gt;
Das funktioniert übrigens auch mit TLS-Zertifikaten, die von https genutzt werden. Beispielsweise kann man sich das Zertifikat von [https://www.heise.de/ https://www.heise.de/] wie folgt anzeigen lassen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ openssl s_client -connect www.heise.de:https&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Bevor die Verbindung mangels Eingaben wieder abbricht, hohlt man sich den Inhalt von /&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ GET /&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In den angezeigten Informationen verbirgt sich das eigentliche Zertikiat im [http://de.wikipedia.org/wiki/X.509#Dateinamenserweiterungen_f.C3.BCr_Zertifikate PEM]-Format zwischen &amp;lt;i&amp;gt;-----BEGIN CERTIFICATE-----&amp;lt;/i&amp;gt; und &amp;lt;i&amp;gt;-----END CERTIFICATE-----&amp;lt;/i&amp;gt;. Um es für den Anwender lesbar zu machen makiert und kopiert man diesen Text (inkl. &amp;lt;i&amp;gt;-----BEGIN CERTIFICATE-----&amp;lt;/i&amp;gt; und &amp;lt;i&amp;gt;-----END CERTIFICATE-----&amp;lt;/i&amp;gt;) und speichert ihn in eine Datei:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ echo &amp;quot;&amp;lt;i&amp;gt;hier den in die Zwischenablage kopierten Zertifikatstext einfügen&amp;lt;/i&amp;gt;&amp;quot; &amp;gt; heise.pem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Nun lässt man sich das Zertifikiat von &amp;lt;i&amp;gt;openssl&amp;lt;/i&amp;gt; in Klartext umwandeln:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ openssl x509 -in heise.pem -noout -text&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenSSL&amp;diff=5156</id>
		<title>Mac nix basteln:OpenSSL</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenSSL&amp;diff=5156"/>
		<updated>2012-04-06T20:52:02Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://openssl.org/docs/apps/openssl.html OpenSSL] lässt sich für verschiedene Krypto-Operationen nutzen, so z.B. Erstellen und verwalten von verschiedenen Schlüsseltypen, Erstellen von Zertifikaten, verschlüsseln/entschlüsseln...&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Schlüsselerzeugung für OpenVPN&amp;lt;/h2&amp;gt;&lt;br /&gt;
Als Beispiel wird ein Satz Schlüssel zum Aufsetzen einer OpenVPN-Verbindung erzeugt:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
		&amp;lt;h4&amp;gt;Erzeugen einer CA&amp;lt;/h4&amp;gt;&lt;br /&gt;
		Verzeichnis für private Schlüssel und Zertifikate erstellen:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;&lt;br /&gt;
				$ mkdir Schluessel&amp;lt;br&amp;gt;&lt;br /&gt;
				$ mkdir Zertifikate&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;/code&amp;gt;&lt;br /&gt;
		Zertifikatsnummerierungszähler erstellen und Wert 01 reinschreiben:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ echo &amp;quot;01&amp;quot; &amp;gt; Zertifikate/vpn-ca.srl&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		4096bit langer, privater RSA-Schlüssel (PKCS#1 im PEM-Format) [oder Schlüsselpaar???] erstellen, welcher mit AES (256bit) geschützt ist:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl genrsa -aes256 -out Schluessel/vpn-cakey.pem 4096&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		10a gültiges (&amp;lt;code&amp;gt;-days 3650&amp;lt;/code&amp;gt;), selbstsigniertes X509-Zertifkat (nur für Test oder root CA)(&amp;lt;code&amp;gt;-x509&amp;lt;/code&amp;gt;) aus privatem Schlüssel erstellen (&amp;lt;code&amp;gt;-key Schluessel/vpn-cakey.pem&amp;lt;/code&amp;gt;) und nach vpn-ca.pem schreiben (&amp;lt;code&amp;gt;-out Zertifikate/vpn-ca.pem&amp;lt;/code&amp;gt;). Zertifikates Seriennummer auf 1 setzen (&amp;lt;code&amp;gt;set_serial 1&amp;lt;/code&amp;gt;) (default 0):&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl req -new -x509 -days 3650 -key Schluessel/vpn-cakey.pem -out Zertifikate/vpn-ca.pem -set_serial 1&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;p&amp;gt;&lt;br /&gt;
		&amp;lt;i&amp;gt;&#039;&#039;&#039;Alternativ&#039;&#039;&#039;&amp;lt;/i&amp;gt;, die beiden letzten Befehle in einem: Allerdings kann hier nicht AES256 als Verschlüsselung des privaten Schlüssels (jedenfalls ist mir kein entsprechender Parameter bekannt) - stattdessen wird standardmäßig DES3 gewählt:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl req -x509 -days 3650 -newkey rsa:4096 -keyout Schluessel/vpn-cakey.pem -out Zertifikate/vpn-ca.pem -set_serial 1&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/p&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
		&amp;lt;h4&amp;gt;Erzeugen des server-Schlüssels&amp;lt;/h4&amp;gt;&lt;br /&gt;
		4096bit RSA-Serverschlüssel ohne Kennwort (&amp;lt;code&amp;gt;-nodes&amp;lt;/code&amp;gt;) erstellen (&amp;lt;code&amp;gt;-newkey rsa:4096 -keyout Schluessel/serverkey.pem&amp;lt;/code&amp;gt;) &amp;amp;amp; Anfrage für ein 10a gültiges Zertifikat für diesen Schlüssel erstellen (&amp;lt;code&amp;gt;req -out Zertifikate/servercsr.pem -days 3650&amp;lt;/code&amp;gt;):&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl req -out Zertifikate/servercsr.pem -days 3650 -newkey rsa:4096 -keyout Schluessel/serverkey.pem -nodes&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;p&amp;gt;&lt;br /&gt;
			10 gültiges X.509 Serverzertifikat aus Zertifikatsanfrage erstellen (&amp;lt;code&amp;gt;x509 -req -in certs/servercsr.pem -out certs/servercert.pem -days 3650&amp;lt;/code&amp;gt;), von der root CA signieren (&amp;lt;code&amp;gt;-CA vpn-ca.pem -CAkey private/vpn-cakey.pem&amp;lt;/code&amp;gt;). Dabei wird &#039;&#039;vpn-ca.srl&#039;&#039; automatisch hoch gezählt:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ openssl x509 -req -in Zertifikate/servercsr.pem -out Zertifikate/servercert.pem -days 3650 -CA Zertifikate/vpn-ca.pem -CAkey Schluessel/vpn-cakey.pem&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/p&amp;gt;&lt;br /&gt;
		Zertifikatsanfrage kann gelöscht werden:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ rm Zertifikate/servercsr.pem&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
		&amp;lt;h4&amp;gt;Erzeugen eines Klienten-Schlüssels&amp;lt;/h4&amp;gt;&lt;br /&gt;
		Klienten-Schlüssel erstellen &amp;amp;amp; Zertifikatsanfrage für Klienten-Schlüssel:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl req -out Zertifikate/klient1csr.pem -days 3650 -newkey rsa:4096 -keyout Schluessel/klient1key.pem -nodes&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;p&amp;gt;&lt;br /&gt;
			Clientzertifikat aus Zertifikatsanfrage erstellen:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ openssl x509 -req -in Zertifikate/klient1csr.pem -out Zertifikate/klient1cert.pem -days 3650 -CA Zertifikate/vpn-ca.pem -CAkey Schluessel/vpn-cakey.pem&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/p&amp;gt;&lt;br /&gt;
		Zertifikatsanfrage kann gelöscht werden:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ rm Zertifikate/klient1csr.pem&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
		&amp;lt;h4&amp;gt;Zufallszahlen &amp;quot;Diffie-Hellman Parameter&amp;quot; erzeugen&amp;lt;/h4&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl dhparam -out dh1024.pem 1024&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Anzeigen von Zertifikaten&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Selbsterstelltes Zertifikat anzeigen&amp;lt;/h3&amp;gt;&lt;br /&gt;
Ein mit obiger Anleitung erzeugtes Zertifikat kann man sich wie folgt anzeigen lassen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ openssl x509 -in Zertifikate/klient1cert.pem -noout -text&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;https-Zertifikat anzeigen&amp;lt;/h3&amp;gt;&lt;br /&gt;
Das funktioniert übrigens auch mit TLS-Zertifikaten, die von https genutzt werden. Beispielsweise kann man sich das Zertifikat von [https://www.heise.de/ https://www.heise.de/] wie folgt anzeigen lassen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ openssl s_client -connect www.heise.de:https&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Bevor die Verbindung mangels Eingaben wieder abbricht, hohlt man sich den Inhalt von /&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ GET /&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In den angezeigten Informationen verbirgt sich das eigentliche Zertikiat im [http://de.wikipedia.org/wiki/X.509#Dateinamenserweiterungen_f.C3.BCr_Zertifikate PEM]-Format zwischen &amp;lt;i&amp;gt;-----BEGIN CERTIFICATE-----&amp;lt;/i&amp;gt; und &amp;lt;i&amp;gt;-----END CERTIFICATE-----&amp;lt;/i&amp;gt;. Um es für den Anwender lesbar zu machen makiert und kopiert man diesen Text (inkl. &amp;lt;i&amp;gt;-----BEGIN CERTIFICATE-----&amp;lt;/i&amp;gt; und &amp;lt;i&amp;gt;-----END CERTIFICATE-----&amp;lt;/i&amp;gt;) und speichert ihn in eine Datei:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ echo &amp;quot;&amp;lt;i&amp;gt;hier den in die Zwischenablage kopierten Zertifikatstext einfügen&amp;lt;/i&amp;gt;&amp;quot; &amp;gt; heise.pem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Nun lässt man sich das Zertifikiat von &amp;lt;i&amp;gt;openssl&amp;lt;/i&amp;gt; in Klartext umwandeln:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;openssl x509 -in heise.pem -noout -text&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln&amp;diff=5155</id>
		<title>Mac nix basteln</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln&amp;diff=5155"/>
		<updated>2012-04-06T20:22:53Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Es entstand die Idee, eine Gruppe ins Leben zu rufen, die sich auf einem &amp;quot;advanced beginner&amp;quot; level mit alltäglichen OSX / Linux / Unix Problemen und hands-on beschäftigen will.&lt;br /&gt;
&lt;br /&gt;
Treffen ist locker auf Dienstags terminiert.&lt;br /&gt;
&lt;br /&gt;
==Ideen/Themen Sammlung==&lt;br /&gt;
&lt;br /&gt;
* Aufsetzen eines Vservers für das Projekt&lt;br /&gt;
** [http://www.bin-bash.de/ Konsolengrundlagen]&lt;br /&gt;
** [[Mac_nix_basteln:Quelloffene_Programme_kompilieren|Quelloffene Programme kompilieren]]&lt;br /&gt;
** [http://www.spy-hill.com/~myers/help/apple/EnableRoot.html super-user-Rechte auf Mac OS X erlangen] (root ist standmäßig deaktiviert)&lt;br /&gt;
** [[Mac_nix_basteln:softlinks_hardlinks_alias|soft links, hard links &amp;amp; alias]]&lt;br /&gt;
** [[Mac_nix_basteln:Benutzer_umbenennen|Benutzer umbenennen]]&lt;br /&gt;
** [[Mac_nix_basteln:FTPServer|FTP Server]]&lt;br /&gt;
** [[Mac_nix_basteln:talk|talk]]&lt;br /&gt;
** [[Mac_nix_basteln:SMIME|S/MIME]]&lt;br /&gt;
** [[Mac_nix_basteln:Krypto_Grundlagen|Krypto Grundlagen]]&lt;br /&gt;
** [[Mac_nix_basteln:OpenSSL|OpenSSL]]&lt;br /&gt;
** [[Mac_nix_basteln:OpenVPN|OpenVPN]]&lt;br /&gt;
** [http://webdiary.com/2011/12/27/btmm/ SSH über die iCloud (mit Back to my Mac)]&lt;br /&gt;
** MailinglistenServer&lt;br /&gt;
** Webserver&lt;br /&gt;
** sinnvolles vergeben von Dateizugriffsrechten&lt;br /&gt;
** Hackintosh aufsetzen&lt;br /&gt;
** IPv4 vs IPv6&lt;br /&gt;
** Tor nutzen (z.B. um aus restriktiven Netzen ins freie Netz zu kommen)&lt;br /&gt;
** Postfix für die interne Kommunikation(Versand von Systemnachrichten) einrichten&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenSSL&amp;diff=5147</id>
		<title>Mac nix basteln:OpenSSL</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenSSL&amp;diff=5147"/>
		<updated>2012-04-06T12:18:34Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;OpenSSL&amp;lt;/h2&amp;gt;&lt;br /&gt;
[http://openssl.org/docs/apps/openssl.html OpenSSL] lässt sich für verschiedene Krypto-Operationen nutzen, so z.B. Erstellen und verwalten von verschiedenen Schlüsseltypen, Erstellen von Zertifikaten, verschlüsseln/entschlüsseln...&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Als Beispiel wird ein Satz Schlüssel zum Aufsetzen einer OpenVPN-Verbindung erzeugt:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
		&amp;lt;h4&amp;gt;Erzeugen einer CA&amp;lt;/h4&amp;gt;&lt;br /&gt;
		Verzeichnis für private Schlüssel und Zertifikate erstellen:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;&lt;br /&gt;
				$ mkdir Schluessel&amp;lt;br&amp;gt;&lt;br /&gt;
				$ mkdir Zertifikate&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;/code&amp;gt;&lt;br /&gt;
		Zertifikatsnummerierungszähler erstellen und Wert 01 reinschreiben:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ echo &amp;quot;01&amp;quot; &amp;gt; Zertifikate/vpn-ca.srl&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		4096bit langer, privater RSA-Schlüssel (PKCS#1 im PEM-Format) [oder Schlüsselpaar???] erstellen, welcher mit AES (256bit) geschützt ist:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl genrsa -aes256 -out Schluessel/vpn-cakey.pem 4096&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		10a gültiges (&amp;lt;code&amp;gt;-days 3650&amp;lt;/code&amp;gt;), selbstsigniertes X509-Zertifkat (nur für Test oder root CA)(&amp;lt;code&amp;gt;-x509&amp;lt;/code&amp;gt;) aus privatem Schlüssel erstellen (&amp;lt;code&amp;gt;-key Schluessel/vpn-cakey.pem&amp;lt;/code&amp;gt;) und nach vpn-ca.pem schreiben (&amp;lt;code&amp;gt;-out Zertifikate/vpn-ca.pem&amp;lt;/code&amp;gt;). Zertifikates Seriennummer auf 1 setzen (&amp;lt;code&amp;gt;set_serial 1&amp;lt;/code&amp;gt;) (default 0):&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl req -new -x509 -days 3650 -key Schluessel/vpn-cakey.pem -out Zertifikate/vpn-ca.pem -set_serial 1&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;p&amp;gt;&lt;br /&gt;
		&amp;lt;i&amp;gt;&#039;&#039;&#039;Alternativ&#039;&#039;&#039;&amp;lt;/i&amp;gt;, die beiden letzten Befehle in einem: Allerdings kann hier nicht AES256 als Verschlüsselung des privaten Schlüssels (jedenfalls ist mir kein entsprechender Parameter bekannt) - stattdessen wird standardmäßig DES3 gewählt:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl req -x509 -days 3650 -newkey rsa:4096 -keyout Schluessel/vpn-cakey.pem -out Zertifikate/vpn-ca.pem -set_serial 1&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/p&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
		&amp;lt;h4&amp;gt;Erzeugen des server-Schlüssels&amp;lt;/h4&amp;gt;&lt;br /&gt;
		4096bit RSA-Serverschlüssel ohne Kennwort (&amp;lt;code&amp;gt;-nodes&amp;lt;/code&amp;gt;) erstellen (&amp;lt;code&amp;gt;-newkey rsa:4096 -keyout Schluessel/serverkey.pem&amp;lt;/code&amp;gt;) &amp;amp;amp; Anfrage für ein 10a gültiges Zertifikat für diesen Schlüssel erstellen (&amp;lt;code&amp;gt;req -out Zertifikate/servercsr.pem -days 3650&amp;lt;/code&amp;gt;):&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl req -out Zertifikate/servercsr.pem -days 3650 -newkey rsa:4096 -keyout Schluessel/serverkey.pem -nodes&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;p&amp;gt;&lt;br /&gt;
			10 gültiges X.509 Serverzertifikat aus Zertifikatsanfrage erstellen (&amp;lt;code&amp;gt;x509 -req -in certs/servercsr.pem -out certs/servercert.pem -days 3650&amp;lt;/code&amp;gt;), von der root CA signieren (&amp;lt;code&amp;gt;-CA vpn-ca.pem -CAkey private/vpn-cakey.pem&amp;lt;/code&amp;gt;). Dabei wird &#039;&#039;vpn-ca.srl&#039;&#039; automatisch hoch gezählt:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ openssl x509 -req -in Zertifikate/servercsr.pem -out Zertifikate/servercert.pem -days 3650 -CA Zertifikate/vpn-ca.pem -CAkey Schluessel/vpn-cakey.pem&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/p&amp;gt;&lt;br /&gt;
		Zertifikatsanfrage kann gelöscht werden:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ rm certs/servercsr.pem&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
		&amp;lt;h4&amp;gt;Erzeugen eines Klienten-Schlüssels&amp;lt;/h4&amp;gt;&lt;br /&gt;
		Klienten-Schlüssel erstellen &amp;amp;amp; Zertifikatsanfrage für Klienten-Schlüssel:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl req -out Zertifikate/klient1csr.pem -days 3650 -newkey rsa:4096 -keyout Schluessel/klient1key.pem -nodes&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;p&amp;gt;&lt;br /&gt;
			Clientzertifikat aus Zertifikatsanfrage erstellen:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ openssl x509 -req -in Zertifikate/klient1csr.pem -out Zertifikate/klient1cert.pem -days 3650 -CA Zertifikate/vpn-ca.pem -CAkey Schluessel/vpn-cakey.pem&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/p&amp;gt;&lt;br /&gt;
		Zertifikatsanfrage kann gelöscht werden:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ rm certs/klient1csr.pem&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
		&amp;lt;h4&amp;gt;Zufallszahlen &amp;quot;Diffie-Hellman Parameter&amp;quot; erzeugen&amp;lt;/h4&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl dhparam -out dh1024.pem 1024&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Anzeigen von Zertifikaten&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ openssl x509 -in certs/klientcert.pem -noout -text&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenSSL&amp;diff=5024</id>
		<title>Mac nix basteln:OpenSSL</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenSSL&amp;diff=5024"/>
		<updated>2012-04-03T18:35:45Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;OpenSSL&amp;lt;/h2&amp;gt;&lt;br /&gt;
[http://openssl.org/docs/apps/openssl.html OpenSSL] lässt sich für verschiedene Krypto-Operationen nutzen, so z.B. Erstellen und verwalten von verschiedenen Schlüsseltypen, Erstellen von Zertifikaten, verschlüsseln/entschlüsseln...&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Als Beispiel wird ein Satz Schlüssel zum Aufsetzen einer OpenVPN-Verbindung erzeugt:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
		&amp;lt;h4&amp;gt;Erzeugen einer CA&amp;lt;/h4&amp;gt;&lt;br /&gt;
		Zertifikatsnummerierungszähler erstellen und Wert 01 reinschreiben:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ echo &amp;quot;01&amp;quot; &amp;gt; vpn-ca.srl&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		Verzeichnis für private Schlüssel erstellen:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ mkdir private&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		4096bit langer, privater RSA-Schlüssel (PKCS#1 im PEM-Format) [oder Schlüsselpaar???] erstellen, welcher mit AES (256bit) geschützt ist:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl genrsa -aes256 -out private/vpn-cakey.pem 4096&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		10a gültiges (&amp;lt;code&amp;gt;-days 3650&amp;lt;/code&amp;gt;), selbstsigniertes X509-Zertifkat (nur für Test oder root CA)(&amp;lt;code&amp;gt;-x509&amp;lt;/code&amp;gt;) aus privatem Schlüssel erstellen (&amp;lt;code&amp;gt;-key private/vpn-cakey.pem&amp;lt;/code&amp;gt;) und nach vpn-ca.pem schreiben (&amp;lt;code&amp;gt;-out vpn-ca.pem&amp;lt;/code&amp;gt;). Zertifikates Seriennummer auf 1 setzen (&amp;lt;code&amp;gt;set_serial 1&amp;lt;/code&amp;gt;) (default 0):&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl req -new -x509 -days 3650 -key private/vpn-cakey.pem -out vpn-ca.pem -set_serial 1&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;p&amp;gt;&lt;br /&gt;
		&amp;lt;i&amp;gt;&#039;&#039;&#039;Alternativ&#039;&#039;&#039;&amp;lt;/i&amp;gt;, die beiden letzten Befehle in einem: Allerdings kann hier nicht AES256 als Verschlüsselung des privaten Schlüssels (jedenfalls ist mir kein entsprechender Parameter bekannt) - stattdessen wird standardmäßig DES3 gewählt:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl req -x509 -days 3650 -newkey rsa:4096 -keyout private/vpn-cakey.pem -out vpn-ca.pem -set_serial 1&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/p&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
		&amp;lt;h4&amp;gt;Erzeugen des server-Schlüssels&amp;lt;/h4&amp;gt;&lt;br /&gt;
		4096bit RSA-Serverschlüssel ohne Kennwort (&amp;lt;code&amp;gt;-nodes&amp;lt;/code&amp;gt;) erstellen (&amp;lt;code&amp;gt;-newkey rsa:4096 -keyout private/serverkey.pem&amp;lt;/code&amp;gt;) &amp;amp;amp; Anfrage für ein 10a gültiges Zertifikat für diesen Schlüssel erstellen (&amp;lt;code&amp;gt;req -out certs/servercsr.pem -days 3650&amp;lt;/code&amp;gt;):&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl req -out certs/servercsr.pem -days 3650 -newkey rsa:4096 -keyout private/serverkey.pem -nodes&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;p&amp;gt;&lt;br /&gt;
			10 gültiges X.509 Serverzertifikat aus Zertifikatsanfrage erstellen (&amp;lt;code&amp;gt;x509 -req -in certs/servercsr.pem -out certs/servercert.pem -days 3650&amp;lt;/code&amp;gt;), von der root CA signieren (&amp;lt;code&amp;gt;-CA vpn-ca.pem -CAkey private/vpn-cakey.pem&amp;lt;/code&amp;gt;). Dabei wird &#039;&#039;vpn-ca.srl&#039;&#039; automatisch hoch gezählt:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ openssl x509 -req -in certs/servercsr.pem -out certs/servercert.pem -days 3650 -CA vpn-ca.pem -CAkey private/vpn-cakey.pem&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/p&amp;gt;&lt;br /&gt;
		Zertifikatsanfrage kann gelöscht werden:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ rm certs/servercsr.pem&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
		&amp;lt;h4&amp;gt;Erzeugen eines Klienten-Schlüssels&amp;lt;/h4&amp;gt;&lt;br /&gt;
		Klienten-Schlüssel erstellen &amp;amp;amp; Zertifikatsanfrage für Klienten-Schlüssel:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl req -out certs/klient1csr.pem -days 3650 -newkey rsa:4096 -keyout private/klient1key.pem -nodes&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;p&amp;gt;&lt;br /&gt;
			Clientzertifikat aus Zertifikatsanfrage erstellen:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ openssl x509 -req -in certs/klient1csr.pem -out certs/klientcert.pem -days 3650 -CA vpn-ca.pem -CAkey private/vpn-cakey.pem&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/p&amp;gt;&lt;br /&gt;
		Zertifikatsanfrage kann gelöscht werden:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ rm certs/klient1csr.pem&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
		&amp;lt;h4&amp;gt;Zufallszahlen &amp;quot;Diffie-Hellman Parameter&amp;quot; erzeugen&amp;lt;/h4&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl dhparam -out dh1024.pem 1024&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Anzeigen von Zertifikaten&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ openssl x509 -in certs/klientcert.pem -noout -text&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenSSL&amp;diff=5023</id>
		<title>Mac nix basteln:OpenSSL</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenSSL&amp;diff=5023"/>
		<updated>2012-04-03T17:28:52Z</updated>

		<summary type="html">&lt;p&gt;Andre: Created page with &amp;quot;&amp;lt;h2&amp;gt;OpenSSL&amp;lt;/h2&amp;gt; [http://openssl.org/docs/apps/openssl.html OpenSSL] lässt sich für verschiedene Krypto-Operationen nutzen, so z.B. Erstellen und verwalten von verschiedenen Sc...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;OpenSSL&amp;lt;/h2&amp;gt;&lt;br /&gt;
[http://openssl.org/docs/apps/openssl.html OpenSSL] lässt sich für verschiedene Krypto-Operationen nutzen, so z.B. Erstellen und verwalten von verschiedenen Schlüsseltypen, Erstellen von Zertifikaten, verschlüsseln/entschlüsseln...&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Als Beispiel wird ein Satz Schlüssel zum Aufsetzen einer OpenVPN-Verbindung erzeugt:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
		&amp;lt;h4&amp;gt;Erzeugen einer CA&amp;lt;/h4&amp;gt;&lt;br /&gt;
		Zertifikatsnummerierungszähler erstellen und Wert 01 reinschreiben:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ echo &amp;quot;01&amp;quot; &amp;gt; vpn-ca.srl&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		Verzeichnis für private Schlüssel erstellen:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ mkdir private&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		4096bit langer, privater RSA-Schlüssel (PKCS#1 im PEM-Format) [oder Schlüsselpaar???] erstellen, welcher mit AES (256bit) geschützt ist:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl genrsa -aes256 -out private/vpn-cakey.pem 4096&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		10a gültiges (&amp;lt;code&amp;gt;-days 3650&amp;lt;/code&amp;gt;), selbstsigniertes X509-Zertifkat (nur für Test oder root CA)(&amp;lt;code&amp;gt;-x509&amp;lt;/code&amp;gt;) aus privatem Schlüssel erstellen (&amp;lt;code&amp;gt;-key private/vpn-cakey.pem&amp;lt;/code&amp;gt;) und nach vpn-ca.pem schreiben (&amp;lt;code&amp;gt;-out vpn-ca.pem&amp;lt;/code&amp;gt;). Zertifikates Seriennummer auf 1 setzen (&amp;lt;code&amp;gt;set_serial 1&amp;lt;/code&amp;gt;) (default 0):&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl req -new -x509 -days 3650 -key private/vpn-cakey.pem -out vpn-ca.pem -set_serial 1&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;p&amp;gt;&lt;br /&gt;
		&amp;lt;i&amp;gt;&#039;&#039;&#039;Alternativ&#039;&#039;&#039;&amp;lt;/i&amp;gt;, die beiden letzten Befehle in einem: Allerdings kann hier nicht AES256 als Verschlüsselung des privaten Schlüssels (jedenfalls ist mir kein entsprechender Parameter bekannt) - stattdessen wird standardmäßig DES3 gewählt:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl req -x509 -days 3650 -newkey rsa:4096 -keyout private/vpn-cakey.pem -out vpn-ca.pem -set_serial 1&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/p&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
		&amp;lt;h4&amp;gt;Erzeugen des server-Schlüssels&amp;lt;/h4&amp;gt;&lt;br /&gt;
		1024bit RSA-Serverschlüssel ohne Kennwort (&amp;lt;code&amp;gt;-nodes&amp;lt;/code&amp;gt;) erstellen (&amp;lt;code&amp;gt;-newkey rsa:1024 -keyout private/serverkey.pem&amp;lt;/code&amp;gt;) &amp;amp;amp; Anfrage für ein 10a gültiges Zertifikat für diesen Schlüssel erstellen (&amp;lt;code&amp;gt;req -out certs/servercsr.pem -days 3650&amp;lt;/code&amp;gt;):&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl req -out certs/servercsr.pem -days 3650 -newkey rsa:1024 -keyout private/serverkey.pem -nodes&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;p&amp;gt;&lt;br /&gt;
			10 gültiges X.509 Serverzertifikat aus Zertifikatsanfrage erstellen (&amp;lt;code&amp;gt;x509 -req -in certs/servercsr.pem -out certs/servercert.pem -days 3650&amp;lt;/code&amp;gt;), von der root CA signieren (&amp;lt;code&amp;gt;-CA vpn-ca.pem -CAkey private/vpn-cakey.pem&amp;lt;/code&amp;gt;). Dabei wird &#039;&#039;vpn-ca.srl&#039;&#039; automatisch hoch gezählt:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ openssl x509 -req -in certs/servercsr.pem -out certs/servercert.pem -days 3650 -CA vpn-ca.pem -CAkey private/vpn-cakey.pem&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/p&amp;gt;&lt;br /&gt;
		Zertifikatsanfrage kann gelöscht werden:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ rm certs/servercsr.pem&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
		&amp;lt;h4&amp;gt;Erzeugen eines Klienten-Schlüssels&amp;lt;/h4&amp;gt;&lt;br /&gt;
		Klienten-Schlüssel erstellen &amp;amp;amp; Zertifikatsanfrage für Klienten-Schlüssel:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl req -new -newkey rsa:1024 -out certs/klient1.pem -nodes -keyout private/klient1.pem -days 3650&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;p&amp;gt;&lt;br /&gt;
			Clientzertifikat aus Zertifikatsanfrage erstellen:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ openssl x509 -req -in certs/klient1.pem -out certs/klient1.pem -CA vpn-ca.pem -CAkey private/vpn-cakey.pem -CAserial serial -days 3650&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/p&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
		&amp;lt;h4&amp;gt;Zufallszahlen &amp;quot;Diffie-Hellman Parameter&amp;quot; erzeugen&amp;lt;/h4&amp;gt;&lt;br /&gt;
		&amp;lt;code&amp;gt;$ openssl dhparam -out dh2048.pem 2048&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln&amp;diff=5022</id>
		<title>Mac nix basteln</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln&amp;diff=5022"/>
		<updated>2012-04-03T17:08:40Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Es entstand die Idee, eine Gruppe ins Leben zu rufen, die sich auf einem &amp;quot;advanced beginner&amp;quot; level mit alltäglichen OSX / Linux / Unix Problemen und hands-on beschäftigen will.&lt;br /&gt;
&lt;br /&gt;
Treffen ist locker auf Dienstags terminiert.&lt;br /&gt;
&lt;br /&gt;
==Ideen/Themen Sammlung==&lt;br /&gt;
&lt;br /&gt;
* Aufsetzen eines Vservers für das Projekt&lt;br /&gt;
** [http://www.bin-bash.de/ Konsolengrundlagen]&lt;br /&gt;
** [[Mac_nix_basteln:Quelloffene_Programme_kompilieren|Quelloffene Programme kompilieren]]&lt;br /&gt;
** [http://www.spy-hill.com/~myers/help/apple/EnableRoot.html super-user-Rechte auf Mac OS X erlangen] (root ist standmäßig deaktiviert)&lt;br /&gt;
** [[Mac_nix_basteln:softlinks_hardlinks_alias|soft links, hard links &amp;amp; alias]]&lt;br /&gt;
** [[Mac_nix_basteln:Benutzer_umbenennen|Benutzer umbenennen]]&lt;br /&gt;
** [[Mac_nix_basteln:FTPServer|FTP Server]]&lt;br /&gt;
** [[Mac_nix_basteln:talk|talk]]&lt;br /&gt;
** [[Mac_nix_basteln:SMIME|S/MIME]]&lt;br /&gt;
** [[Mac_nix_basteln:Krypto_Grundlagen|Krypto Grundlagen]]&lt;br /&gt;
** [[Mac_nix_basteln:OpenSSL|OpenSSL]]&lt;br /&gt;
** [[Mac_nix_basteln:OpenVPN|OpenVPN]]&lt;br /&gt;
** MailinglistenServer&lt;br /&gt;
** Webserver&lt;br /&gt;
** sinnvolles vergeben von Dateizugriffsrechten&lt;br /&gt;
** Hackintosh aufsetzen&lt;br /&gt;
** IPv4 vs IPv6&lt;br /&gt;
** Tor nutzen (z.B. um aus restriktiven Netzen ins freie Netz zu kommen)&lt;br /&gt;
** Postfix für die interne Kommunikation(Versand von Systemnachrichten) einrichten&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:Krypto_Grundlagen&amp;diff=4537</id>
		<title>Mac nix basteln:Krypto Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:Krypto_Grundlagen&amp;diff=4537"/>
		<updated>2012-03-15T17:52:41Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;Verschlüsselungsmethoden&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Hash &amp;amp; salt&amp;lt;/h3&amp;gt;&lt;br /&gt;
Ein [http://de.wikipedia.org/wiki/Kryptologische_Hashfunktion hash] ist eine Funktion ähnlich einer [http://de.wikipedia.org/wiki/Pr%C3%BCfsumme Prüfsumme], welche unabhängig der Eingabe einen Wert mit konstanter Zeichenzahl liefert und zusätzlich die Eigenschaft besitzt nicht umkehrbar zu sein (Bild 1). Sprich, es ist nicht möglich aus dem Ergebnis der hash-Funktion den Eingabewert zurückzurechnen. Es ist extrem unwahrscheinlich, dass zwei unterschiedliche Eingaben zum gleichen hash führen. Außerdem, führt schon das Ändern eines einzelnen Zeichens der Quelle zu einem drastisch anderem hash. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[File:hash.gif|hash]]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Bild 1: Diagramm hash-Funktion&#039;&#039;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Beispiel: Es spielt keine Rolle, ob dieser Text ge-hash-t wird, oder eine ganze DVD. Das Ergebnis wird immer eine Zeichenkette einer definierten Länge sein. Aus diesem Ergebnis lässt sich dann weder der Inhalt der DVD rekonstruieren noch dieser Text.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
Beispiele für hash-Funktion sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Md5 md5] (gilt als geknackt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Secure_Hash_Algorithm sha]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Salt&amp;lt;/h4&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/Salt_%28Kryptologie%29 Salt]: Um die Sicherheit bei hashes zu weiter zu erhöhen, werden Zufallszahlen vor den zu-hash-enden Wert gehängt. Denn Sinn kann man nicht besser zusammenfassen als Wikipedia: &amp;lt;i&amp;gt;Hashfunktionen, wie z. B. MD5 oder SHA bilden einen bestimmten Klartext auf einen bestimmten Hash-Wert ab. So ist sofort erkennbar, welche Benutzer dasselbe Kennwort gewählt haben, da die Hashwerte identisch sind. Zudem muss bei Wörterbuch- und Brute-Force-Angriffen jedes zu prüfende mögliche Passwort nur ein einziges Mal berechnet (gehasht) werden, und dieser Wert muss anschließend nur mit einer Liste von vorliegenden Passwort-Hashes verglichen werden.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Symmetrische Verschlüsselung&amp;lt;/h3&amp;gt;&lt;br /&gt;
Bei der symmetrischen Verschlüsselung werden die Daten (oder der Text) mit Hilfe eines einzigen, gemeinsamen Schlüssels verschlüsselt und entschlüsselt (Bild 2). Das Verfahren funktioniert also mit dem selben Schlüssel in beide Richtungen. Ist dieser aufgeflogen, liegt die gesamte Kommunikation offen. Vorteil ist allerdings der relativ geringe Rechenaufwand (es ist schnell) und dass diese Verfahren sogar von i5 &amp;amp;amp; i7 CPUs in hardware unterstützt werden (noch schneller). Die Sicherheit hängt zudem auch von der Schlüssellänge ab. 256b gelten z.Z. als sicher.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[File:sym_verschluesselung.gif|Symmetrische Verschlüsselung]]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Bild 2: Diagramm symmetrischer Verschlüsselung&#039;&#039;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
Beispiele für symmetrische Verschlüsselungsverfahren sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/3DES 3DES] (gilt als geknackt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Advanced_Encryption_Standard AES]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Blowfish blowfish]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Diffie-Hellman&amp;lt;/h3&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/Diffie-Hellman Diffie-Hellman] ist genaugenommen weder eine Verschlüsselungsmethode, noch deren Anwendung. Es steht dazwischen: Um bei einer symmetrische Verschlüsselung nicht gezwungen zu sein den gemeinsamen Schlüssel irgendwie austauschen zu müssen, lässt man es einfach. Stattdessen hat man eine Methode gefunden, wie dieser Schlüssel von beiden Seiten durch Kommunikation bestimmt werden kann ohne, dass er jemals übertragen wird. Ist er bestimmt worden, kann die symmetrische Verschlüsselung erfolgen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Asymmetrische Verschlüsselung&amp;lt;/h3&amp;gt;&lt;br /&gt;
Bei der asymmetrischen Verschlüsselung werden Schlüssel immer in Paaren aus privatem und öffentlichem Schlüssel erstellt. Daten werden mit Hilfe des öffentlichen Schlüssels des Empfängers verschlüsselt, können aber nur mit dem zugehörigen privaten Schlüssel wieder entschlüsselt werden (Bild 3). &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[File:asym_verschluesselung.gif|Asymmetrische Verschlüsselung]]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Bild 3: Diagramm asymmetrischer Verschlüsselung&#039;&#039;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Hier muss also nur der private Schlüssel geheim gehalten werden, während der öffentlich beliebig verteilt werden kann (und soll). Vorteil des Verfahrens ist: vor Beginn der Kommunikation muss kein geheimer (privater) Schlüssel ausgetauscht werden (wie beim symmetrischen Verfahren). Allerdings ist das Verfahren auch rechenintensiver und nutzt größere Schlüssel. 2048b gelten z.Z. als sicher.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
Beispiele für asymmetrische Verschlüsselungsverfahren sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Digital_Signature_Algorithm DSA] (gilt als geknackt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/RSA-Kryptosystem RSA]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Anwendungen der Methoden&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Abspeichern von Kennwörtern&amp;lt;/h3&amp;gt;&lt;br /&gt;
Vernünftige Programme speichern Kennwörter nie im Klartext sondern nur deren [[#Hash_.26_salt|hashes]], damit bei unbefungtem Zugriff die Kennwörter nicht bekannt werden. Zusätzlich sollten sie noch gesalzen sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Kennwort geschützte Dateien...&amp;lt;/h3&amp;gt;&lt;br /&gt;
...sind ein Beispiel für [[#Symmetrische_Verschlüsselung|symmetrische]] Verschlüsselung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Digitale Untschrift&amp;lt;/h3&amp;gt;&lt;br /&gt;
Eine [http://de.wikipedia.org/wiki/Digitale_Unterschrift#Technische_Umsetzung digitale Untschrift] ist eine Kombination aus [[#Hash_.26_salt|hash]] &amp;amp;amp; [[#Asymmetrische_Verschlüsselung|asymmetrischer Verschlüsselung]]. Über die zu unterschreibenden Daten wird zunächst ein hash gebildet, der dann mit dem privaten Schlüssel des Absenders verschlüsselt wird und nur mit dem zugehörigen öffentlichen Schlüssel des Absenders (der mitgeschickt wird) wieder entschlüsselt werden kann (Bild 4). Die asymmetrische Verschlüsselung läuft also genau entgegengesetzt wie oben beschrieben. Somit wird sichergestellt:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Dass die Quelle, die des beiligendem öffentlichen Schlüssels ist (nur der private Schlüssel hat den hash so verschlüsseln können, dass der öffentliche Schlüssel den hash entschlüsselt. Sonst wäre ein anderer hash rausgekommen, der nicht zur unterschriebenen Nachricht passt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Die Nachricht wurde unterwegs nicht verändert. Wäre sie verändert worden, würde ein hash über die Nachricht nicht dem entschlüsselten hash-Wert entsprechen&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[File:digi_unterschrift.gif|Digitale Unterschrift]]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Bild 4: Diagramm digitaler Unterschrift&#039;&#039;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
Man hätte die Sache mit dem hash auch weg lassen können und die komplette Nachricht asymmetrisch verschlüsseln. Dies würde allerdings zur Folge haben, dass die Nachricht nicht nur Unterschrieben, sondern auch komplett verschlüsselt ist (statt nur den hash zu verschlüsseln) - was wiederum zu Folge hat, dass jemand ohne Krypto (dem auch die Unterschrift egal ist), die Nachricht nicht lesen kann. Des Weiteren würde es bei größeren Daten sehr rechenintensiv werden (lange dauern). Es ist viel schneller einen hash zu berechnen (konstante, vergleichen mit den eigentlichen Daten idR. kurze Länge) und diesen dann zu verschlüsseln.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Strompostverschlüsselung&amp;lt;/h3&amp;gt;&lt;br /&gt;
Hier wird [[#Symmetrische_Verschlüsselung|symmetrische]]  &amp;amp; [[#Asymmetrische_Verschlüsselung|asymmetrischer Verschlüsselung]] kombiniert. Der Inhalt der Nachricht wird aus Geschwindigkeitgründen mit einem für diese Nachricht speziell erzeugten Schlüssel (Sitzungsschlüssel) symmetrisch Verschlüsselt. Anschliessend wird dieser Schlüssel (welcher idR deutlich kürzer als die eigentlich Nachricht/Nutzlast sein wird) asymmetrisch verschlüsselt und mit der symmetrisch verschlüsselten Nachricht versandt.&amp;lt;br&amp;gt;&lt;br /&gt;
Man kann den Sitzungsschlüssel auch gegen mehrere öffentliche Schlüssel verschlüsseln (z.B. [[Mac_nix_basteln:SMIME|S/MIME]]), anhängen und dann mit den zugehörigen privaten Schlüsseln wieder entschlüsseln. Dies erlaubt dann beispielsweise, dass man Nachrichten, die man verschickt hat auch selbt noch einmal wieder lesen kann (denn man hat ja nur seinen eigenen privaten Schlüssel, nicht aber den des Empfängers), oder dass man für mehrere Empfänger verschlüsseln kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;ssh&amp;lt;/h3&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/Ssh ssh] ist ein Beispiel für eine Kombination aus [[#Hash_.26_salt|hash]], [[#Asymmetrische_Verschlüsselung|asymmetrischer]] und [[#Symmetrische_Verschlüsselung|symmetrischer]]  Verschlüsselung. Beim ersten Verbindungsaufbau bekommt man den hash des öffentlichen Schlüssels des kontaktierten Rechners gezeigt, um zu fragen, ob man diesem Vertraut. Man bekommt den hash gezeigt, da die vergleichsweise kurze Zeichenfolge für einen Menschen leichter zu vergleichen ist, als der eigentliche lange öffentliche Schlüssel. Dann erfolgt der asymmetrische Verbindungsaufbau. Für die Dauer dieser einen Verbindung wird darüber ein Schlüssel für eine symmetrische Verschlüsselung erzeugt. Und über diese symmetrische Verschlüsselung läuft dann für diese Sitzung der eigentliche Datentransfer. Der Vorteil besteht wieder in der Geschwindigkeit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;X.509 Zertifikate&amp;lt;/h3&amp;gt;&lt;br /&gt;
Diese Zertifikate sind vergleichbar mit einem Ausweis. Sie enthalten Daten wie:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Name (bei email-Zertifikaten die Adresse(n), bei server-Zertifikaten die Domäne(n))&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Aussteller&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Seriennummer&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Gültigkeitsbeginn &amp;amp;amp; -ende&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Inhabername &amp;amp;amp; Adresse&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Verwendungszweck des Zertifikats&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;...&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Der gesamte Zertifikatstext ist dann [[#Digitale_Untschrift|unterschrieben]] mit dem privaten Schlüssel des Ausstellers, der sog. Certification Authority (CA).&lt;br /&gt;
&lt;br /&gt;
Anwendungsbeispiele für solche Zertifikate sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Https https]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[[Mac_nix_basteln:SMIME|S/MIME]]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;GPG/PGP&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Klare Nachteile sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Man muss den CAs trauen und die Vertrauenswürdigkeit vieler in den Browsern &amp;amp;amp; email-Programmen voreingestellten CAs sind zumindest fragwürdig&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Man muss die öffentlichen Schlüssel der CAs haben&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Mit ausreichend Geld kann man eine sub-CA einer CA werden. Diese kann dann wieder beliebig Schlüssel ausstellen, die nie jemand geprüft haben muss&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;OpenVPN&amp;lt;/h3&amp;gt;&lt;br /&gt;
Je nach Konfiguration kann man sich mit OpenSSL für seine [[Mac_nix_basteln:OpenVPN|OpenVPN]]-Verbindung [[#X.509_Zertifikate|X.509 Zertifikate]] selbst erzeugen. So kann man sich eine Verbindung aufbauen indem man sich selbst ein Wurzelzertifikat macht (eine CA), Zertifikate für server und Klient mit zugehörigen privaten Schlüsseln sowie ein [[#Diffie-Hellman|Diffie-Hellmann]].&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:Krypto_Grundlagen&amp;diff=4536</id>
		<title>Mac nix basteln:Krypto Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:Krypto_Grundlagen&amp;diff=4536"/>
		<updated>2012-03-15T17:51:27Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;Verschlüsselungsmethoden&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Hash &amp;amp; salt&amp;lt;/h3&amp;gt;&lt;br /&gt;
Ein [http://de.wikipedia.org/wiki/Kryptologische_Hashfunktion hash] ist eine Funktion ähnlich einer [http://de.wikipedia.org/wiki/Pr%C3%BCfsumme Prüfsumme], welche unabhängig der Eingabe einen Wert mit konstanter Zeichenzahl liefert und zusätzlich die Eigenschaft besitzt nicht umkehrbar zu sein (Bild 1). Sprich, es ist nicht möglich aus dem Ergebnis der hash-Funktion den Eingabewert zurückzurechnen. Es ist extrem unwahrscheinlich, dass zwei unterschiedliche Eingaben zum gleichen hash führen. Außerdem, führt schon das Ändern eines einzelnen Zeichens der Quelle zu einem drastisch anderem hash. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[File:hash.gif|hash]]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Bild 1: Diagramm hash-Funktion&#039;&#039;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Beispiel: Es spielt keine Rolle, ob dieser Text ge-hash-t wird, oder eine ganze DVD. Das Ergebnis wird immer eine Zeichenkette einer definierten Länge sein. Aus diesem Ergebnis lässt sich dann weder der Inhalt der DVD rekonstruieren noch dieser Text.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
Beispiele für hash-Funktion sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Md5 md5] (gilt als geknackt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Secure_Hash_Algorithm sha]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Salt&amp;lt;/h4&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/Salt_%28Kryptologie%29 Salt]: Um die Sicherheit bei hashes zu weiter zu erhöhen, werden Zufallszahlen vor den zu-hash-enden Wert gehängt. Denn Sinn kann man nicht besser zusammenfassen als Wikipedia: &amp;lt;i&amp;gt;Hashfunktionen, wie z. B. MD5 oder SHA bilden einen bestimmten Klartext auf einen bestimmten Hash-Wert ab. So ist sofort erkennbar, welche Benutzer dasselbe Kennwort gewählt haben, da die Hashwerte identisch sind. Zudem muss bei Wörterbuch- und Brute-Force-Angriffen jedes zu prüfende mögliche Passwort nur ein einziges Mal berechnet (gehasht) werden, und dieser Wert muss anschließend nur mit einer Liste von vorliegenden Passwort-Hashes verglichen werden.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Symmetrische Verschlüsselung&amp;lt;/h3&amp;gt;&lt;br /&gt;
Bei der symmetrischen Verschlüsselung werden die Daten (oder der Text) mit Hilfe eines einzigen, gemeinsamen Schlüssels verschlüsselt und entschlüsselt (Bild 2). Das Verfahren funktioniert also mit dem selben Schlüssel in beide Richtungen. Ist dieser aufgeflogen, liegt die gesamte Kommunikation offen. Vorteil ist allerdings der relativ geringe Rechenaufwand (es ist schnell) und dass diese Verfahren sogar von i5 &amp;amp;amp; i7 CPUs in hardware unterstützt werden (noch schneller). Die Sicherheit hängt zudem auch von der Schlüssellänge ab. 256b gelten z.Z. als sicher.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[File:sym_verschluesselung.gif|Symmetrische Verschlüsselung]]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Bild 2: Diagramm symmetrischer Verschlüsselung&#039;&#039;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
Beispiele für symmetrische Verschlüsselungsverfahren sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/3DES 3DES] (gilt als geknackt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Advanced_Encryption_Standard AES]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Blowfish blowfish]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Diffie-Hellman&amp;lt;/h3&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/Diffie-Hellman Diffie-Hellman] ist genaugenommen weder eine Verschlüsselungsmethode, noch deren Anwendung. Es steht dazwischen: Um bei einer symmetrische Verschlüsselung nicht gezwungen zu sein den gemeinsamen Schlüssel irgendwie austauschen zu müssen, lässt man es einfach. Stattdessen hat man eine Methode gefunden, wie dieser Schlüssel von beiden Seiten durch Kommunikation bestimmt werden kann ohne, dass er jemals übertragen wird. Ist er bestimmt worden, kann die symmetrische Verschlüsselung erfolgen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Asymmetrische Verschlüsselung&amp;lt;/h3&amp;gt;&lt;br /&gt;
Bei der asymmetrischen Verschlüsselung werden Schlüssel immer in Paaren aus privatem und öffentlichem Schlüssel erstellt. Daten werden mit Hilfe des öffentlichen Schlüssels des Empfängers verschlüsselt, können aber nur mit dem zugehörigen privaten Schlüssel wieder entschlüsselt werden (Bild 3). &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[File:asym_verschluesselung.gif|Asymmetrische Verschlüsselung]]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Bild 3: Diagramm asymmetrischer Verschlüsselung&#039;&#039;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Hier muss also nur der private Schlüssel geheim gehalten werden, während der öffentlich beliebig verteilt werden kann (und soll). Vorteil des Verfahrens ist: vor Beginn der Kommunikation muss kein geheimer (privater) Schlüssel ausgetauscht werden (wie beim symmetrischen Verfahren). Allerdings ist das Verfahren auch rechenintensiver und nutzt größere Schlüssel. 2048b gelten z.Z. als sicher.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
Beispiele für asymmetrische Verschlüsselungsverfahren sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Digital_Signature_Algorithm DSA] (gilt als geknackt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/RSA-Kryptosystem RSA]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Anwendungen der Methoden&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Abspeichern von Kennwörtern&amp;lt;/h3&amp;gt;&lt;br /&gt;
Vernünftige Programme speichern Kennwörter nie im Klartext sondern nur deren [[#Hash_.26_salt|hashes]], damit bei unbefungtem Zugriff die Kennwörter nicht bekannt werden. Zusätzlich sollten sie noch gesalzen sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Kennwort geschützte Dateien...&amp;lt;/h3&amp;gt;&lt;br /&gt;
...sind ein Beispiel für [[#Symmetrische_Verschlüsselung|symmetrische]] Verschlüsselung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Digitale Untschrift&amp;lt;/h3&amp;gt;&lt;br /&gt;
Eine [http://de.wikipedia.org/wiki/Digitale_Unterschrift#Technische_Umsetzung digitale Untschrift] ist eine Kombination aus [[#Hash_.26_salt|hash]] &amp;amp;amp; [[#Asymmetrische_Verschlüsselung|asymmetrischer Verschlüsselung]]. Über die zu unterschreibenden Daten wird zunächst ein hash gebildet, der dann mit dem privaten Schlüssel des Absenders verschlüsselt wird und nur mit dem zugehörigen öffentlichen Schlüssel des Absenders (der mitgeschickt wird) wieder entschlüsselt werden kann (Bild 4). Die asymmetrische Verschlüsselung läuft also genau entgegengesetzt wie oben beschrieben. Somit wird sichergestellt:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Dass die Quelle, die des beiligendem öffentlichen Schlüssels ist (nur der private Schlüssel hat den hash so verschlüsseln können, dass der öffentliche Schlüssel den hash entschlüsselt. Sonst wäre ein anderer hash rausgekommen, der nicht zur unterschriebenen Nachricht passt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Die Nachricht wurde unterwegs nicht verändert. Wäre sie verändert worden, würde ein hash über die Nachricht nicht dem entschlüsselten hash-Wert entsprechen&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[File:digi_unterschrift.gif|Digitale Unterschrift]]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Bild 4: Diagramm digitaler Unterschrift&#039;&#039;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
Man hätte die Sache mit dem hash auch weg lassen können und die komplette Nachricht asymmetrisch verschlüsseln. Dies würde allerdings zur Folge haben, dass die Nachricht nicht nur Unterschrieben, sondern auch komplett verschlüsselt ist (statt nur den hash zu verschlüsseln) - was wiederum zu Folge hat, dass jemand ohne Krypto (dem auch die Unterschrift egal ist), die Nachricht nicht lesen kann. Des Weiteren würde es bei größeren Daten sehr rechenintensiv werden (lange dauern). Es ist viel schneller einen hash zu berechnen (konstante, vergleichen mit den eigentlichen Daten idR. kurze Länge) und diesen dann zu verschlüsseln.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Strompostverschlüsselung&amp;lt;/h3&amp;gt;&lt;br /&gt;
Hier wird [[#Symmetrische_Verschlüsselung|symmetrische]]  &amp;amp; [[#Asymmetrische_Verschlüsselung|asymmetrischer Verschlüsselung]] kombiniert. Der Inhalt der Nachricht wird aus Geschwindigkeitgründen mit einem für diese Nachricht speziell erzeugten Schlüssel (Sitzungsschlüssel) symmetrisch Verschlüsselt. Anschliessend wird dieser Schlüssel (welcher idR deutlich kürzer als die eigentlich Nachricht/Nutzlast sein wird) asymmetrisch verschlüsselt und mit der symmetrisch verschlüsselten Nachricht versandt.&amp;lt;br&amp;gt;&lt;br /&gt;
Man kann den Sitzungsschlüssel auch gegen mehrere öffentliche Schlüssel verschlüsseln (z.B. [[Mac_nix_basteln:SMIME|S/MIME]]), anhängen und dann mit den zugehörigen privaten Schlüsseln wieder entschlüsseln. Dies erlaubt dann beispielsweise, dass man Nachrichten, die man verschickt hat auch selbt noch einmal wieder lesen kann (denn man hat ja nur seinen eigenen privaten Schlüssel, nicht aber den des Empfängers), oder dass man für mehrere Empfänger verschlüsseln kann.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;ssh&amp;lt;/h3&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/Ssh ssh] ist ein Beispiel für eine Kombination aus [[#Hash_.26_salt|hash]], [[#Asymmetrische_Verschlüsselung|asymmetrischer]] und [[#Symmetrische_Verschlüsselung|symmetrischer]]  Verschlüsselung. Beim ersten Verbindungsaufbau bekommt man den hash des öffentlichen Schlüssels des kontaktierten Rechners gezeigt, um zu fragen, ob man diesem Vertraut. Man bekommt den hash gezeigt, da die vergleichsweise kurze Zeichenfolge für einen Menschen leichter zu vergleichen ist, als der eigentliche lange öffentliche Schlüssel. Dann erfolgt der asymmetrische Verbindungsaufbau. Für die Dauer dieser einen Verbindung wird darüber ein Schlüssel für eine symmetrische Verschlüsselung erzeugt. Und über diese symmetrische Verschlüsselung läuft dann für diese Sitzung der eigentliche Datentransfer. Der Vorteil besteht wieder in der Geschwindigkeit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;X.509 Zertifikate&amp;lt;/h3&amp;gt;&lt;br /&gt;
Diese Zertifikate sind vergleichbar mit einem Ausweis. Sie enthalten Daten wie:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Name (bei email-Zertifikaten die Adresse(n), bei server-Zertifikaten die Domäne(n))&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Aussteller&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Seriennummer&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Gültigkeitsbeginn &amp;amp;amp; -ende&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Inhabername &amp;amp;amp; Adresse&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Verwendungszweck des Zertifikats&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;...&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Der gesamte Zertifikatstext ist dann [[#Digitale_Untschrift|unterschrieben]] mit dem privaten Schlüssel des Ausstellers, der sog. Certification Authority (CA).&lt;br /&gt;
&lt;br /&gt;
Anwendungsbeispiele für solche Zertifikate sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Https https]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[[Mac_nix_basteln:SMIME|S/MIME]]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;GPG/PGP&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Klare Nachteile sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Man muss den CAs trauen und die Vertrauenswürdigkeit vieler in den Browsern &amp;amp;amp; email-Programmen voreingestellten CAs sind zumindest fragwürdig&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Man muss die öffentlichen Schlüssel der CAs haben&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Mit ausreichend Geld kann man eine sub-CA einer CA werden. Diese kann dann wieder beliebig Schlüssel ausstellen, die nie jemand geprüft haben muss&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;OpenVPN&amp;lt;/h3&amp;gt;&lt;br /&gt;
Je nach Konfiguration kann man sich mit OpenSSL für seine [[Mac_nix_basteln:OpenVPN|OpenVPN]]-Verbindung [[#X.509_Zertifikate|X.509 Zertifikate]] selbst erzeugen. So kann man sich eine Verbindung aufbauen indem man sich selbst ein Wurzelzertifikat macht (eine CA), Zertifikate für server und Klient mit zugehörigen privaten Schlüsseln sowie ein [[#Diffie-Hellman|Diffie-Hellmann]].&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:Krypto_Grundlagen&amp;diff=4533</id>
		<title>Mac nix basteln:Krypto Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:Krypto_Grundlagen&amp;diff=4533"/>
		<updated>2012-03-15T17:26:51Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;Verschlüsselungsmethoden&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Hash &amp;amp; salt&amp;lt;/h3&amp;gt;&lt;br /&gt;
Ein [http://de.wikipedia.org/wiki/Kryptologische_Hashfunktion hash] ist eine Funktion ähnlich einer [http://de.wikipedia.org/wiki/Pr%C3%BCfsumme Prüfsumme], welche unabhängig der Eingabe einen Wert mit konstanter Zeichenzahl liefert und zusätzlich die Eigenschaft besitzt nicht umkehrbar zu sein (Bild 1). Sprich, es ist nicht möglich aus dem Ergebnis der hash-Funktion den Eingabewert zurückzurechnen. Es ist extrem unwahrscheinlich, dass zwei unterschiedliche Eingaben zum gleichen hash führen. Außerdem, führt schon das Ändern eines einzelnen Zeichens der Quelle zu einem drastisch anderem hash. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[File:hash.gif|hash]]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Bild 1: Diagramm hash-Funktion&#039;&#039;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Beispiel: Es spielt keine Rolle, ob dieser Text ge-hash-t wird, oder eine ganze DVD. Das Ergebnis wird immer eine Zeichenkette einer definierten Länge sein. Aus diesem Ergebnis lässt sich dann weder der Inhalt der DVD rekonstruieren noch dieser Text.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
Beispiele für hash-Funktion sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Md5 md5] (gilt als geknackt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Secure_Hash_Algorithm sha]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Salt&amp;lt;/h4&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/Salt_%28Kryptologie%29 Salt]: Um die Sicherheit bei hashes zu weiter zu erhöhen, werden Zufallszahlen vor den zu-hash-enden Wert gehängt. Denn Sinn kann man nicht besser zusammenfassen als Wikipedia: &amp;lt;i&amp;gt;Hashfunktionen, wie z. B. MD5 oder SHA bilden einen bestimmten Klartext auf einen bestimmten Hash-Wert ab. So ist sofort erkennbar, welche Benutzer dasselbe Kennwort gewählt haben, da die Hashwerte identisch sind. Zudem muss bei Wörterbuch- und Brute-Force-Angriffen jedes zu prüfende mögliche Passwort nur ein einziges Mal berechnet (gehasht) werden, und dieser Wert muss anschließend nur mit einer Liste von vorliegenden Passwort-Hashes verglichen werden.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Symmetrische Verschlüsselung&amp;lt;/h3&amp;gt;&lt;br /&gt;
Bei der symmetrischen Verschlüsselung werden die Daten (oder der Text) mit Hilfe eines einzigen, gemeinsamen Schlüssels verschlüsselt und entschlüsselt (Bild 2). Das Verfahren funktioniert also mit dem selben Schlüssel in beide Richtungen. Ist dieser aufgeflogen, liegt die gesamte Kommunikation offen. Vorteil ist allerdings der relativ geringe Rechenaufwand (es ist schnell) und dass diese Verfahren sogar von i5 &amp;amp;amp; i7 CPUs in hardware unterstützt werden (noch schneller). Die Sicherheit hängt zudem auch von der Schlüssellänge ab. 256b gelten z.Z. als sicher.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[File:sym_verschluesselung.gif|Symmetrische Verschlüsselung]]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Bild 2: Diagramm symmetrischer Verschlüsselung&#039;&#039;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
Beispiele für symmetrische Verschlüsselungsverfahren sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/3DES 3DES] (gilt als geknackt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Advanced_Encryption_Standard AES]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Blowfish blowfish]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Diffie-Hellman&amp;lt;/h3&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/Diffie-Hellman Diffie-Hellman] ist genaugenommen weder eine Verschlüsselungsmethode, noch deren Anwendung. Es steht dazwischen: Um bei einer symmetrische Verschlüsselung nicht gezwungen zu sein den gemeinsamen Schlüssel irgendwie austauschen zu müssen, lässt man es einfach. Stattdessen hat man eine Methode gefunden, wie dieser Schlüssel von beiden Seiten durch Kommunikation bestimmt werden kann ohne, dass er jemals übertragen wird. Ist er bestimmt worden, kann die symmetrische Verschlüsselung erfolgen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Asymmetrische Verschlüsselung&amp;lt;/h3&amp;gt;&lt;br /&gt;
Bei der asymmetrischen Verschlüsselung werden Schlüssel immer in Paaren aus privatem und öffentlichem Schlüssel erstellt. Daten werden mit Hilfe des öffentlichen Schlüssels des Empfängers verschlüsselt, können aber nur mit dem zugehörigen privaten Schlüssel wieder entschlüsselt werden (Bild 3). &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[File:asym_verschluesselung.gif|Asymmetrische Verschlüsselung]]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Bild 3: Diagramm asymmetrischer Verschlüsselung&#039;&#039;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Hier muss also nur der private Schlüssel geheim gehalten werden, während der öffentlich beliebig verteilt werden kann (und soll). Vorteil des Verfahrens ist: vor Beginn der Kommunikation muss kein geheimer (privater) Schlüssel ausgetauscht werden (wie beim symmetrischen Verfahren). Allerdings ist das Verfahren auch rechenintensiver und nutzt größere Schlüssel. 2048b gelten z.Z. als sicher.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
Für den Anwendungsfall Strompost kann man die Daten auch gegen mehrere öffentliche Schlüssel verschlüsseln (z.B. [[Mac_nix_basteln:SMIME|S/MIME]]) und dann mit den zugehörigen privaten Schlüsseln wieder entschlüsseln. Dies erlaubt dann beispielsweise, dass man Nachrichten, die man verschickt hat auch selbt noch einmal wieder lesen kann (denn man hat ja nur seinen eigenen privaten Schlüssel, nicht aber den des Empfängers), oder dass man für mehrere Empfänger verschlüsseln kann.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Beispiele für asymmetrische Verschlüsselungsverfahren sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Digital_Signature_Algorithm DSA] (gilt als geknackt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/RSA-Kryptosystem RSA]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Anwendungen der Methoden&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Abspeichern von Kennwörtern&amp;lt;/h3&amp;gt;&lt;br /&gt;
Vernünftige Programme speichern Kennwörter nie im Klartext sondern nur deren [[#Hash_.26_salt|hashes]], damit bei unbefungtem Zugriff die Kennwörter nicht bekannt werden. Zusätzlich sollten sie noch gesalzen sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Kennwort geschützte Dateien...&amp;lt;/h3&amp;gt;&lt;br /&gt;
...sind ein Beispiel für [[#Symmetrische_Verschlüsselung|symmetrische]] Verschlüsselung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Digitale Untschrift&amp;lt;/h3&amp;gt;&lt;br /&gt;
Eine [http://de.wikipedia.org/wiki/Digitale_Unterschrift#Technische_Umsetzung digitale Untschrift] ist eine Kombination aus [[#Hash_.26_salt|hash]] &amp;amp;amp; [[#Asymmetrische_Verschlüsselung|asymmetrischer Verschlüsselung]]. Über die zu unterschreibenden Daten wird zunächst ein hash gebildet, der dann mit dem privaten Schlüssel des Absenders verschlüsselt wird und nur mit dem zugehörigen öffentlichen Schlüssel des Absenders (der mitgeschickt wird) wieder entschlüsselt werden kann (Bild 4). Die asymmetrische Verschlüsselung läuft also genau entgegengesetzt wie oben beschrieben. Somit wird sichergestellt:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Dass die Quelle, die des beiligendem öffentlichen Schlüssels ist (nur der private Schlüssel hat den hash so verschlüsseln können, dass der öffentliche Schlüssel den hash entschlüsselt. Sonst wäre ein anderer hash rausgekommen, der nicht zur unterschriebenen Nachricht passt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Die Nachricht wurde unterwegs nicht verändert. Wäre sie verändert worden, würde ein hash über die Nachricht nicht dem entschlüsselten hash-Wert entsprechen&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[File:digi_unterschrift.gif|Digitale Unterschrift]]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Bild 4: Diagramm digitaler Unterschrift&#039;&#039;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
Man hätte die Sache mit dem hash auch weg lassen können und die komplette Nachricht asymmetrisch verschlüsseln. Dies würde allerdings zur Folge haben, dass die Nachricht nicht nur Unterschrieben, sondern auch komplett verschlüsselt ist (statt nur den hash zu verschlüsseln) - was wiederum zu Folge hat, dass jemand ohne Krypto (dem auch die Unterschrift egal ist), die Nachricht nicht lesen kann. Des Weiteren würde es bei größeren Daten sehr rechenintensiv werden (lange dauern). Es ist viel schneller einen hash zu berechnen (konstante, vergleichen mit den eigentlichen Daten idR. kurze Länge) und diesen dann zu verschlüsseln.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Strompostverschlüsselung&amp;lt;/h3&amp;gt;&lt;br /&gt;
Hier wird [[#Symmetrische_Verschlüsselung|symmetrische]]  &amp;amp; [[#Asymmetrische_Verschlüsselung|asymmetrischer Verschlüsselung]] kombiniert. Der Inhalt der Nachricht wird aus Geschwindigkeitgründen mit einem für diese Nachricht speziell erzeugten Schlüssel (session key) symmetrisch Verschlüsselt. Anschliessend wird dieser Schlüssel (welcher idR deutlich kürzer als die eigentlich Nachricht/Nutzlast sein wird) asymmetrisch verschlüsselt und mit der symmetrisch verschlüsselten Nachricht versandt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;ssh&amp;lt;/h3&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/Ssh ssh] ist ein Beispiel für eine Kombination aus [[#Hash_.26_salt|hash]], [[#Asymmetrische_Verschlüsselung|asymmetrischer]] und [[#Symmetrische_Verschlüsselung|symmetrischer]]  Verschlüsselung. Beim ersten Verbindungsaufbau bekommt man den hash des öffentlichen Schlüssels des kontaktierten Rechners gezeigt, um zu fragen, ob man diesem Vertraut. Man bekommt den hash gezeigt, da die vergleichsweise kurze Zeichenfolge für einen Menschen leichter zu vergleichen ist, als der eigentliche lange öffentliche Schlüssel. Dann erfolgt der asymmetrische Verbindungsaufbau. Für die Dauer dieser einen Verbindung wird darüber ein Schlüssel für eine symmetrische Verschlüsselung erzeugt. Und über diese symmetrische Verschlüsselung läuft dann für diese Sitzung der eigentliche Datentransfer. Der Vorteil besteht wieder in der Geschwindigkeit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;X.509 Zertifikate&amp;lt;/h3&amp;gt;&lt;br /&gt;
Diese Zertifikate sind vergleichbar mit einem Ausweis. Sie enthalten Daten wie:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Name (bei email-Zertifikaten die Adresse(n), bei server-Zertifikaten die Domäne(n))&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Aussteller&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Seriennummer&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Gültigkeitsbeginn &amp;amp;amp; -ende&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Inhabername &amp;amp;amp; Adresse&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Verwendungszweck des Zertifikats&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;...&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Der gesamte Zertifikatstext ist dann [[#Digitale_Untschrift|unterschrieben]] mit dem privaten Schlüssel des Ausstellers, der sog. Certification Authority (CA).&lt;br /&gt;
&lt;br /&gt;
Anwendungsbeispiele für solche Zertifikate sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Https https]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[[Mac_nix_basteln:SMIME|S/MIME]]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;GPG/PGP&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Klare Nachteile sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Man muss den CAs trauen und die Vertrauenswürdigkeit vieler in den Browsern &amp;amp;amp; email-Programmen voreingestellten CAs sind zumindest fragwürdig&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Man muss die öffentlichen Schlüssel der CAs haben&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Mit ausreichend Geld kann man eine sub-CA einer CA werden. Diese kann dann wieder beliebig Schlüssel ausstellen, die nie jemand geprüft haben muss&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;OpenVPN&amp;lt;/h3&amp;gt;&lt;br /&gt;
Je nach Konfiguration kann man sich mit OpenSSL für seine [[Mac_nix_basteln:OpenVPN|OpenVPN]]-Verbindung [[#X.509_Zertifikate|X.509 Zertifikate]] selbst Erzeugen. So kann man sich eine Verbindung aufbauen indem man sich selbst ein Wurzelzertifikat macht (eine CA), Zertifikate für server und Klient mit zugehörigen privaten Schlüsseln sowie ein [[#Diffie-Hellman|Diffie-Hellmann]].&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=File:Sym_verschluesselung.gif&amp;diff=4528</id>
		<title>File:Sym verschluesselung.gif</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=File:Sym_verschluesselung.gif&amp;diff=4528"/>
		<updated>2012-03-15T17:01:32Z</updated>

		<summary type="html">&lt;p&gt;Andre: Diagramm symmetrischer Verschlüsselung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diagramm symmetrischer Verschlüsselung&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=File:Hash.gif&amp;diff=4527</id>
		<title>File:Hash.gif</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=File:Hash.gif&amp;diff=4527"/>
		<updated>2012-03-15T16:58:52Z</updated>

		<summary type="html">&lt;p&gt;Andre: Diagramm hash-Funktion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diagramm hash-Funktion&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=File:Digi_unterschrift.gif&amp;diff=4526</id>
		<title>File:Digi unterschrift.gif</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=File:Digi_unterschrift.gif&amp;diff=4526"/>
		<updated>2012-03-15T16:53:48Z</updated>

		<summary type="html">&lt;p&gt;Andre: Diagramm digitaler Unterschriften&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diagramm digitaler Unterschriften&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=File:Asym_verschluesselung.gif&amp;diff=4525</id>
		<title>File:Asym verschluesselung.gif</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=File:Asym_verschluesselung.gif&amp;diff=4525"/>
		<updated>2012-03-15T16:48:39Z</updated>

		<summary type="html">&lt;p&gt;Andre: Diagramm asymmetrischer Verschlüsselung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diagramm asymmetrischer Verschlüsselung&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:SMIME&amp;diff=4510</id>
		<title>Mac nix basteln:SMIME</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:SMIME&amp;diff=4510"/>
		<updated>2012-03-14T23:14:35Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;S/MIME&amp;lt;/h2&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/SMIME S/MIME] ist eine Methode zum signieren und verschlüsseln von Nachrichten, ähnlich wie das in der Öffentlichkeit vielleicht bekanntere PGP oder seine quelloffene Implementation [http://de.wikipedia.org/wiki/GNU_Privacy_Guard GPG]. Im Gegensatz zu GPG bietet S/MIME einige Komfortvorteile:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;S/MIME wird standardmäßig von allen (gängigen) email-Programmen unterstützt (vielleicht mal mit der Ausnahme mobiler Plattformen). D.h. man muss sich nicht um irgendwelche plugins oder sonstige Extraprogramme kümmern, die dann bei der nächsten Aktualisierung des email-Progs nicht mehr laufen&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Schlüssel werden automatisch durch das Versenden signierter Nachrichten verteilt. Man brauch sich also nicht um Schlüsselserver kümmern, oder jemanden seinen öffentlichen Schlüssel zusenden und diesem dann erklären, dass er ihn bei sich im Schlüsselbund hinzufügen muss&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Man bracht nicht jedem Schlüssel sagen, dass man ihm vertraut. Vertraut man dem Wurzelzertifikat, vertraut man allen Schlüsseln, die dagegen gezeichnet wurden&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Das System besteht auf Vertrauen gegenüber den Zertifikatsstellen (Certification Authorities = CAs), bzw. deren Wurzelzertifikaten&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Technik&amp;lt;/h3&amp;gt;&lt;br /&gt;
Wen die zu Grunde liegende Technik interessiert sollte sich die [[Mac_nix_basteln:Krypto_Grundlagen|Krypto-Grundlagen]] durchlesen. Ansonsten hier vereinfacht ganz ohne Technik:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Digitale Signatur&amp;lt;/h4&amp;gt;&lt;br /&gt;
Eine Signatur stellt sicher, dass der Absender der ist, der er vorgibt zu sein und dass die Nachricht unterwegs nicht verändert wurde. Sie entspricht also in etwa einem Siegel auf einem konventionellen Brief.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Verschlüsselung&amp;lt;/h4&amp;gt;&lt;br /&gt;
Verschlüsselung stellt sicher, dass nur designierte Empfänger die Nachricht lesen kann. Sie entspricht also grob dem Umschlag eines konventionellen Briefes. Eine unverschlüsselte Nachricht entspricht also in etwa einer Postkarte: Jeder unterwegs kann sie lesen und auch drin rum kritzeln.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Zertifikate&amp;lt;/h4&amp;gt;&lt;br /&gt;
Das Unterschreiben und Verschlüsseln erfolgt durch sog. Zertifikate. Dabei gibt es verschiedene [http://en.wikipedia.org/wiki/Public_key_certificate#Classification Typen]. Man kann nämlich nicht nur Strompost verschlüsseln, sondern auch Quelltext unterschreiben und der Gleichen. Da wir hier von Strompost reden, reicht uns ein Klasse 1 Zertifikat. Doch woher bekommt man das? Dies kann von den oben genannten Zertifikatsstellen ausgestellt werden. Derer gibt es sehr viele: z.B. Verisign, thawte... oder auch große Firmen haben ihre eigenen Wurzelzertifikate (Telekom, Visa....). Diese ganzen Wurzelzertifikate sind bei den Betriebsystemen bzw. den Mozillaprodukten (Firefox und Thunderbird - welche im Gegensatz zu den anderen Browsern und email-Progs nicht auf die Schlüsseldatenbank des Betriebssystems zurückgreifen) idR. vorinstalliert. Das Problem ist, dass die meisten Geld für die Ausstellung eines Zertifikats für den Anwender haben möchten. Der nicht gewinnorientierte Verein [https://www.cacert.org/ CAcert] stellt sie kostenlos aus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;CAcert&amp;lt;/h3&amp;gt;&lt;br /&gt;
Das Problem mit [https://www.cacert.org/ CAcert] ist, dass deren Wurzelzertifikate im Gegensatz zu den anderen genannten nicht vorinstalliert ist. Diese sollte man sich also zunächst einmal installieren. (Vorweg: Alle Schritte muss man nur einmal machen. Danach hat man keinerlei Mühe mehr)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;Wurzelzertifikate installieren&amp;lt;/h4&amp;gt;&lt;br /&gt;
Die [http://en.wikipedia.org/wiki/Public_key_certificate#Classification Klasse 1 &amp;amp;amp; 3] Wurzelzertifikate findet man unter [https://www.cacert.org/index.php?id=3 https://www.cacert.org/index.php?id=3]. Dort klickt man einfach &amp;lt;i&amp;gt;Root-Zertifikat (PEM Format)&amp;lt;/i&amp;gt; und &amp;lt;i&amp;gt;Zwischen Zertifikat (PEM Format)&amp;lt;/i&amp;gt; an. Was nun folgt ist stark vom eigenen System abhängig.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;OS X (Safari / Apple Mail)&amp;lt;/b&amp;gt;: Safari wird die Zertifikate einfach nur speichern. Man klickt dann die gespeicherten Dateien &amp;lt;i&amp;gt;root.crt&amp;lt;/i&amp;gt; und &amp;lt;i&amp;gt;class3.crt&amp;lt;/i&amp;gt; im &amp;lt;i&amp;gt;Downloads&amp;lt;/i&amp;gt;-Verzeichnis an. Worauf sie der OS X Schlüsselbundverwaltung hinzugefügt werden. Man hat die möglichkeit das Zertifikat für &#039;&#039;System&#039;&#039; (alle Benutzer) oder &#039;&#039;Anmeldung&#039;&#039; (der Angemeldete Benutzer) zu installieren. Beim Wurzelzertifikat macht es Sinn das Systemweit zu machen, beim eigenen Zertifikat sollte man &amp;lt;i&amp;gt;Anmeldung&amp;lt;/i&amp;gt; wählen.Das Zertifikat ist nun installiert und Systemweit verfügbar. Also beispielsweise auch für &amp;lt;i&amp;gt;Apple Mail&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Windows (Internet Explorer / Outlook)&amp;lt;/b&amp;gt;: Der Internet Explorer unter Windows wird ein Fenster mit Zertifikatsinformationen öffnen. Man klickt unten auf den Knopf &amp;lt;i&amp;gt;Zertifikat installieren...&amp;lt;/i&amp;gt; und klickt solange &amp;lt;i&amp;gt;OK&amp;lt;/i&amp;gt; und &amp;lt;i&amp;gt;Weiter&amp;lt;/i&amp;gt; bis der Dialog durch ist. Das Zertifikat ist nun installiert und Windows-Systemweit verfügbar. Also beispielsweise auch für &amp;lt;i&amp;gt;Outlook&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Firefox / Thunderbird (egal welches Betriebssystem)&amp;lt;/b&amp;gt;: Firefox fragt, wofür man das jeweilige Zertifikat nutzen möchte: um Websites zu identifizieren ([http://de.wikipedia.org/wiki/Https https]), um Email-Nutzer zu identifizieren (S/MIME) oder um software-Entwickler zu identifizieren. Man kann alles drei anhaken, OK und fertig. Die Anleitung um Zertifikate in Thunderbird zu nutzen findet sich [http://www.thunderbird-mail.de/wiki/Mailverschl%C3%BCsselung_mit_S/MIME#Wie_installiere_ich_ein_X.509-Zertifikat_in_TB.3F hier].&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Chrome, Opera, Konquerer...&amp;lt;/b&amp;gt;: Nicht ausprobiert. Wird aber wahrscheinlich irgendwie ähnlich wie die obigen Lösungen laufen.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;Eigenes Zertifikat erzeugen&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Registrieren:&amp;lt;/b&amp;gt; Zunächst [https://www.cacert.org/index.php?id=1 registriert man sich an]. Hier empfiehlt es sich, im Gegensatz zu den meisten anderen Orten im Netz, seine echten persönlichen Daten anzugeben. Schliesslich möchte man das Zertifikat benutzen, um sich zu identifizieren.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;email-Adressen hinzufügen:&amp;lt;/b&amp;gt; jetzt meldet man sich rechts im Menü auf der [https://www.cacert.org/index.php?id=4 CAcert-Seite] an und gelangt so in sein persönliches Konto. Man wählt wiederum rechts im Menü &amp;lt;i&amp;gt;+ E-Mail-Konto&amp;lt;/i&amp;gt;, klappt es aus und geht auf &amp;lt;i&amp;gt;Hinzufügen&amp;lt;/i&amp;gt;. Hier sollte man alle Adressen hinzufügen mit denen man vorhat zu unterschreiben. Vorsicht bei googlemail: auch wenn man selbst nur &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@gmail.com verwendet, verschickt googlemail die emails immer als &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@googlemail.com. Man muss also sowohl &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@gmail.com als auch &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@googlemail.com hinzufügen, sonst kommt es zu Fehlern.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Zertifikat ausstellen:&amp;lt;/b&amp;gt; Man klickt rechts im Menü auf &amp;lt;i&amp;gt;+ Client-Zertifikate&amp;lt;/i&amp;gt; und dann auf &amp;lt;i&amp;gt;neu&amp;lt;/i&amp;gt;. Nun wählt man die email-Adressen aus, für die das Zertifikat gelten soll (die Auswahlmöglichkeit besteht aus den eben hinzugefügten), klickt &amp;lt;i&amp;gt;Signieren mit dem Klasse 1 Root Zertifikat&amp;lt;/i&amp;gt; und setzt einen Haken bei &amp;lt;i&amp;gt;Zertifikats-Anmeldung mit diesem Zertifikat aktivieren&amp;lt;/i&amp;gt;. Mit &amp;lt;i&amp;gt;weiter&amp;lt;/i&amp;gt; geht&#039;s auf die nächste Seite. Dort wählt man unter &amp;lt;i&amp;gt;Schlüsselgröße&amp;lt;/i&amp;gt; hochgradig aus (entspricht z.Z. 4096bit) und klickt auf erstellen.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;Eigenes Zertifikat installieren&amp;lt;/h4&amp;gt;&lt;br /&gt;
Je nach System fügt man den Schlüssel nun seinem System hinzu:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;OS X (Safari / Apple Mail)&amp;lt;/b&amp;gt;: wie man es schon für das [http://wiki.attraktor.org/Mac_nix_basteln:SMIME#Wurzelzertifikate_installieren Wurzelzertifikat] getan hat. Danach gibt es in Apple Mail zwei neue Symbole beim Verfassen eienr neuen Nachricht. Ein Schloss zum Verschlüsseln und ein Stift zum signieren.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Windows (Internet Explorer / Outlook)&amp;lt;/b&amp;gt;: Zuerst [http://www.uni-muenster.de/WWUCA/info/howto-restore-outlook.html das], dann [http://www.uni-muenster.de/WWUCA/info/howto-select-outlook.html das], und dann [http://www.uni-muenster.de/WWUCA/info/howto-email-smime-outlook.html das].&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Firefox / Thunderbird (egal welches Betriebssystem)&amp;lt;/b&amp;gt;: Man geht in Firefox unter &#039;&#039;Einstellungen / Erweitert / Verschlüsselung / Zertifikate anzeigen / Ihre Zertifikate&#039;&#039; und dann auf sichern. Mit dem gespeicherten Zertifikat befolgt [http://www.thunderbird-mail.de/wiki/Mailverschl%C3%BCsselung_mit_S/MIME#Installation_des_eigenen_Zertifikates_im_Zertifikat-Manager diese Anleitung] für &#039;&#039;Thunderbird&#039;&#039;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s auch schon. Nun sollte das jeweilige email-Programm in der Lage sein Nachrichten zu signieren und auch zu verschlüsseln. Letzteres vorausgesetzt man hat den öffentlichen Schlüssel des Empfängers - was man automatisch hat sobald man einmal eine signierte Nachricht von demjenigen empfangen hat.&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:Krypto_Grundlagen&amp;diff=4509</id>
		<title>Mac nix basteln:Krypto Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:Krypto_Grundlagen&amp;diff=4509"/>
		<updated>2012-03-14T23:10:40Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;Verschlüsselungsmethoden&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Hash &amp;amp; salt&amp;lt;/h3&amp;gt;&lt;br /&gt;
Ein [http://de.wikipedia.org/wiki/Kryptologische_Hashfunktion hash] ist eine Funktion ähnlich einer [http://de.wikipedia.org/wiki/Pr%C3%BCfsumme Prüfsumme], welche unabhängig der Eingabe einen Wert mit konstanter Zeichenzahl liefert und zusätzlich die Eigenschaft besitzt nicht umkehrbar zu sein. Sprich, es ist nicht möglich aus dem Ergebnis der hash-Funktion den Eingabewert zurückzurechnen. Es ist extrem unwahrscheinlich, dass zwei unterschiedliche Eingaben zum gleichen hash führen. Außerdem, führt schon das Ändern eines einzelnen Zeichens der Quelle zu einem drastisch anderem hash. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Beispiel: Es spielt keine Rolle, ob dieser Text ge-hash-t wird, oder eine ganze DVD. Das Ergebnis wird immer eine Zeichenkette einer definierten Länge sein. Aus diesem Ergebnis lässt sich dann weder der Inhalt der DVD rekonstruieren noch dieser Text.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiele für hash-Funktion sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Md5 md5] (gilt als geknackt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Secure_Hash_Algorithm sha]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Salt&amp;lt;/h4&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/Salt_%28Kryptologie%29 Salt]: Um die Sicherheit bei hashes zu weiter zu erhöhen, werden Zufallszahlen vor den zu-hash-enden Wert gehängt. Denn Sinn kann man nicht besser zusammenfassen als Wikipedia: &amp;lt;i&amp;gt;Hashfunktionen, wie z. B. MD5 oder SHA bilden einen bestimmten Klartext auf einen bestimmten Hash-Wert ab. So ist sofort erkennbar, welche Benutzer dasselbe Kennwort gewählt haben, da die Hashwerte identisch sind. Zudem muss bei Wörterbuch- und Brute-Force-Angriffen jedes zu prüfende mögliche Passwort nur ein einziges Mal berechnet (gehasht) werden, und dieser Wert muss anschließend nur mit einer Liste von vorliegenden Passwort-Hashes verglichen werden.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Symmetrishe Verschlüsselung&amp;lt;/h3&amp;gt;&lt;br /&gt;
Bei der symmetrischen Verschlüsselung werden die Daten (oder der Text) mit Hilfe eines einzigen Schlüssels verschlüsselt und entschlüsselt. Das Verfahren funktioniert also mit dem selben Schlüssel in beide Richtungen. Ist dieser aufgeflogen, liegt die gesamte Kommunikation offen. Vorteil ist allerdings der relativ geringe Rechenaufwand (es ist schnell) und, dass diese Verfahren sogar von i5 &amp;amp;amp; i7 CPUs in hardware unterstützt werden (noch schneller). Die Sicherheit hängt zudem auch von der Schlüssellänge ab. 256b gelten z.Z. als sicher.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Beispiele für symmetrische Verschlüsselungsverfahren sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/3DES 3DES] (gilt als geknackt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Advanced_Encryption_Standard AES]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Blowfish blowfish]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Diffie-Hellman&amp;lt;/h3&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/Diffie-Hellman Diffie-Hellman] ist genaugenommen weder eine Verschlüsselungsmethode, noch deren Anwendung. Es steht dazwischen: Um bei einer symmetrische Verschlüsselung nicht gezwungen zu sein den einen geheimen Schlüssel irgendwie austauschen zu müssen, lässt man es einfach. Stattdessen hat man eine Methode gefunden, wie dieser Schlüssel von beiden Seiten durch Kommunikation bestimmt werden kann ohne, dass er jemals übertragen wird. Ist er bestimmt worden, kann die symmetrische Verschlüsselung erfolgen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Asymmetrishe Verschlüsselung&amp;lt;/h3&amp;gt;&lt;br /&gt;
Bei der asymmetrischen Verschlüsselung werden Schlüssel immer in Paaren aus privatem und öffentlichem Schlüssel erstellt. Daten werden mit Hilfe des öffentlichen Schlüssels des Empfängers verschlüsselt, können aber nur mit dem zugehörigen privaten Schlüssel wieder entschlüsselt werden. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Hier muss also nur der private Schlüssel geheim gehalten werden, während der öffentlich beliebig verteilt werden kann (und soll). Vorteil des Verfahrens ist vor Beginn der Kommunikation muss kein geheimer (privater) Schlüssel ausgetauscht werden (wie beim symmetrischen Verfahren). Allerdings ist das Verfahren auch rechenintensiver und nutzt größere Schlüssel. 2048b gelten z.Z. als sicher.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
Für den Anwendungsfall Strompost kann man die Daten auch gegen mehrere öffentliche Schlüssel verschlüsseln (z.B. [[Mac_nix_basteln:SMIME|S/MIME]]) und dann mit den zugehörigen privaten Schlüsseln wieder entschlüsseln. Dies erlaubt dann beispielsweise, dass man Nachrichten, die man verschickt hat auch selbt noch einmal wieder lesen kann (denn man hat ja nur seinen eigenen privaten Schlüssel, nicht aber den des Empfängers), oder das man für mehrere Empfänger verschlüsseln kann.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Beispiele für asymmetrische Verschlüsselungsverfahren sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Digital_Signature_Algorithm DSA] (gilt als geknackt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/RSA-Kryptosystem RSA]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Anwendungen der Methoden&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Abspeichern von Kennwörtern&amp;lt;/h3&amp;gt;&lt;br /&gt;
Vernünftige Programme speichern Kennwörter nie im Klartext sondern nur deren hashes, damit bei unbefungtem Zugriff die Kennwörter nicht bekannt werden. Zusätzlich sollten sie noch gesalzen sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Kennwort geschützte Dateien...&amp;lt;/h3&amp;gt;&lt;br /&gt;
...sind ein Beispiel für symmetrische Verschlüsselung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Digitale Untschrift&amp;lt;/h3&amp;gt;&lt;br /&gt;
Eine [http://de.wikipedia.org/wiki/Digitale_Unterschrift#Technische_Umsetzung digitale Untschrift] ist eine Kombination aus [[#Hash_.26_salt|hash]] &amp;amp;amp; [[#Asymmetrishe_Verschlüsselung|asymmetrisher Verschlüsselung]]. Über die zu unterschreibenden Daten wird zunächst ein hash gebildet, der dann mit dem privaten Schlüssel des Absenders verschlüsselt wird und nur mit dem zugehörigen öffentlichen Schlüssel des Absenders (der mitgeschickt wird) wieder entschlüsselt werden kann. Die asymmetrische Verschlüsselung läuft also genau entgegengesetzt wie oben beschrieben. Somit wird sichergestellt:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Das die Quelle, die des beiligendem öffentlichen Schlüssels ist (nur der private Schlüssel hat den hash so verschlüsseln können, dass der öffentliche Schlüssel den hash entschlüsselt. Sonst wäre ein anderer hash rausgekommen, der nicht zur unterschriebenen Nachricht passt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Die Nachricht wurde unterwegs nicht verändert. Wäre sie verändert worden würde ein hash über die Nachricht nicht dem des entschlüsselten hashwert entsprechen&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
Man hätte die Sache mit dem hash auch weg lassen können und die komplette Nachricht asymmetrisch verschlüsseln. Dies würde allerdings zur Folge haben, dass die Nachricht nicht nur Unterschrieben, sondern auch komplett verschlüsselt ist (statt nur den hash zu verschlüsseln) - was wiederum zu Folge hat, dass jemand ohne Krypto (dem auch die Unterschrift egal ist), die Nachricht nicht lesen kann. Des Weiteren würde es bei größeren Daten sehr rechenintensiv werden (lange dauern). Es ist viel schneller einen hash zu berechnen (konstante, vergleichen mit den eigentlichen Daten idR. kurze Länge) und diesen dann zu verschlüsseln.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Strompostverschlüsselung&amp;lt;/h3&amp;gt;&lt;br /&gt;
Hier wird symmetrische &amp;amp; asymmetrische Verschlüsselung kombiniert. Der Inhalt der Nachricht wird aus Geschwindigkeitgründen mit einem für diese Nachricht speziell erzeugten Schlüssel (session key) symmetrisch Verschlüsselt. Anschliessend wird dieser Schlüssel (welcher idR deutlich kürzer als die eigentlich Nachricht/Nutzlast sein wird) asymmetrisch verschlüsselt und mit der symmetrisch verschlüsselten Nachricht versand.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;ssh&amp;lt;/h3&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/Ssh ssh] ist ein Beispiel für eine Kombination aus hash, asymmetrischer und symmetrischer Verschlüsselung. Beim ersten Verbindungsaufbau bekommt man den hash des öffentlichen Schlüssels des kontaktierten Rechners gezeigt, um zu fragen, ob man diesem Vertraut. Man bekommt den hash gezeigt, da die vergleichsweise kurze Zeichenfolge für einen Menschen leichter zu vergleichen ist, als der eigentliche lange öffentliche Schlüssel. Dann erfolgt der asymmetrische Verbindungsaufbau. Für die Dauer dieser einen Verbindung wird darüber ein Schlüssel für eine symmetrische Verschlüsselung erzeugt. Und über diese symmetrische Verschlüsselung läuft dann für diese Sitzung der eigentliche Datentransfer. Der Vorteil besteht wieder in der Geschwindigkeit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;X.509 Zertifikate&amp;lt;/h3&amp;gt;&lt;br /&gt;
Diese Zertifikate sind vergleichbar mit einem Ausweis. Sie enthalten Daten wie:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Name (bei email-Zertifikaten die Adresse(n), bei server-Zertifikaten die Domäne(n))&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Aussteller&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Seriennummer&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Gültigkeitsbeginn &amp;amp;amp; -ende&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Inhabername &amp;amp;amp; Adresse&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Verwendungszweck des Zertifikats&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;...&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Der gesamte Zertifikatstext ist dann [[#Digitale_Untschrift|unterschrieben]] mit dem privaten Schlüssel des Ausstellers, der sog. Certification Authority (CA).&lt;br /&gt;
&lt;br /&gt;
Anwendungsbeispiele für solche Zertifikate sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Https https]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[[Mac_nix_basteln:SMIME|S/MIME]]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;GPG/PGP&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Klare Nachteile sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Man muss den CAs trauen und die Vertrauenswürdigkeit vieler in den Browsern &amp;amp;amp; email-Programmen voreingestellten CAs sind zumindest fragwürdig&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Man muss die öffentlichen Schlüssel der CAs haben&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Mit ausreichend Geld kann man eine sub-CA einer CA werden. Diese kann dann wieder beliebig Schlüssel ausstellen, die nie jemand geprüft haben muss&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;OpenVPN&amp;lt;/h3&amp;gt;&lt;br /&gt;
Je nach Konfiguration kann man sich mit OpenSSL für seine [[Mac_nix_basteln:OpenVPN|OpenVPN]]-Verbindung [[#X.509_Zertifikate|X.509 Zertifikate]] selbst Erzeugen. So kann man sich eine Verbindung aufbauen indem man sich selbst ein Wurzelzertifikat macht (eine CA), Zertifikate für server und Klient mit zugehörigen privaten Schlüsseln sowie ein [[#Diffie-Hellman|Diffie-Hellmann]].&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:Krypto_Grundlagen&amp;diff=4508</id>
		<title>Mac nix basteln:Krypto Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:Krypto_Grundlagen&amp;diff=4508"/>
		<updated>2012-03-14T23:10:10Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;Verschlüsselungsmethoden&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Hash &amp;amp; salt&amp;lt;/h3&amp;gt;&lt;br /&gt;
Ein [http://de.wikipedia.org/wiki/Kryptologische_Hashfunktion hash] ist eine Funktion ähnlich einer [http://de.wikipedia.org/wiki/Pr%C3%BCfsumme Prüfsumme], welche unabhängig der Eingabe einen Wert mit konstanter Zeichenzahl liefert und zusätzlich die Eigenschaft besitzt nicht umkehrbar zu sein. Sprich, es ist nicht möglich aus dem Ergebnis der hash-Funktion den Eingabewert zurückzurechnen. Es ist extrem unwahrscheinlich, dass zwei unterschiedliche Eingaben zum gleichen hash führen. Außerdem, führt schon das Ändern eines einzelnen Zeichens der Quelle zu einem drastisch anderem hash. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Beispiel: Es spielt keine Rolle, ob dieser Text ge-hash-t wird, oder eine ganze DVD. Das Ergebnis wird immer eine Zeichenkette einer definierten Länge sein. Aus diesem Ergebnis lässt sich dann weder der Inhalt der DVD rekonstruieren noch dieser Text.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiele für hash-Funktion sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Md5 md5] (gilt als geknackt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Secure_Hash_Algorithm sha]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Salt&amp;lt;/h4&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/Salt_%28Kryptologie%29 Salt]: Um die Sicherheit bei hashes zu weiter zu erhöhen, werden Zufallszahlen vor den zu-hash-enden Wert gehängt. Denn Sinn kann man nicht besser zusammenfassen als Wikipedia: &amp;lt;i&amp;gt;Hashfunktionen, wie z. B. MD5 oder SHA bilden einen bestimmten Klartext auf einen bestimmten Hash-Wert ab. So ist sofort erkennbar, welche Benutzer dasselbe Kennwort gewählt haben, da die Hashwerte identisch sind. Zudem muss bei Wörterbuch- und Brute-Force-Angriffen jedes zu prüfende mögliche Passwort nur ein einziges Mal berechnet (gehasht) werden, und dieser Wert muss anschließend nur mit einer Liste von vorliegenden Passwort-Hashes verglichen werden.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Symmetrishe Verschlüsselung&amp;lt;/h3&amp;gt;&lt;br /&gt;
Bei der symmetrischen Verschlüsselung werden die Daten (oder der Text) mit Hilfe eines einzigen Schlüssels verschlüsselt und entschlüsselt. Das Verfahren funktioniert also mit dem selben Schlüssel in beide Richtungen. Ist dieser aufgeflogen, liegt die gesamte Kommunikation offen. Vorteil ist allerdings der relativ geringe Rechenaufwand (es ist schnell) und, dass diese Verfahren sogar von i5 &amp;amp;amp; i7 CPUs in hardware unterstützt werden (noch schneller). Die Sicherheit hängt zudem auch von der Schlüssellänge ab. 256b gelten z.Z. als sicher.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Beispiele für symmetrische Verschlüsselungsverfahren sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/3DES 3DES] (gilt als geknackt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Advanced_Encryption_Standard AES]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Blowfish blowfish]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Diffie-Hellman&amp;lt;/h3&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/Diffie-Hellman Diffie-Hellman] ist genaugenommen weder eine Verschlüsselungsmethode, noch deren Anwendung. Es steht dazwischen: Um bei einer symmetrische Verschlüsselung nicht gezwungen zu sein den einen geheimen Schlüssel irgendwie austauschen zu müssen, lässt man es einfach. Stattdessen hat man eine Methode gefunden, wie dieser Schlüssel von beiden Seiten durch Kommunikation bestimmt werden kann ohne, dass er jemals übertragen wird. Ist er bestimmt worden, kann die symmetrische Verschlüsselung erfolgen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Asymmetrishe Verschlüsselung&amp;lt;/h3&amp;gt;&lt;br /&gt;
Bei der asymmetrischen Verschlüsselung werden Schlüssel immer in Paaren aus privatem und öffentlichem Schlüssel erstellt. Daten werden mit Hilfe des öffentlichen Schlüssels des Empfängers verschlüsselt, können aber nur mit dem zugehörigen privaten Schlüssel wieder entschlüsselt werden. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Hier muss also nur der private Schlüssel geheim gehalten werden, während der öffentlich beliebig verteilt werden kann (und soll). Vorteil des Verfahrens ist vor Beginn der Kommunikation muss kein geheimer (privater) Schlüssel ausgetauscht werden (wie beim symmetrischen Verfahren). Allerdings ist das Verfahren auch rechenintensiver und nutzt größere Schlüssel. 2048b gelten z.Z. als sicher.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
Für den Anwendungsfall Strompost kann man die Daten auch gegen mehrere öffentliche Schlüssel verschlüsseln (z.B. [[Mac_nix_basteln:SMIME|S/MIME]]) und dann mit den zugehörigen privaten Schlüsseln wieder entschlüsseln. Dies erlaubt dann beispielsweise, dass man Nachrichten, die man verschickt hat auch selbt noch einmal wieder lesen kann (denn man hat ja nur seinen eigenen privaten Schlüssel, nicht aber den des Empfängers), oder das man für mehrere Empfänger verschlüsseln kann.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Beispiele für asymmetrische Verschlüsselungsverfahren sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Digital_Signature_Algorithm DSA] (gilt als geknackt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/RSA-Kryptosystem RSA]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Anwendungen der Methoden&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Abspeichern von Kennwörtern&amp;lt;/h3&amp;gt;&lt;br /&gt;
Vernünftige Programme speichern Kennwörter nie im Klartext sondern nur deren hashes, damit bei unbefungtem Zugriff die Kennwörter nicht bekannt werden. Zusätzlich sollten sie noch gesalzen sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Kennwort geschützte Dateien...&amp;lt;/h3&amp;gt;&lt;br /&gt;
...sind ein Beispiel für symmetrische Verschlüsselung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Digitale Untschrift&amp;lt;/h3&amp;gt;&lt;br /&gt;
Eine [http://de.wikipedia.org/wiki/Digitale_Unterschrift#Technische_Umsetzung digitale Untschrift] ist eine Kombination aus [[#Hash_.26_salt|hash]] &amp;amp;amp; [[#Asymmetrishe_Verschlüsselung|asymmetrisher Verschlüsselung]]. Über die zu unterschreibenden Daten wird zunächst ein hash gebildet, der dann mit dem privaten Schlüssel des Absenders verschlüsselt wird und nur mit dem zugehörigen öffentlichen Schlüssel des Absenders (der mitgeschickt wird) wieder entschlüsselt werden kann. Die asymmetrische Verschlüsselung läuft also genau entgegengesetzt wie oben beschrieben. Somit wird sichergestellt:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Das die Quelle, die des beiligendem öffentlichen Schlüssels ist (nur der private Schlüssel hat den hash so verschlüsseln können, dass der öffentliche Schlüssel den hash entschlüsselt. Sonst wäre ein anderer hash rausgekommen, der nicht zur unterschriebenen Nachricht passt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Die Nachricht wurde unterwegs nicht verändert. Wäre sie verändert worden würde ein hash über die Nachricht nicht dem des entschlüsselten hashwert entsprechen&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
Man hätte die Sache mit dem hash auch weg lassen können und die komplette Nachricht asymmetrisch verschlüsseln. Dies würde allerdings zur Folge haben, dass die Nachricht nicht nur Unterschrieben, sondern auch komplett verschlüsselt ist (statt nur den hash zu verschlüsseln) - was wiederum zu Folge hat, dass jemand ohne Krypto (dem auch die Unterschrift egal ist), die Nachricht nicht lesen kann. Des Weiteren würde es bei größeren Daten sehr rechenintensiv werden (lange dauern). Es ist viel schneller einen hash zu berechnen (konstante, vergleichen mit den eigentlichen Daten idR. kurze Länge) und diesen dann zu verschlüsseln.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Strompostverschlüsselung&amp;lt;/h3&amp;gt;&lt;br /&gt;
Hier wird symmetrische &amp;amp; asymmetrische Verschlüsselung kombiniert. Der Inhalt der Nachricht wird aus Geschwindigkeitgründen mit einem für diese Nachricht speziell erzeugten Schlüssel (session key) symmetrisch Verschlüsselt. Anschliessend wird dieser Schlüssel (welcher idR deutlich kürzer als die eigentlich Nachricht/Nutzlast sein wird) asymmetrisch verschlüsselt und mit der symmetrisch verschlüsselten Nachricht versand.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;ssh&amp;lt;/h3&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/Ssh ssh] ist ein Beispiel für eine Kombination aus hash, asymmetrischer und symmetrischer Verschlüsselung. Beim ersten Verbindungsaufbau bekommt man den hash des öffentlichen Schlüssels des kontaktierten Rechners gezeigt, um zu fragen, ob man diesem Vertraut. Man bekommt den hash gezeigt, da die vergleichsweise kurze Zeichenfolge für einen Menschen leichter zu vergleichen ist, als der eigentliche lange öffentliche Schlüssel. Dann erfolgt der asymmetrische Verbindungsaufbau. Für die Dauer dieser einen Verbindung wird darüber ein Schlüssel für eine symmetrische Verschlüsselung erzeugt. Und über diese symmetrische Verschlüsselung läuft dann für diese Sitzung der eigentliche Datentransfer. Der Vorteil besteht wieder in der Geschwindigkeit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;X.509 Zertifikate&amp;lt;/h3&amp;gt;&lt;br /&gt;
Diese Zertifikate sind vergleichbar mit einem Ausweis. Sie enthalten Daten wie:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Name (bei email-Zertifikaten die Adresse(n), bei server-Zertifikaten die Domäne(n))&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Aussteller&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Seriennummer&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Gültigkeitsbeginn &amp;amp;amp; -ende&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Inhabername &amp;amp;amp; Adresse&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Verwendungszweck des Zertifikats&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;...&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Der gesamte Zertifikatstext ist dann [[#Digitale_Untschrift|unterschrieben]] mit dem privaten Schlüssel des Ausstellers, der sog. Certification Authority (CA).&lt;br /&gt;
&lt;br /&gt;
Anwendungsbeispiele für solche Zertifikate sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Https https]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[[Mac_nix_basteln:SMIME|S/MIME]]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;GPG/PGP&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Klare Nachteile sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Man muss den CAs trauen und die Vertrauenswürdigkeit vieler in den Browsern &amp;amp;amp; email-Programmen voreingestellten CAs sind zumindest fragwürdig&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Man muss die öffentlichen Schlüssel der CAs haben&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Mit ausreichend Geld kann man eine sub-CA einer CA werden. Diese kann dann wieder beliebig Schlüssel ausstellen, die nie jemand geprüft haben muss&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;OpenVPN&amp;lt;/h3&amp;gt;&lt;br /&gt;
Je nach Konfiguration kann man sich mit OpenSSL für seine [[Mac_nix_basteln:OpenVPN|OpenVPN]]-Verbindung [[#X.509_Zertifikate|X.509 Zertifikate]] selbst Erzeugen. So kann man sich eine Verbindung aufbauen indem man sich selbst ein Wurzelzertifikat macht (eine CA), Zertifikate für server und Klient mit zugehörigen privaten Schlüsseln sowie ein [[#Diffie-Hellman|Diffie-Hellmann]].&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:Krypto_Grundlagen&amp;diff=4506</id>
		<title>Mac nix basteln:Krypto Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:Krypto_Grundlagen&amp;diff=4506"/>
		<updated>2012-03-14T22:47:22Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;Verschlüsselungsmethoden&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Hash &amp;amp; salt&amp;lt;/h3&amp;gt;&lt;br /&gt;
Ein [http://de.wikipedia.org/wiki/Kryptologische_Hashfunktion hash] ist eine Funktion ähnlich einer [http://de.wikipedia.org/wiki/Pr%C3%BCfsumme Prüfsumme], welche unabhängig der Eingabe einen Wert mit konstanter Zeichenzahl liefert und zusätzlich die Eigenschaft besitzt nicht umkehrbar zu sein. Sprich, es ist nicht möglich aus dem Ergebnis der hash-Funktion den Eingabewert zurückzurechnen. Es ist extrem unwahrscheinlich, dass zwei unterschiedliche Eingaben zum gleichen hash führen. Außerdem, führt schon das Ändern eines einzelnen Zeichens der Quelle zu einem drastisch anderem hash. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Beispiel: Es spielt keine Rolle, ob dieser Text ge-hash-t wird, oder eine ganze DVD. Das Ergebnis wird immer eine Zeichenkette einer definierten Länge sein. Aus diesem Ergebnis lässt sich dann weder der Inhalt der DVD rekonstruieren noch dieser Text.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiele für hash-Funktion sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Md5 md5] (gilt als geknackt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Secure_Hash_Algorithm sha]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Salt&amp;lt;/h4&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/Salt_%28Kryptologie%29 Salt]: Um die Sicherheit bei hashes zu weiter zu erhöhen, werden Zufallszahlen vor den zu-hash-enden Wert gehängt. Denn Sinn kann man nicht besser zusammenfassen als Wikipedia: &amp;lt;i&amp;gt;Hashfunktionen, wie z. B. MD5 oder SHA bilden einen bestimmten Klartext auf einen bestimmten Hash-Wert ab. So ist sofort erkennbar, welche Benutzer dasselbe Kennwort gewählt haben, da die Hashwerte identisch sind. Zudem muss bei Wörterbuch- und Brute-Force-Angriffen jedes zu prüfende mögliche Passwort nur ein einziges Mal berechnet (gehasht) werden, und dieser Wert muss anschließend nur mit einer Liste von vorliegenden Passwort-Hashes verglichen werden.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Symmetrishe Verschlüsselung&amp;lt;/h3&amp;gt;&lt;br /&gt;
Bei der symmetrischen Verschlüsselung werden die Daten (oder der Text) mit Hilfe eines einzigen Schlüssels verschlüsselt und entschlüsselt. Das Verfahren funktioniert also mit dem selben Schlüssel in beide Richtungen. Ist dieser aufgeflogen, liegt die gesamte Kommunikation offen. Vorteil ist allerdings der relativ geringe Rechenaufwand (es ist schnell) und, dass diese Verfahren sogar von i5 &amp;amp;amp; i7 CPUs in hardware unterstützt werden (noch schneller). Die Sicherheit hängt zudem auch von der Schlüssellänge ab. 256b gelten z.Z. als sicher.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Beispiele für symmetrische Verschlüsselungsverfahren sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/3DES 3DES] (gilt als geknackt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Advanced_Encryption_Standard AES]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Blowfish blowfish]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Diffie-Hellman&amp;lt;/h3&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/Diffie-Hellman Diffie-Hellman] ist genaugenommen weder eine Verschlüsselungsmethode, noch deren Anwendung. Es steht dazwischen: Um bei einer symmetrische Verschlüsselung nicht gezwungen zu sein den einen geheimen Schlüssel irgendwie austauschen zu müssen, lässt man es einfach. Stattdessen hat man eine Methode gefunden, wie dieser Schlüssel von beiden Seiten durch Kommunikation bestimmt werden kann ohne, dass er jemals übertragen wird. Ist er bestimmt worden, kann die symmetrische Verschlüsselung erfolgen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Asymmetrishe Verschlüsselung&amp;lt;/h3&amp;gt;&lt;br /&gt;
Bei der asymmetrischen Verschlüsselung werden Schlüssel immer in Paaren aus privatem und öffentlichem Schlüssel erstellt. Daten werden mit Hilfe des öffentlichen Schlüssels des Empfängers verschlüsselt, können aber nur mit dem zugehörigen privaten Schlüssel wieder entschlüsselt werden. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Hier muss also nur der private Schlüssel geheim gehalten werden, während der öffentlich beliebig verteilt werden kann (und soll). Vorteil des Verfahrens ist vor Beginn der Kommunikation muss kein geheimer (privater) Schlüssel ausgetauscht werden (wie beim symmetrischen Verfahren). Allerdings ist das Verfahren auch rechenintensiver und nutzt größere Schlüssel. 2048b gelten z.Z. als sicher.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
Für den Anwendungsfall Strompost kann man die Daten auch gegen mehrere öffentliche Schlüssel verschlüsseln (z.B. [[Mac_nix_basteln:SMIME|S/MIME]]) und dann mit den zugehörigen privaten Schlüsseln wieder entschlüsseln. Dies erlaubt dann beispielsweise, dass man Nachrichten, die man verschickt hat auch selbt noch einmal wieder lesen kann (denn man hat ja nur seinen eigenen privaten Schlüssel, nicht aber den des Empfängers), oder das man für mehrere Empfänger verschlüsseln kann.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Beispiele für asymmetrische Verschlüsselungsverfahren sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Digital_Signature_Algorithm DSA] (gilt als geknackt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/RSA-Kryptosystem RSA]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Anwendungen der Methoden&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Abspeichern von Kennwörtern&amp;lt;/h3&amp;gt;&lt;br /&gt;
Vernünftige Programme speichern Kennwörter nie im Klartext sondern nur deren hashes, damit bei unbefungtem Zugriff die Kennwörter nicht bekannt werden. Zusätzlich sollten sie noch gesalzen sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Kennwort geschützte Dateien...&amp;lt;/h3&amp;gt;&lt;br /&gt;
...sind ein Beispiel für symmetrische Verschlüsselung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Digitale Untschrift&amp;lt;/h3&amp;gt;&lt;br /&gt;
Eine [http://de.wikipedia.org/wiki/Digitale_Unterschrift#Technische_Umsetzung digitale Untschrift] ist eine Kombination aus [[#Hash_.26_salt|hash]] &amp;amp;amp; [[#Asymmetrishe_Verschlüsselung|asymmetrisher Verschlüsselung]]. Über die zu unterschreibenden Daten wird zunächst ein hash gebildet, der dann mit dem privaten Schlüssel des Absenders verschlüsselt wird und nur mit dem zugehörigen öffentlichen Schlüssel des Absenders (der mitgeschickt wird) wieder entschlüsselt werden kann. Die asymmetrische Verschlüsselung läuft also genau entgegengesetzt wie oben beschrieben. Somit wird sichergestellt:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Das die Quelle, die des beiligendem öffentlichen Schlüssels ist (nur der private Schlüssel hat den hash so verschlüsseln können, dass der öffentliche Schlüssel den hash entschlüsselt. Sonst wäre ein anderer hash rausgekommen, der nicht zur unterschriebenen Nachricht passt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Die Nachricht wurde unterwegs nicht verändert. Wäre sie verändert worden würde ein hash über die Nachricht nicht dem des entschlüsselten hashwert entsprechen&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
Man hätte die Sache mit dem hash auch weg lassen können und die komplette Nachricht asymmetrisch verschlüsseln. Dies würde allerdings zur Folge haben, dass die Nachricht nicht nur Unterschrieben, sondern auch komplett verschlüsselt ist (statt nur den hash zu verschlüsseln) - was wiederum zu Folge hat, dass jemand ohne Krypto (dem auch die Unterschrift egal ist), die Nachricht nicht lesen kann. Des Weiteren würde es bei größeren Daten sehr rechenintensiv werden (lange dauern). Es ist viel schneller einen hash zu berechnen (konstante, vergleichen mit den eigentlichen Daten idR. kurze Länge) und diesen dann zu verschlüsseln.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;ssh&amp;lt;/h3&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/Ssh ssh] ist ein Beispiel für eine Kombination aus hash, asymmetrischer und symmetrischer Verschlüsselung. Beim ersten Verbindungsaufbau bekommt man den hash des öffentlichen Schlüssels des kontaktierten Rechners gezeigt, um zu fragen, ob man diesem Vertraut. Man bekommt den hash gezeigt, da die vergleichsweise kurze Zeichenfolge für einen Menschen leichter zu vergleichen ist, als der eigentliche lange öffentliche Schlüssel. Dann erfolgt der asymmetrische Verbindungsaufbau. Für die Dauer dieser einen Verbindung wird darüber ein Schlüssel für eine symmetrische Verschlüsselung erzeugt. Und über diese symmetrische Verschlüsselung läuft dann für diese Sitzung der eigentliche Datentransfer. Der Vorteil besteht wieder in der Geschwindigkeit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;X.509 Zertifikate&amp;lt;/h3&amp;gt;&lt;br /&gt;
Diese Zertifikate sind vergleichbar mit einem Ausweis. Sie enthalten Daten wie:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Name (bei email-Zertifikaten die Adresse(n), bei server-Zertifikaten die Domäne(n))&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Aussteller&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Seriennummer&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Gültigkeitsbeginn &amp;amp;amp; -ende&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Inhabername &amp;amp;amp; Adresse&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Verwendungszweck des Zertifikats&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;...&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Der gesamte Zertifikatstext ist dann [[#Digitale_Untschrift|unterschrieben]] mit dem privaten Schlüssel des Ausstellers, der sog. Certification Authority (CA).&lt;br /&gt;
&lt;br /&gt;
Anwendungsbeispiele für solche Zertifikate sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Https https]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[[Mac_nix_basteln:SMIME|S/MIME]]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;GPG/PGP&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Klare Nachteile sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Man muss den CAs trauen und die Vertrauenswürdigkeit vieler in den Browsern &amp;amp;amp; email-Programmen voreingestellten CAs sind zumindest fragwürdig&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Man muss die öffentlichen Schlüssel der CAs haben&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Mit ausreichend Geld kann man eine sub-CA einer CA werden. Diese kann dann wieder beliebig Schlüssel ausstellen, die nie jemand geprüft haben muss&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;OpenVPN&amp;lt;/h3&amp;gt;&lt;br /&gt;
Je nach Konfiguration kann man sich mit OpenSSL für seine [[Mac_nix_basteln:OpenVPN|OpenVPN]]-Verbindung [[#X.509_Zertifikate|X.509 Zertifikate]] selbst Erzeugen. So kann man sich eine Verbindung aufbauen indem man sich selbst ein Wurzelzertifikat macht (eine CA), Zertifikate für server und Klient mit zugehörigen privaten Schlüsseln sowie ein [[#Diffie-Hellman|Diffie-Hellmann]].&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:Krypto_Grundlagen&amp;diff=4505</id>
		<title>Mac nix basteln:Krypto Grundlagen</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:Krypto_Grundlagen&amp;diff=4505"/>
		<updated>2012-03-14T22:19:42Z</updated>

		<summary type="html">&lt;p&gt;Andre: Created page with &amp;quot;&amp;lt;h2&amp;gt;Verschlüsselungsmethoden&amp;lt;/h2&amp;gt; &amp;lt;h3&amp;gt;Hash &amp;amp; salt&amp;lt;/h3&amp;gt; Ein [http://de.wikipedia.org/wiki/Kryptologische_Hashfunktion hash] ist eine Funktion ähnlich einer [http://de.wikipedia....&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;Verschlüsselungsmethoden&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Hash &amp;amp; salt&amp;lt;/h3&amp;gt;&lt;br /&gt;
Ein [http://de.wikipedia.org/wiki/Kryptologische_Hashfunktion hash] ist eine Funktion ähnlich einer [http://de.wikipedia.org/wiki/Pr%C3%BCfsumme Prüfsumme], welche unabhängig der Eingabe einen Wert mit konstanter Zeichenzahl liefert und zusätzlich die Eigenschaft besitzt nicht umkehrbar zu sein. Sprich, es ist nicht möglich aus dem Ergebnis der hash-Funktion den Eingabewert zurückrechnen. Es ist extrem unwahrscheinlich, dass zwei unterschiedliche Eingaben den zum gleichen hash führen. Außerdem, führt schon das Ändern eines einzelnen Zeichens der Quelle zu einem drastisch anderem hash. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Beispiel: Es spielt keine Rolle, ob dieser Text ge-hash-t wird, oder eine ganze DVD. Das Ergebnis wird immer eine Zeichenkette einer definierten Länge sein. Aus diesem Ergebnis lässt sich dann weder der Inhalt der DVD rekonstruieren noch dieser Text.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiele für hash-Funktion sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Md5 md5] (gilt als geknackt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Secure_Hash_Algorithm sha]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Salt&amp;lt;/h4&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/Salt_%28Kryptologie%29 Salt]: Um die Sicherheit bei hashes zu weiter zu erhöhen, werden Zufallszahlen vor den zu-hash-enden Wert gehängt. Denn Sinn kann man nicht besser zusammenfassen als Wikipedia: &amp;lt;i&amp;gt;Hashfunktionen, wie z. B. MD5 oder SHA bilden einen bestimmten Klartext auf einen bestimmten Hash-Wert ab. So ist sofort erkennbar, welche Benutzer dasselbe Kennwort gewählt haben, da die Hashwerte identisch sind. Zudem muss bei Wörterbuch- und Brute-Force-Angriffen jedes zu prüfende mögliche Passwort nur ein einziges Mal berechnet (gehasht) werden, und dieser Wert muss anschließend nur mit einer Liste von vorliegenden Passwort-Hashes verglichen werden.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Symmetrishe Verschlüsselung&amp;lt;/h3&amp;gt;&lt;br /&gt;
Bei der symmetrischen Verschlüsselung werden die Daten (oder der Text) mit Hilfe eines einzigen Schlüssels verschlüsselt und entschlüsselt. Das Verfahren funktioniert also mit dem selben Schlüssel in beide Richtungen. Ist dieser aufgeflogen, liegt die gesamte Kommunikation offen. Vorteil ist allerdings das relativ wenig Rechenaufwand benötigt wird (es ist schnell) und diese Verfahren sogar von i5 &amp;amp;amp; i7 CPUs in hardware unterstützt werden (noch schneller). Die Sicherheit hängt zudem auch von der Schlüssellänge ab. 256b gelten z.Z. als sicher.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Beispiele für symmetrische Verschlüsselungsverfahren sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/3DES 3DES] (gilt als geknackt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Advanced_Encryption_Standard AES]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Blowfish blowfish]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Diffie-Hellman&amp;lt;/h3&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/Diffie-Hellman Diffie-Hellman] ist genaugenommen weder eine Verschlüsselungsmethode, noch deren Anwendung. Es steht dazwischen: Um bei einer symmetrische Verschlüsselung nicht gezwungen zu sein den einen geheimen Schlüssel irgendwie austauschen zu müssen, lässt man es einfach. Stattdessen hat man eine Methode gefunden, wie dieser Schlüssel von beiden Seiten durch Kommunikation bestimmt werden kann ohne, dass er jemals übertragen wird. Ist er bestimmt worden, kann die symmetrische Verschlüsselung erfolgen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Asymmetrishe Verschlüsselung&amp;lt;/h3&amp;gt;&lt;br /&gt;
Bei der asymmetrischen Verschlüsselung werden Schlüssel immer in Paaren aus privatem und öffentlichem Schlüssel erstellt. Daten werden mit Hilfe des öffentlichen Schlüssels des Empfängers verschlüsselt, können aber nur mit dem zugehörigen privaten Schlüssel wieder entschlüsselt werden. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Hier muss also nur der private Schlüssel geheim gehalten werden, während der öffentlich beliebig verteilt werden kann (und soll). Ist er aufgeflogen, liegt die gesamte Kommunikation offen. Vorteil des Verfahrens ist das vor beginn der Kommunikation kein geheimer (privater) Schlüssel ausgetauscht werden muss (wie beim symmetrischen Verfahren). Allerdings ist das Verfahren auch rechenintensiver und nutzt größere Schlüssel. 2048b gelten z.Z. als sicher.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
Für den Anwendungsfall Strompost kann man die Daten auch gegen mehrere öffentliche Schlüssel verschlüsseln (z.B. [[Mac_nix_basteln:SMIME|S/MIME]]) und dann mit den zugehörigen privaten Schlüsseln wieder entschlüsseln. Dies erlaubt dann beispielsweise, dass man Nachrichten, die man verschickt hat auch selbt noch einmal wieder lesen kann (denn man hat ja nur seinen eigenen privaten Schlüssel, nicht aber den des Empfängers), oder das man für mehrere Empfänger verschlüsseln kann.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Beispiele für asymmetrische Verschlüsselungsverfahren sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Digital_Signature_Algorithm DSA] (gilt als geknackt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/RSA-Kryptosystem RSA]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Anwendungen der Methoden&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Abspeichern von Kennwörtern&amp;lt;/h3&amp;gt;&lt;br /&gt;
Vernünftige Programme speichern Kennwörter nie im Klartext sondern nur deren hashes, damit bei unbefungtem Zugriff die Kennwörter nicht bekannt werden. Zusätzlich solten sie noch gesalzen sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Kennwort geschützte Dateinen...&amp;lt;/h3&amp;gt;&lt;br /&gt;
...sind ein Beispiel für symmetrische Verschlüsselung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Digitale Untschrift&amp;lt;/h3&amp;gt;&lt;br /&gt;
Eine digitale Untschrift ist eine Kombination aus [[#hash|hash]] &amp;amp;amp; [[#Asymmetrishe_Verschlüsselung|asymmetrisher Verschlüsselung]]. Über die zu unterschreibenden Daten wird zunächst ein hash gebildet, der dann mit dem privaten Schlüssel des Absenders verschlüsselt wird und nur mit dem zugehörigen öffentlichen Schlüssel des Absenders (der mitgeschickt wird) wieder entschlüsselt werden kann. Die asymmetrische Verschlüsselung läuft also genau entgegengesetzt wie oben beschrieben. Somit wird sichergestellt:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Das die Quelle, die des beiligendem öffentlichen Schlüssels ist (nur der private Schlüssel hat den hash so verschlüsseln können, dass der öffentliche Schlüssel den hash entschlüsselt. Sonst wäre ein anderer hash rausgekommen, der nicht zur unterschriebenen Nachricht passt)&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Die Nachricht wurde unterwegs nicht verändert. Wäre sie verändert worden würde ein hash über die Nachricht nicht dem des entschlüsselten hashwert entsprechen&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
Man hätte die Sache mit dem hash auch weg lassen können und die komplette Nachricht asymmetrisch verschlüsseln. Dies würde allerdings zur Folge haben, dass die Nachricht nicht nur Unterschrieben, sondern auch komplett verschlüsselt ist (statt nur den hash zu verschlüsseln) - was wiederum zu Folge hat, dass jemand ohne Krypto (dem auch die Unterschrift egal ist), die Nachricht nicht lesen kann. Des Weiteren würde es bei größeren Daten sehr rechenintensiv werden (lange dauern). Es ist viel schneller einen hash zu berechnen (konstante, vergleichen mit den eigentlichen Daten idR. kurze Länge) und diesen dann zu verschlüsseln.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;ssh&amp;lt;/h3&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/Ssh ssh] ist ein Beispiel für eine Kombination aus hash, asymmetrischer und symmetrischer Verschlüsselung. Beim ersten Verbindungsaufbau bekommt man den hash des öffentlichen Schlüssels des kontaktierten Rechners gezeigt, um zu fragen ob man diesem Vertraut. Man bekommt den hash gezeigt, da die vergleichsweise kurze Zeichenfolge für einen Menschen leichter zu vergleichen ist, als der eigentliche lange öffentliche Schlüssel. Dann erfolgt der asymmetrische Verbindungsaufbau. Für die Dauer dieser einen Verbindung wird darüber ein Schlüssel für eine symmetrische Verschlüsselung erzeugt. Und über diese symmetrische Verschlüsselung läuft dann für diese Sitzung der eigentliche Datentransfer. Der Vorteil besteht wieder in der Geschwindigkeit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;X.509 Zertifikate&amp;lt;/h3&amp;gt;&lt;br /&gt;
Diese Zertifikate sind vergleichbar mit einem Ausweis. Sie enthalten Daten wie:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Name (bei email-Zertifikaten die Adresse(n), bei server-Zertifikaten die Domäne(n))&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Aussteller&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Seriennummer&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Gültigkeitsbeginn &amp;amp;amp; -ende&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Inhabername &amp;amp;amp; Adresse&amp;lt;li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Verwendungszweck des Zertifikats&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;...&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Der gesamte Zertifikatstext ist dann [[#Digitale_Untschrift|unterschrieben]] mit dem privaten Schlüssel des Ausstellers, der sog. Certification Authority (CA).&lt;br /&gt;
&lt;br /&gt;
Anwendungsbeispiele für solche Zertifikate sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[http://de.wikipedia.org/wiki/Https https]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[[Mac_nix_basteln:SMIME|S/MIME]]&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;GPG/PGP&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Klare Nachteile sind:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Man muss den CAs trauen und die Vertrauenswürdigkeit vieler in den Browsern &amp;amp;amp; email-Programmen voreingestellten CAs sind zumindest fragwürdig&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Man muss die öffentlichen Schlüssel der CAs haben&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Mit ausreichend Geld kann man eine sub-CA einer CA werden. Diese kann dann wieder beliebig Schlüssel ausstellen, die nie jemand geprüft haben muss.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln&amp;diff=4504</id>
		<title>Mac nix basteln</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln&amp;diff=4504"/>
		<updated>2012-03-14T19:59:57Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Es entstand die Idee, eine Gruppe ins Leben zu rufen, die sich auf einem &amp;quot;advanced beginner&amp;quot; level mit alltäglichen OSX / Linux / Unix Problemen und hands-on beschäftigen will.&lt;br /&gt;
&lt;br /&gt;
Treffen ist locker auf Dienstags terminiert.&lt;br /&gt;
&lt;br /&gt;
==Ideen/Themen Sammlung==&lt;br /&gt;
&lt;br /&gt;
* Aufsetzen eines Vservers für das Projekt&lt;br /&gt;
** [http://www.bin-bash.de/ Konsolengrundlagen]&lt;br /&gt;
** [[Mac_nix_basteln:Quelloffene_Programme_kompilieren|Quelloffene Programme kompilieren]]&lt;br /&gt;
** [http://www.spy-hill.com/~myers/help/apple/EnableRoot.html super-user-Rechte auf Mac OS X erlangen] (root ist standmäßig deaktiviert)&lt;br /&gt;
** [[Mac_nix_basteln:softlinks_hardlinks_alias|soft links, hard links &amp;amp; alias]]&lt;br /&gt;
** [[Mac_nix_basteln:Benutzer_umbenennen|Benutzer umbenennen]]&lt;br /&gt;
** [[Mac_nix_basteln:FTPServer|FTP Server]]&lt;br /&gt;
** [[Mac_nix_basteln:talk|talk]]&lt;br /&gt;
** [[Mac_nix_basteln:SMIME|S/MIME]]&lt;br /&gt;
** [[Mac_nix_basteln:Krypto_Grundlagen|Krypto Grundlagen]]&lt;br /&gt;
** [[Mac_nix_basteln:OpenVPN|OpenVPN]]&lt;br /&gt;
** MailinglistenServer&lt;br /&gt;
** Webserver&lt;br /&gt;
** sinnvolles vergeben von Dateizugriffsrechten&lt;br /&gt;
** Hackintosh aufsetzen&lt;br /&gt;
** IPv4 vs IPv6&lt;br /&gt;
** Tor nutzen (z.B. um aus restriktiven Netzen ins freie Netz zu kommen)&lt;br /&gt;
** Postfix für die interne Kommunikation(Versand von Systemnachrichten) einrichten&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenVPN&amp;diff=4302</id>
		<title>Mac nix basteln:OpenVPN</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:OpenVPN&amp;diff=4302"/>
		<updated>2012-03-04T12:22:42Z</updated>

		<summary type="html">&lt;p&gt;Andre: Created page with &amp;quot;&amp;lt;h2&amp;gt;Testkonfiguration&amp;lt;/h2&amp;gt; &amp;lt;h3&amp;gt;Installation&amp;lt;/h3&amp;gt; Zunächst wird zum Test eine Verbindung zwischen nur zwei Rechnern aufgebaut. Da diese [http://www.openvpn.net/index.php/open-sou...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;Testkonfiguration&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Installation&amp;lt;/h3&amp;gt;&lt;br /&gt;
Zunächst wird zum Test eine Verbindung zwischen nur zwei Rechnern aufgebaut. Da diese [http://www.openvpn.net/index.php/open-source/documentation/miscellaneous/static-key-mini-howto.html Anleitung] für Anfänger nicht gerade ausführlich ist und für Fortgeschrittene belanglos, wird sie ein wenig weiter aufgeschlüsselt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Im ersten Schritt braucht man zwei Rechner zum Testen. Dabei ist es auch ausreichend wenn man sich beispielsweise zwei [http://de.wikipedia.org/wiki/Virtuelle_Maschine Virtuelle Maschinen] mit Linux aufsetzt. Also...&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;[https://www.virtualbox.org/ VirtualBox] installieren und zwei Linuxmaschinen der Wahl aufsetzen. Dabei kann die zweite VM eine Kopie der ersten sein - geht schneller (&amp;lt;code&amp;gt;rechtsklick auf die VM / Klonen&amp;lt;/code&amp;gt;). Wichtig beim Anlegen des Klons ist, darauf zu achten dass man den Haken bei &amp;lt;code&amp;gt;Zuweisen neuer MAC-Adressen für alle Netzwerkkarten&amp;lt;/code&amp;gt; setzt&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Dafür sorgen, dass die VMs vom router jeweils eigene IP-Adressen zugewiesen bekommen, als wären es Rechner die ganz normal im Intranet hängen: &amp;lt;code&amp;gt;VM anklicken / Ändern / Netzwerk / Adapter 1 / Angeschlossen an: Netzwerkbrücke&amp;lt;/code&amp;gt;. Da die VMs unterschiedliche MACs haben, bekommen sie nun auch individuelle IPs&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Auf den VMs muss jeweils OpenVPN installiert werden. Unter Linux: &amp;lt;code&amp;gt;$ apt-get install openvpn&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Konfiguration&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
	Jetzt kann man wieder der [http://www.openvpn.net/index.php/open-source/documentation/miscellaneous/static-key-mini-howto.html Anleitung] folgen.&lt;br /&gt;
	&amp;lt;ul&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;Statischen Schlüssel für die Verschlüsselung der Verbindung auf dem OpenVPN-Server erzeugen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ openvpn --genkey --secret static.key&amp;lt;/code&amp;gt;. &amp;lt;br&amp;gt;Dieser Schlüssel muss auch auf das den Klienten kopiert werden.&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Die Konfigurationsdatei &amp;lt;i&amp;gt;server.conf&amp;lt;/i&amp;gt; auf dem Server anlegen:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;&lt;br /&gt;
				dev tun&amp;lt;br&amp;gt;&lt;br /&gt;
    			ifconfig 10.8.0.1 10.8.0.2&amp;lt;br&amp;gt;&lt;br /&gt;
    			secret static.key&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
			Es wird eine Virtuelle Netzwerkkarte [http://backreference.org/2010/03/26/tuntap-interface-tutorial/ tunnel device] angelegt. Die server-IP im VPN endet auf 1, die des Klienten auf 2 und die Datei &amp;lt;i&amp;gt;static.key&amp;lt;/i&amp;gt; wird für die Verschlüsselung benutzt&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Die Konfigurationsdatei &amp;lt;i&amp;gt;client.conf&amp;lt;/i&amp;gt; auf dem Klienten anlegen:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;&lt;br /&gt;
				remote myremote.mydomain&amp;lt;br&amp;gt;&lt;br /&gt;
				dev tun&amp;lt;br&amp;gt;&lt;br /&gt;
				ifconfig 10.8.0.2 10.8.0.1&amp;lt;br&amp;gt;&lt;br /&gt;
				secret static.key&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
			&amp;lt;i&amp;gt;myremote.mydomain&amp;lt;/i&amp;gt; ist durch dei Adresse des servers im Intranet zu ersetzen.	Auch hier wird das virtuelle Tunnelgerät angelegt. Jetzt kommt die Klienten-IP im VPN zuerst, dann die server-IP und die Datei &amp;lt;i&amp;gt;static.key&amp;lt;/i&amp;gt; wird für die Verschlüsselung benutzt&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Starten auf dem server als root:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ sudo openvpn --config server.conf &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			Starten auf dem Klienten als root:&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;code&amp;gt;$ sudo openvpn --config client.conf &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Testlauf&amp;lt;/h3&amp;gt;&lt;br /&gt;
Jetzt sollte der Klient in der Lage sein den serven anzupingen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ ping 10.8.0.1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn&#039;s klappt, kann man sich die routing-Informationen anschauen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ route -n&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Ziel&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Router&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Genmask&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;FLags&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Metric&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Ref&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Use&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;Iface&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0.0.0.0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;&amp;lt;i&amp;gt;router-IP im Intranet&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0.0.0.0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;UG&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;eth0&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;10.8.0.1&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0.0.0.0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;255.255.255.255&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;UH&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;thn0&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Die IP 10.8.0.1 ist also dem Tunnelgerät zugeordnet worüber die beiden Rechner nun kommunizieren können.&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln&amp;diff=4298</id>
		<title>Mac nix basteln</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln&amp;diff=4298"/>
		<updated>2012-03-04T09:26:25Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Es entstand die Idee, eine Gruppe ins Leben zu rufen, die sich auf einem &amp;quot;advanced beginner&amp;quot; level mit alltäglichen OSX / Linux / Unix Problemen und hands-on beschäftigen will.&lt;br /&gt;
&lt;br /&gt;
Treffen ist locker auf Dienstags terminiert.&lt;br /&gt;
&lt;br /&gt;
==Ideen/Themen Sammlung==&lt;br /&gt;
&lt;br /&gt;
* Aufsetzen eines Vservers für das Projekt&lt;br /&gt;
** [http://www.bin-bash.de/ Konsolengrundlagen]&lt;br /&gt;
** [[Mac_nix_basteln:Quelloffene_Programme_kompilieren|Quelloffene Programme kompilieren]]&lt;br /&gt;
** [http://www.spy-hill.com/~myers/help/apple/EnableRoot.html super-user-Rechte auf Mac OS X erlangen] (root ist standmäßig deaktiviert)&lt;br /&gt;
** [[Mac_nix_basteln:softlinks_hardlinks_alias|soft links, hard links &amp;amp; alias]]&lt;br /&gt;
** [[Mac_nix_basteln:Benutzer_umbenennen|Benutzer umbenennen]]&lt;br /&gt;
** [[Mac_nix_basteln:FTPServer|FTP Server]]&lt;br /&gt;
** [[Mac_nix_basteln:talk|talk]]&lt;br /&gt;
** [[Mac_nix_basteln:SMIME|S/MIME]]&lt;br /&gt;
** [[Mac_nix_basteln:OpenVPN|OpenVPN]]&lt;br /&gt;
** MailinglistenServer&lt;br /&gt;
** Webserver&lt;br /&gt;
** sinnvolles vergeben von Dateizugriffsrechten&lt;br /&gt;
** Hackintosh aufsetzen&lt;br /&gt;
** IPv4 vs IPv6&lt;br /&gt;
** Tor nutzen (z.B. um aus restriktiven Netzen ins freie Netz zu kommen)&lt;br /&gt;
** Postfix für die interne Kommunikation(Versand von Systemnachrichten) einrichten&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:Quelloffene_Programme_kompilieren&amp;diff=4129</id>
		<title>Mac nix basteln:Quelloffene Programme kompilieren</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:Quelloffene_Programme_kompilieren&amp;diff=4129"/>
		<updated>2012-02-24T17:20:55Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;Auf Mac OS X&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compiler: dieser übersetzt den Quelltext in Maschinensprache. Man kann &amp;lt;i&amp;gt;Xcode&amp;lt;/i&amp;gt; installieren. Bei bei 10.7 kann man es sich aus dem App Store ziehen, bei 10.6 ist es auf der Installations-DVD zu finden&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Packetverwaltungsprogramm: es übernimmt drei Schritte des Bauens von Programmen:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Konfigurieren: wählt sinnvolle Voreinstellungen zum Kompilieren des Programmes auf dem jeweiligen Betriebssystem&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Kompilieren: schmeisst den Quelltext (welcher nicht nur in einer Datei sein, sondern aus einem ganzen Paket von Bibliotheken bestehen kann) in den compiler (hier: &amp;lt;i&amp;gt;make&amp;lt;/i&amp;gt;, welches mit &amp;lt;i&amp;gt;Xcode&amp;lt;/i&amp;gt; kommt)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Installieren: schiebt die beim Kompilieren entstanden Dateien in die richtigen Verzeichnisse und nimmt Einstellungen vor, damit das Programm auf dem jeweiligen Betriebssystem auch lauffähig ist&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
Als Paketverwaltungsprogram wählen wir [http://en.wikipedia.org/wiki/Homebrew_%28package_management_software%29 homebrew]. Zum Herunterladen und Installieren von &amp;lt;i&amp;gt;homebrew&amp;lt;/i&amp;gt; schreiben wir ins Terminal:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ /usr/bin/ruby -e &amp;quot;$(curl -fsSL https://raw.github.com/gist/323731)&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Das bedeutet soviel wie [http://de.wikipedia.org/wiki/Ruby_%28Programmiersprache%29 ruby], schnapp dir mal mit Hilfe von [http://de.wikipedia.org/wiki/CURL cURL] den an der angegeben Adresse liegenden Quelltext und führe diesen aus (Parameter &amp;lt;code&amp;gt;-e&amp;lt;/code&amp;gt;)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;homebrew&amp;lt;/i&amp;gt; hat eine Datenbank welche software es so gibt, wie es damit umgehen soll und wo die im Netz so rumliegt. Um diese Datenbank zu aktuallisieren schreiben wir:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ brew update&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Jetzt installieren wir noch die Versionierungsverwaltung [http://de.wikipedia.org/wiki/Git git]:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ brew install git&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Installieren: Im letzten Schritt kann man dann die gewünschte software, die man eigentlich installieren wollte, herunterladen, übersetzen und installieren. Dies läuft auch nicht anders als schon die Installation von &amp;lt;i&amp;gt;git&amp;lt;/i&amp;gt;. Als weiteres Beispiel wird der FTP-Dienst &amp;lt;i&amp;gt;VSFTPd&amp;lt;/i&amp;gt; installiert:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ brew install vsftpd&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sollten weitere Eingaben erforderlich sein, weisst &amp;lt;i&amp;gt;homebrew&amp;lt;/i&amp;gt; darauf hin.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Brew entfernen&amp;lt;/h4&amp;gt;&lt;br /&gt;
Falls man &amp;lt;i&amp;gt;brew&amp;lt;/i&amp;gt; wieder los werden möchte:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd `brew --prefix`&amp;lt;br&amp;gt;&lt;br /&gt;
$ rm -rf Cellar&amp;lt;br&amp;gt;&lt;br /&gt;
$ brew prune&amp;lt;br&amp;gt;&lt;br /&gt;
$ rm -rf Library .git .gitignore bin/brew README.md share/man/man1/brew&amp;lt;br&amp;gt;&lt;br /&gt;
$ rm -rf ~/Library/Caches/Homebrew&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Mac_nix_basteln]]&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:SMIME&amp;diff=4096</id>
		<title>Mac nix basteln:SMIME</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:SMIME&amp;diff=4096"/>
		<updated>2012-02-22T21:09:06Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;S/MIME&amp;lt;/h2&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/SMIME S/MIME] ist eine Methode zum signieren und verschlüsseln von Nachrichten, ähnlich wie das in der Öffentlichkeit vielleicht bekanntere PGP oder seine quelloffene Implementation [http://de.wikipedia.org/wiki/GNU_Privacy_Guard GPG]. Im Gegensatz zu GPG bietet S/MIME einige Komfortvorteile:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;S/MIME wird standardmäßig von allen (gängigen) email-Programmen unterstützt (vielleicht mal mit der Ausnahme mobiler Plattformen). D.h. man muss sich nicht um irgendwelche plugins oder sonstige Extraprogramme kümmern, die dann bei der nächsten Aktualisierung des email-Progs nicht mehr laufen&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Schlüssel werden automatisch durch das Versenden signierter Nachrichten verteilt. Man brauch sich also nicht um Schlüsselserver kümmern, oder jemanden seinen öffentlichen Schlüssel zusenden und diesem dann erklären, dass er ihn bei sich im Schlüsselbund hinzufügen muss&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Man bracht nicht jedem Schlüssel sagen, dass man ihm vertraut. Vertraut man dem Wurzelzertifikat, vertraut man allen Schlüsseln, die dagegen gezeichnet wurden&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Das System besteht auf Vertrauen gegenüber den Zertifikatsstellen (Certification Authorities = CAs), bzw. deren Wurzelzertifikaten&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Digitale Signatur&amp;lt;/h4&amp;gt;&lt;br /&gt;
Eine Signatur stellt sicher, dass der Absender der ist, der er vorgibt zu sein und dass die Nachricht unterwegs nicht verändert wurde. Sie entspricht also in etwa einem Siegel auf einem konventionellen Brief.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Verschlüsselung&amp;lt;/h4&amp;gt;&lt;br /&gt;
Verschlüsselung stellt sicher, dass nur designierte Empfänger die Nachricht lesen kann. Sie entspricht also grob dem Umschlag eines konventionellen Briefes. Eine unverschlüsselte Nachricht entspricht also in etwa einer Postkarte: Jeder unterwegs kann sie lesen und auch drin rum kritzeln.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Zertifikate&amp;lt;/h4&amp;gt;&lt;br /&gt;
Das Unterschreiben und Verschlüsseln erfolgt durch sog. Zertifikate. Dabei gibt es verschiedene [http://en.wikipedia.org/wiki/Public_key_certificate#Classification Typen]. Man kann nämlich nicht nur Strompost verschlüsseln, sondern auch Quelltext unterschreiben und der Gleichen. Da wir hier von Strompost reden, reicht uns ein Klasse 1 Zertifikat. Doch woher bekommt man das? Dies kann von den oben genannten Zertifikatsstellen ausgestellt werden. Derer gibt es sehr viele: z.B. Verisign, thawte... oder auch große Firmen haben ihre eigenen Wurzelzertifikate (Telekom, Visa....). Diese ganzen Wurzelzertifikate sind bei den Betriebsystemen bzw. den Mozillaprodukten (Firefox und Thunderbird - welche im Gegensatz zu den anderen Browsern und email-Progs nicht auf die Schlüsseldatenbank des Betriebssystems zurückgreifen) idR. vorinstalliert. Das Problem ist, dass die meisten Geld für die Ausstellung eines Zertifikats für den Anwender haben möchten. Der nicht gewinnorientierte Verein [https://www.cacert.org/ CAcert] stellt sie kostenlos aus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;CAcert&amp;lt;/h3&amp;gt;&lt;br /&gt;
Das Problem mit [https://www.cacert.org/ CAcert] ist, dass deren Wurzelzertifikate im Gegensatz zu den anderen genannten nicht vorinstalliert ist. Diese sollte man sich also zunächst einmal installieren. (Vorweg: Alle Schritte muss man nur einmal machen. Danach hat man keinerlei Mühe mehr)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;Wurzelzertifikate installieren&amp;lt;/h4&amp;gt;&lt;br /&gt;
Die [http://en.wikipedia.org/wiki/Public_key_certificate#Classification Klasse 1 &amp;amp;amp; 3] Wurzelzertifikate findet man unter [https://www.cacert.org/index.php?id=3 https://www.cacert.org/index.php?id=3]. Dort klickt man einfach &amp;lt;i&amp;gt;Root-Zertifikat (PEM Format)&amp;lt;/i&amp;gt; und &amp;lt;i&amp;gt;Zwischen Zertifikat (PEM Format)&amp;lt;/i&amp;gt; an. Was nun folgt ist stark vom eigenen System abhängig.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;OS X (Safari / Apple Mail)&amp;lt;/b&amp;gt;: Safari wird die Zertifikate einfach nur speichern. Man klickt dann die gespeicherten Dateien &amp;lt;i&amp;gt;root.crt&amp;lt;/i&amp;gt; und &amp;lt;i&amp;gt;class3.crt&amp;lt;/i&amp;gt; im &amp;lt;i&amp;gt;Downloads&amp;lt;/i&amp;gt;-Verzeichnis an. Worauf sie der OS X Schlüsselbundverwaltung hinzugefügt werden. Man hat die möglichkeit das Zertifikat für &#039;&#039;System&#039;&#039; (alle Benutzer) oder &#039;&#039;Anmeldung&#039;&#039; (der Angemeldete Benutzer) zu installieren. Beim Wurzelzertifikat macht es Sinn das Systemweit zu machen, beim eigenen Zertifikat sollte man &amp;lt;i&amp;gt;Anmeldung&amp;lt;/i&amp;gt; wählen.Das Zertifikat ist nun installiert und Systemweit verfügbar. Also beispielsweise auch für &amp;lt;i&amp;gt;Apple Mail&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Windows (Internet Explorer / Outlook)&amp;lt;/b&amp;gt;: Der Internet Explorer unter Windows wird ein Fenster mit Zertifikatsinformationen öffnen. Man klickt unten auf den Knopf &amp;lt;i&amp;gt;Zertifikat installieren...&amp;lt;/i&amp;gt; und klickt solange &amp;lt;i&amp;gt;OK&amp;lt;/i&amp;gt; und &amp;lt;i&amp;gt;Weiter&amp;lt;/i&amp;gt; bis der Dialog durch ist. Das Zertifikat ist nun installiert und Windows-Systemweit verfügbar. Also beispielsweise auch für &amp;lt;i&amp;gt;Outlook&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Firefox / Thunderbird (egal welches Betriebssystem)&amp;lt;/b&amp;gt;: Firefox fragt, wofür man das jeweilige Zertifikat nutzen möchte: um Websites zu identifizieren ([http://de.wikipedia.org/wiki/Https https]), um Email-Nutzer zu identifizieren (S/MIME) oder um software-Entwickler zu identifizieren. Man kann alles drei anhaken, OK und fertig. Die Anleitung um Zertifikate in Thunderbird zu nutzen findet sich [http://www.thunderbird-mail.de/wiki/Mailverschl%C3%BCsselung_mit_S/MIME#Wie_installiere_ich_ein_X.509-Zertifikat_in_TB.3F hier].&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Chrome, Opera, Konquerer...&amp;lt;/b&amp;gt;: Nicht ausprobiert. Wird aber wahrscheinlich irgendwie ähnlich wie die obigen Lösungen laufen.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;Eigenes Zertifikat erzeugen&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Registrieren:&amp;lt;/b&amp;gt; Zunächst [https://www.cacert.org/index.php?id=1 registriert man sich an]. Hier empfiehlt es sich, im Gegensatz zu den meisten anderen Orten im Netz, seine echten persönlichen Daten anzugeben. Schliesslich möchte man das Zertifikat benutzen, um sich zu identifizieren.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;email-Adressen hinzufügen:&amp;lt;/b&amp;gt; jetzt meldet man sich rechts im Menü auf der [https://www.cacert.org/index.php?id=4 CAcert-Seite] an und gelangt so in sein persönliches Konto. Man wählt wiederum rechts im Menü &amp;lt;i&amp;gt;+ E-Mail-Konto&amp;lt;/i&amp;gt;, klappt es aus und geht auf &amp;lt;i&amp;gt;Hinzufügen&amp;lt;/i&amp;gt;. Hier sollte man alle Adressen hinzufügen mit denen man vorhat zu unterschreiben. Vorsicht bei googlemail: auch wenn man selbst nur &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@gmail.com verwendet, verschickt googlemail die emails immer als &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@googlemail.com. Man muss also sowohl &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@gmail.com als auch &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@googlemail.com hinzufügen, sonst kommt es zu Fehlern.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Zertifikat ausstellen:&amp;lt;/b&amp;gt; Man klickt rechts im Menü auf &amp;lt;i&amp;gt;+ Client-Zertifikate&amp;lt;/i&amp;gt; und dann auf &amp;lt;i&amp;gt;neu&amp;lt;/i&amp;gt;. Nun wählt man die email-Adressen aus, für die das Zertifikat gelten soll (die Auswahlmöglichkeit besteht aus den eben hinzugefügten), klickt &amp;lt;i&amp;gt;Signieren mit dem Klasse 1 Root Zertifikat&amp;lt;/i&amp;gt; und setzt einen Haken bei &amp;lt;i&amp;gt;Zertifikats-Anmeldung mit diesem Zertifikat aktivieren&amp;lt;/i&amp;gt;. Mit &amp;lt;i&amp;gt;weiter&amp;lt;/i&amp;gt; geht&#039;s auf die nächste Seite. Dort wählt man unter &amp;lt;i&amp;gt;Schlüsselgröße&amp;lt;/i&amp;gt; hochgradig aus (entspricht z.Z. 4096bit) und klickt auf erstellen.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;Eigenes Zertifikat installieren&amp;lt;/h4&amp;gt;&lt;br /&gt;
Je nach System fügt man den Schlüssel nun seinem System hinzu:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;OS X (Safari / Apple Mail)&amp;lt;/b&amp;gt;: wie man es schon für das [http://wiki.attraktor.org/Mac_nix_basteln:SMIME#Wurzelzertifikate_installieren Wurzelzertifikat] getan hat. Danach gibt es in Apple Mail zwei neue Symbole beim Verfassen eienr neuen Nachricht. Ein Schloss zum Verschlüsseln und ein Stift zum signieren.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Windows (Internet Explorer / Outlook)&amp;lt;/b&amp;gt;: Zuerst [http://www.uni-muenster.de/WWUCA/info/howto-restore-outlook.html das], dann [http://www.uni-muenster.de/WWUCA/info/howto-select-outlook.html das], und dann [http://www.uni-muenster.de/WWUCA/info/howto-email-smime-outlook.html das].&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Firefox / Thunderbird (egal welches Betriebssystem)&amp;lt;/b&amp;gt;: Man geht in Firefox unter &#039;&#039;Einstellungen / Erweitert / Verschlüsselung / Zertifikate anzeigen / Ihre Zertifikate&#039;&#039; und dann auf sichern. Mit dem gespeicherten Zertifikat befolgt [http://www.thunderbird-mail.de/wiki/Mailverschl%C3%BCsselung_mit_S/MIME#Installation_des_eigenen_Zertifikates_im_Zertifikat-Manager diese Anleitung] für &#039;&#039;Thunderbird&#039;&#039;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s auch schon. Nun sollte das jeweilige email-Programm in der Lage sein Nachrichten zu signieren und auch zu verschlüsseln. Letzteres vorausgesetzt man hat den öffentlichen Schlüssel des Empfängers - was man automatisch hat sobald man einmal eine signierte Nachricht von demjenigen empfangen hat.&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:SMIME&amp;diff=4095</id>
		<title>Mac nix basteln:SMIME</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:SMIME&amp;diff=4095"/>
		<updated>2012-02-22T21:04:36Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;S/MIME&amp;lt;/h2&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/SMIME S/MIME] ist eine Methode zum signieren und verschlüsseln von Nachrichten, ähnlich wie das in der Öffentlichkeit vielleicht bekanntere PGP oder seine quelloffene Implementation [http://de.wikipedia.org/wiki/GNU_Privacy_Guard GPG]. Im Gegensatz zu GPG bietet S/MIME einige Komfortvorteile:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;S/MIME wird standardmäßig von allen (gängigen) email-Programmen unterstützt (vielleicht mal mit der Ausnahme mobiler Plattformen). D.h. man muss sich nicht um irgendwelche plugins oder sonstige Extraprogramme kümmern, die dann bei der nächsten Aktualisierung des email-Progs nicht mehr laufen&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Schlüssel werden automatisch durch das Versenden signierter Nachrichten verteilt. Man brauch sich also nicht um Schlüsselserver kümmern, oder jemanden seinen öffentlichen Schlüssel zusenden und diesem dann erklären, dass er ihn bei sich im Schlüsselbund hinzufügen muss&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Man bracht nicht jedem Schlüssel sagen, dass man ihm vertraut. Vertraut man dem Wurzelzertifikat, vertraut man allen Schlüsseln, die dagegen gezeichnet wurden&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Das System besteht auf Vertrauen gegenüber den Zertifikatsstellen (Certification Authorities = CAs), bzw. deren Wurzelzertifikaten&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Digitale Signatur&amp;lt;/h4&amp;gt;&lt;br /&gt;
Eine Signatur stellt sicher, dass der Absender der ist, der er vorgibt zu sein und dass die Nachricht unterwegs nicht verändert wurde. Sie entspricht also in etwa einem Siegel auf einem konventionellen Brief.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Verschlüsselung&amp;lt;/h4&amp;gt;&lt;br /&gt;
Verschlüsselung stellt sicher, dass nur designierte Empfänger die Nachricht lesen kann. Sie entspricht also grob dem Umschlag eines konventionellen Briefes. Eine unverschlüsselte Nachricht entspricht also in etwa einer Postkarte: Jeder unterwegs kann sie lesen und auch drin rum kritzeln.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Zertifikate&amp;lt;/h4&amp;gt;&lt;br /&gt;
Das Unterschreiben und Verschlüsseln erfolgt durch sog. Zertifikate. Dabei gibt es verschiedene [http://en.wikipedia.org/wiki/Public_key_certificate#Classification Typen]. Man kann nämlich nicht nur Strompost verschlüsseln, sondern auch Quelltext unterschreiben und der Gleichen. Da wir hier von Strompost reden, reicht uns ein Klasse 1 Zertifikat. Doch woher bekommt man das? Dies kann von den oben genannten Zertifikatsstellen ausgestellt werden. Derer gibt es sehr viele: z.B. Verisign, thawte... oder auch große Firmen haben ihre eigenen Wurzelzertifikate (Telekom, Visa....). Diese ganzen Wurzelzertifikate sind bei den Betriebsystemen bzw. den Mozillaprodukten (Firefox und Thunderbird - welche im Gegensatz zu den anderen Browsern und email-Progs nicht auf die Schlüsseldatenbank des Betriebssystems zurückgreifen) idR. vorinstalliert. Das Problem ist, dass die meisten Geld für die Ausstellung eines Zertifikats für den Anwender haben möchten. Der nicht gewinnorientierte Verein [https://www.cacert.org/ CAcert] stellt sie kostenlos aus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;CAcert&amp;lt;/h3&amp;gt;&lt;br /&gt;
Das Problem mit [https://www.cacert.org/ CAcert] ist, dass deren Wurzelzertifikate im Gegensatz zu den anderen genannten nicht vorinstalliert ist. Diese sollte man sich also zunächst einmal installieren. (Vorweg: Alle Schritte muss man nur einmal machen. Danach hat man keinerlei Mühe mehr)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;Wurzelzertifikate installieren&amp;lt;/h4&amp;gt;&lt;br /&gt;
Die [http://en.wikipedia.org/wiki/Public_key_certificate#Classification Klasse 1 &amp;amp;amp; 3] Wurzelzertifikate findet man unter [https://www.cacert.org/index.php?id=3 https://www.cacert.org/index.php?id=3]. Dort klickt man einfach &amp;lt;i&amp;gt;Root-Zertifikat (PEM Format)&amp;lt;/i&amp;gt; und &amp;lt;i&amp;gt;Zwischen Zertifikat (PEM Format)&amp;lt;/i&amp;gt; an. Was nun folgt ist stark vom eigenen System abhängig.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;OS X (Safari / Apple Mail)&amp;lt;/b&amp;gt;: Safari wird die Zertifikate einfach nur speichern. Man klickt dann die gespeicherten Dateien &amp;lt;i&amp;gt;root.crt&amp;lt;/i&amp;gt; und &amp;lt;i&amp;gt;class3.crt&amp;lt;/i&amp;gt; im &amp;lt;i&amp;gt;Downloads&amp;lt;/i&amp;gt;-Verzeichnis an. Worauf sie der OS X Schlüsselbundverwaltung hinzugefügt werden. Man hat die möglichkeit das Zertifikat für &#039;&#039;System&#039;&#039; (alle Benutzer) oder &#039;&#039;Anmeldung&#039;&#039; (der Angemeldete Benutzer) zu installieren. Beim Wurzelzertifikat macht es Sinn das Systemweit zu machen, beim eigenen Zertifikat sollte man &amp;lt;i&amp;gt;Anmeldung&amp;lt;/i&amp;gt; wählen.Das Zertifikat ist nun installiert und Systemweit verfügbar. Also beispielsweise auch für &amp;lt;i&amp;gt;Apple Mail&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Windows (Internet Explorer / Outlook)&amp;lt;/b&amp;gt;: Der Internet Explorer unter Windows wird ein Fenster mit Zertifikatsinformationen öffnen. Man klickt unten auf den Knopf &amp;lt;i&amp;gt;Zertifikat installieren...&amp;lt;/i&amp;gt; und klickt solange &amp;lt;i&amp;gt;OK&amp;lt;/i&amp;gt; und &amp;lt;i&amp;gt;Weiter&amp;lt;/i&amp;gt; bis der Dialog durch ist. Das Zertifikat ist nun installiert und Windows-Systemweit verfügbar. Also beispielsweise auch für &amp;lt;i&amp;gt;Outlook&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Firefox / Thunderbird (egal welches Betriebssystem)&amp;lt;/b&amp;gt;: Firefox fragt, wofür man das jeweilige Zertifikat nutzen möchte: um Websites zu identifizieren ([http://de.wikipedia.org/wiki/Https https]), um Email-Nutzer zu identifizieren (S/MIME) oder um software-Entwickler zu identifizieren. Man kann alles drei anhaken, OK und fertig. Die Anleitung um Zertifikate in Thunderbird zu nutzen findet sich [http://www.thunderbird-mail.de/wiki/Mailverschl%C3%BCsselung_mit_S/MIME#Wie_installiere_ich_ein_X.509-Zertifikat_in_TB.3F hier].&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Chrome, Opera, Konquerer...&amp;lt;/b&amp;gt;: Nicht ausprobiert. Wird aber wahrscheinlich irgendwie ähnlich wie die obigen Lösungen laufen.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;Eigenes Zertifikat erzeugen&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Registrieren:&amp;lt;/b&amp;gt; Zunächst [https://www.cacert.org/index.php?id=1 registriert man sich an]. Hier empfiehlt es sich, im Gegensatz zu den meisten anderen Orten im Netz, seine echten persönlichen Daten anzugeben. Schliesslich möchte man das Zertifikat benutzen, um sich zu identifizieren.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;email-Adressen hinzufügen:&amp;lt;/b&amp;gt; jetzt meldet man sich rechts im Menü auf der [https://www.cacert.org/index.php?id=4 CAcert-Seite] an und gelangt so in sein persönliches Konto. Man wählt wiederum rechts im Menü &amp;lt;i&amp;gt;+ E-Mail-Konto&amp;lt;/i&amp;gt;, klappt es aus und geht auf &amp;lt;i&amp;gt;Hinzufügen&amp;lt;/i&amp;gt;. Hier sollte man alle Adressen hinzufügen mit denen man vorhat zu unterschreiben. Vorsicht bei googlemail: auch wenn man selbst nur &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@gmail.com verwendet, verschickt googlemail die emails immer als &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@googlemail.com. Man muss also sowohl &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@gmail.com als auch &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@googlemail.com hinzufügen, sonst kommt es zu Fehlern.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Zertifikat ausstellen:&amp;lt;/b&amp;gt; Man klickt rechts im Menü auf &amp;lt;i&amp;gt;+ Client-Zertifikate&amp;lt;/i&amp;gt; und dann auf &amp;lt;i&amp;gt;neu&amp;lt;/i&amp;gt;. Nun wählt man die email-Adressen aus, für die das Zertifikat gelten soll (die Auswahlmöglichkeit besteht aus den eben hinzugefügten), klickt &amp;lt;i&amp;gt;Signieren mit dem Klasse 1 Root Zertifikat&amp;lt;/i&amp;gt; und setzt einen Haken bei &amp;lt;i&amp;gt;Zertifikats-Anmeldung mit diesem Zertifikat aktivieren&amp;lt;/i&amp;gt;. Mit &amp;lt;i&amp;gt;weiter&amp;lt;/i&amp;gt; geht&#039;s auf die nächste Seite. Dort wählt man unter &amp;lt;i&amp;gt;Schlüsselgröße&amp;lt;/i&amp;gt; hochgradig aus (entspricht z.Z. 4096bit) und klickt auf erstellen. Je nach System fügt man den Schlüssel nun seinem System hinzu:&lt;br /&gt;
	&amp;lt;ul&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;OS X (Safari / Apple Mail)&amp;lt;/b&amp;gt;: wie man es schon für das [http://wiki.attraktor.org/Mac_nix_basteln:SMIME#Wurzelzertifikate_installieren Wurzelzertifikat] getan hat. Danach gibt es in Apple Mail zwei neue Symbole beim Verfassen eienr neuen Nachricht. Ein Schloss zum Verschlüsseln und ein Stift zum signieren.&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Windows (Internet Explorer / Outlook)&amp;lt;/b&amp;gt;: Zuerst [http://www.uni-muenster.de/WWUCA/info/howto-restore-outlook.html das], dann [http://www.uni-muenster.de/WWUCA/info/howto-select-outlook.html das], und dann [http://www.uni-muenster.de/WWUCA/info/howto-email-smime-outlook.html das].&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Firefox / Thunderbird (egal welches Betriebssystem)&amp;lt;/b&amp;gt;: Man geht in Firefox unter &#039;&#039;Einstellungen / Erweitert / Verschlüsselung / Zertifikate anzeigen / Ihre Zertifikate&#039;&#039; und dann auf sichern. Mit dem gespeicherten Zertifikat befolgt [http://www.thunderbird-mail.de/wiki/Mailverschl%C3%BCsselung_mit_S/MIME#Installation_des_eigenen_Zertifikates_im_Zertifikat-Manager diese Anleitung] für &#039;&#039;Thunderbird&#039;&#039;&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s auch schon. Nun sollte das jeweilige email-Programm in der Lage sein Nachrichten zu signieren und auch zu verschlüsseln. Letzteres vorausgesetzt man hat den öffentlichen Schlüssel des Empfängers - was man automatisch hat sobald man einmal eine signierte Nachricht von demjenigen empfangen hat.&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:SMIME&amp;diff=4090</id>
		<title>Mac nix basteln:SMIME</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:SMIME&amp;diff=4090"/>
		<updated>2012-02-22T17:53:20Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;S/MIME&amp;lt;/h2&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/SMIME S/MIME] ist eine Methode zum signieren und verschlüsseln von Nachrichten, ähnlich wie das in der Öffentlichkeit vielleicht bekanntere PGP oder seine quelloffene Implementation [http://de.wikipedia.org/wiki/GNU_Privacy_Guard GPG]. Im Gegensatz zu GPG bietet S/MIME einige Komfortvorteile:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;S/MIME wird standardmäßig von allen (gängigen) email-Programmen unterstützt (vielleicht mal mit der Ausnahme mobiler Plattformen). D.h. man muss sich nicht um irgendwelche plugins oder sonstige Extraprogramme kümmern, die dann bei der nächsten Aktualisierung des email-Progs nicht mehr laufen&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Schlüssel werden automatisch durch das Versenden signierter Nachrichten verteilt. Man brauch sich also nicht um Schlüsselserver kümmern, oder jemanden seinen öffentlichen Schlüssel zusenden und diesem dann erklären, dass er ihn bei sich im Schlüsselbund hinzufügen muss&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Man bracht nicht jedem Schlüssel sagen, dass man ihm vertraut. Vertraut man dem Wurzelzertifikat, vertraut man allen Schlüsseln, die dagegen gezeichnet wurden&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Das System besteht auf Vertrauen gegenüber den Zertifikatsstellen (Certification Authorities = CAs), bzw. deren Wurzelzertifikaten&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Digitale Signatur&amp;lt;/h4&amp;gt;&lt;br /&gt;
Eine Signatur stellt sicher, dass der Absender der ist, der er vorgibt zu sein und dass die Nachricht unterwegs nicht verändert wurde. Sie entspricht also in etwa einem Siegel auf einem konventionellen Brief.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Verschlüsselung&amp;lt;/h4&amp;gt;&lt;br /&gt;
Verschlüsselung stellt sicher, dass nur designierte Empfänger die Nachricht lesen kann. Sie entspricht also grob dem Umschlag eines konventionellen Briefes. Eine unverschlüsselte Nachricht entspricht also in etwa einer Postkarte: Jeder unterwegs kann sie lesen und auch drin rum kritzeln.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Zertifikate&amp;lt;/h4&amp;gt;&lt;br /&gt;
Das Unterschreiben und Verschlüsseln erfolgt durch sog. Zertifikate. Dabei gibt es verschiedene [http://en.wikipedia.org/wiki/Public_key_certificate#Classification Typen]. Man kann nämlich nicht nur Strompost verschlüsseln, sondern auch Quelltext unterschreiben und der Gleichen. Da wir hier von Strompost reden, reicht uns ein Klasse 1 Zertifikat. Doch woher bekommt man das? Dies kann von den oben genannten Zertifikatsstellen ausgestellt werden. Derer gibt es sehr viele: z.B. Verisign, thawte... oder auch große Firmen haben ihre eigenen Wurzelzertifikate (Telekom, Visa....). Diese ganzen Wurzelzertifikate sind bei den Betriebsystemen bzw. den Mozillaprodukten (Firefox und Thunderbird - welche im Gegensatz zu den anderen Browsern und email-Progs nicht auf die Schlüsseldatenbank des Betriebssystems zurückgreifen) idR. vorinstalliert. Das Problem ist, dass die meisten Geld für die Ausstellung eines Zertifikats für den Anwender haben möchten. Der nicht gewinnorientierte Verein [https://www.cacert.org/ CAcert] stellt sie kostenlos aus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;CAcert&amp;lt;/h3&amp;gt;&lt;br /&gt;
Das Problem mit [https://www.cacert.org/ CAcert] ist, dass deren Wurzelzertifikate im Gegensatz zu den anderen genannten nicht vorinstalliert ist. Diese sollte man sich also zunächst einmal installieren. (Vorweg: Alle Schritte muss man nur einmal machen. Danach hat man keinerlei Mühe mehr)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;Wurzelzertifikate installieren&amp;lt;/h4&amp;gt;&lt;br /&gt;
Die [http://en.wikipedia.org/wiki/Public_key_certificate#Classification Klasse 1 &amp;amp;amp; 3] Wurzelzertifikate findet man unter [https://www.cacert.org/index.php?id=3 https://www.cacert.org/index.php?id=3]. Dort klickt man einfach &amp;lt;i&amp;gt;Root-Zertifikat (PEM Format)&amp;lt;/i&amp;gt; und &amp;lt;i&amp;gt;Zwischen Zertifikat (PEM Format)&amp;lt;/i&amp;gt; an. Was nun folgt ist stark vom eigenen System abhängig.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;OS X (Safari / Apple Mail)&amp;lt;/b&amp;gt;: Safari wird die Zertifikate einfach nur speichern. Man klickt dann die gespeicherten Dateien &amp;lt;i&amp;gt;root.crt&amp;lt;/i&amp;gt; und &amp;lt;i&amp;gt;class3.crt&amp;lt;/i&amp;gt; im &amp;lt;i&amp;gt;Downloads&amp;lt;/i&amp;gt;-Verzeichnis an. Worauf sie der OS X Schlüsselbundverwaltung hinzugefügt werden. Das Zertifikat ist nun installiert und Systemweit verfügbar. Also beispielsweise auch für &amp;lt;i&amp;gt;Apple Mail&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Windows (Internet Explorer / Outlook)&amp;lt;/b&amp;gt;: Der Internet Explorer unter Windows wird ein Fenster mit Zertifikatsinformationen öffnen. Man klickt unten auf den Knopf &amp;lt;i&amp;gt;Zertifikat installieren...&amp;lt;/i&amp;gt; und klickt solange &amp;lt;i&amp;gt;OK&amp;lt;/i&amp;gt; und &amp;lt;i&amp;gt;Weiter&amp;lt;/i&amp;gt; bis der Dialog durch ist. Das Zertifikat ist nun installiert und Windows-Systemweit verfügbar. Also beispielsweise auch für &amp;lt;i&amp;gt;Outlook&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Firefox / Thunderbird (egal welches Betriebssystem)&amp;lt;/b&amp;gt;: Firefox fragt, wofür man das jeweilige Zertifikat nutzen möchte: um Websites zu identifizieren ([http://de.wikipedia.org/wiki/Https https]), um Email-Nutzer zu identifizieren (S/MIME) oder um software-Entwickler zu identifizieren. Man kann alles drei anhaken, OK und fertig. Die Anleitung um Zertifikate in Thunderbird zu nutzen findet sich [http://www.thunderbird-mail.de/wiki/Mailverschl%C3%BCsselung_mit_S/MIME#Wie_installiere_ich_ein_X.509-Zertifikat_in_TB.3F hier].&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Chrome, Opera, Konquerer...&amp;lt;/b&amp;gt;: Nicht ausprobiert. Wird aber wahrscheinlich irgendwie ähnlich wie die obigen Lösungen laufen.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;Eigenes Zertifikat erzeugen&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Registrieren:&amp;lt;/b&amp;gt; Zunächst [https://www.cacert.org/index.php?id=1 registriert man sich an]. Hier empfiehlt es sich, im Gegensatz zu den meisten anderen Orten im Netz, seine echten persönlichen Daten anzugeben. Schliesslich möchte man das Zertifikat benutzen, um sich zu identifizieren.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;email-Adressen hinzufügen:&amp;lt;/b&amp;gt; jetzt meldet man sich rechts im Menü auf der [https://www.cacert.org/index.php?id=4 CAcert-Seite] an und gelangt so in sein persönliches Konto. Man wählt wiederum rechts im Menü &amp;lt;i&amp;gt;+ E-Mail-Konto&amp;lt;/i&amp;gt;, klappt es aus und geht auf &amp;lt;i&amp;gt;Hinzufügen&amp;lt;/i&amp;gt;. Hier sollte man alle Adressen hinzufügen mit denen man vorhat zu unterschreiben. Vorsicht bei googlemail: auch wenn man selbst nur &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@gmail.com verwendet, verschickt googlemail die emails immer als &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@googlemail.com. Man muss also sowohl &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@gmail.com als auch &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@googlemail.com hinzufügen, sonst kommt es zu Fehlern.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Zertifikat ausstellen:&amp;lt;/b&amp;gt; Man klickt rechts im Menü auf &amp;lt;i&amp;gt;+ Client-Zertifikate&amp;lt;/i&amp;gt; und dann auf &amp;lt;i&amp;gt;neu&amp;lt;/i&amp;gt;. Nun wählt man die email-Adressen aus, für die das Zertifikat gelten soll (die Auswahlmöglichkeit besteht aus den eben hinzugefügten), klickt &amp;lt;i&amp;gt;Signieren mit dem Klasse 1 Root Zertifikat&amp;lt;/i&amp;gt; und setzt einen Haken bei &amp;lt;i&amp;gt;Zertifikats-Anmeldung mit diesem Zertifikat aktivieren&amp;lt;/i&amp;gt;. Mit &amp;lt;i&amp;gt;weiter&amp;lt;/i&amp;gt; geht&#039;s auf die nächste Seite. Dort wählt man unter &amp;lt;i&amp;gt;Schlüsselgröße&amp;lt;/i&amp;gt; hochgradig aus (entspricht z.Z. 4096bit) und klickt auf erstellen. Je nach System fügt man den Schlüssel nun seinem System hinzu, wie man es schon für das [http://wiki.attraktor.org/Mac_nix_basteln:SMIME#Wurzelzertifikate_installieren Wurzelzertifikat] getan hat.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s auch schon. Nun sollte das jeweilige email-Programm in der Lage sein Nachrichten zu signieren und auch zu verschlüsseln. Letzteres vorausgesetzt man hat den öffentlichen Schlüssel des Empfängers - was man automatisch hat sobald man einmal eine signierte Nachricht von demjenigen empfangen hat.&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:SMIME&amp;diff=4072</id>
		<title>Mac nix basteln:SMIME</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:SMIME&amp;diff=4072"/>
		<updated>2012-02-21T18:27:23Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;S/MIME&amp;lt;/h2&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/SMIME S/MIME] ist eine Methode zum signieren und verschlüsseln von Nachrichten, ähnlich wie das in der Öffentlichkeit vielleicht bekanntere PGP oder seine quelloffene Implementation [http://de.wikipedia.org/wiki/GNU_Privacy_Guard GPG]. Im Gegensatz zu GPG bietet S/MIME einige Komfortvorteile:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;S/MIME wird standardmäßig von allen (gängigen) email-Programmen unterstützt (vielleicht mal mit der Ausnahme mobiler Plattformen). D.h. man muss sich nicht um irgendwelche plugins oder sonstige Extraprogramme kümmern, die dann bei der nächsten Aktualisierung des email-Progs nicht mehr laufen&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Schlüssel werden automatisch durch das Versenden signierter Nachrichten verteilt. Man brauch sich also nicht um Schlüsselserver kümmern, oder jemanden seinen öffentlichen Schlüssel zusenden und diesem dann erklären, dass er ihn bei sich im Schlüsselbund hinzufügen muss&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Man bracht nicht jedem Schlüssel sagen, dass man ihm vertraut. Vertraut man dem Wurzelzertifikat, vertraut man allen Schlüsseln, die dagegen gezeichnet wurden&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Das System besteht auf Vertrauen gegenüber den Zertifikatsstellen (Certification Authorities = CAs), bzw. deren Wurzelzertifikaten&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Digitale Signatur&amp;lt;/h4&amp;gt;&lt;br /&gt;
Eine Signatur stellt sicher, dass der Absender der ist, der er vorgibt zu sein und dass die Nachricht unterwegs nicht verändert wurde. Sie entspricht also in etwa einem Siegel auf einem konventionellen Brief.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Verschlüsselung&amp;lt;/h4&amp;gt;&lt;br /&gt;
Verschlüsselung stellt sicher, dass nur designierte Empfänger die Nachricht lesen kann. Sie entspricht also grob dem Umschlag eines konventionellen Briefes. Eine unverschlüsselte Nachricht entspricht also in etwa einer Postkarte: Jeder unterwegs kann sie lesen und auch drin rum kritzeln.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Zertifikate&amp;lt;/h4&amp;gt;&lt;br /&gt;
Das Unterschreiben und Verschlüsseln erfolgt durch sog. Zertifikate. Dabei gibt es verschiedene [http://en.wikipedia.org/wiki/Public_key_certificate#Classification Typen]. Man kann nämlich nicht nur Strompost verschlüsseln, sondern auch Quelltext unterschreiben und der Gleichen. Da wir hier von Strompost reden, reicht uns ein Klasse 1 Zertifikat. Doch woher bekommt man das? Dies kann von den oben genannten Zertifikatsstellen ausgestellt werden. Derer gibt es sehr viele: z.B. Verisign, thawte... oder auch große Firmen haben ihre eigenen Wurzelzertifikate (Telekom, Visa....). Diese ganzen Wurzelzertifikate sind bei den Betriebsystemen bzw. den Mozillaprodukten (Firefox und Thunderbird - welche im Gegensatz zu den anderen Browsern und email-Progs nicht auf die Schlüsseldatenbank des Betriebssystems zurückgreifen) idR. vorinstalliert. Das Problem ist, dass die meisten Geld für die Ausstellung eines Zertifikats für den Anwender haben möchten. Der nicht gewinnorientierte Verein [https://www.cacert.org/ CAcert] stellt sie kostenlos aus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;CAcert&amp;lt;/h3&amp;gt;&lt;br /&gt;
Das Problem mit [https://www.cacert.org/ CAcert] ist, dass deren Wurzelzertifikate im Gegensatz zu den anderen genannten nicht vorinstalliert ist. Diese sollte man sich also zunächst einmal installieren. (Vorweg: Alle Schritte muss man nur einmal machen. Danach hat man keinerlei Mühe mehr)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;Wurzelzertifikate installieren&amp;lt;/h4&amp;gt;&lt;br /&gt;
Die [http://en.wikipedia.org/wiki/Public_key_certificate#Classification Klasse 1 &amp;amp;amp; 3] Wurzelzertifikate findet man unter [https://www.cacert.org/index.php?id=3 https://www.cacert.org/index.php?id=3]. Dort klickt man einfach &amp;lt;i&amp;gt;Root-Zertifikat (PEM Format)&amp;lt;/i&amp;gt; und &amp;lt;i&amp;gt;Zwischen Zertifikat (PEM Format)&amp;lt;/i&amp;gt; an. Was nun folgt ist stark vom eigenen System abhängig.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;OS X (Safari / Apple Mail)&amp;lt;/b&amp;gt;: Safari wird die Zertifikate einfach nur speichern. Man klickt dann die gespeicherten Dateien &amp;lt;i&amp;gt;root.crt&amp;lt;/i&amp;gt; und &amp;lt;i&amp;gt;class3.crt&amp;lt;/i&amp;gt; im &amp;lt;i&amp;gt;Downloads&amp;lt;/i&amp;gt;-Verzeichnis an. Worauf sie der OS X Schlüsselbundverwaltung hinzugefügt werden. Das Zertifikat ist nun installiert und Systemweit verfügbar. Also beispielsweise auch für &amp;lt;i&amp;gt;Apple Mail&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Windows (Internet Explorer / Outlook)&amp;lt;/b&amp;gt;: Der Internet Explorer unter Windows wird ein Fenster mit Zertifikatsinformationen öffnen. Man klickt unten auf den Knopf &amp;lt;i&amp;gt;Zertifikat installieren...&amp;lt;/i&amp;gt; und klickt solange &amp;lt;i&amp;gt;OK&amp;lt;/i&amp;gt; und &amp;lt;i&amp;gt;Weiter&amp;lt;/i&amp;gt; bis der Dialog durch ist. Das Zertifikat ist nun installiert und Windows-Systemweit verfügbar. Also beispielsweise auch für &amp;lt;i&amp;gt;Outlook&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Firefox / Thunderbird (egal welches Betriebssystem)&amp;lt;/b&amp;gt;: Firefox fragt, wofür man das jeweilige Zertifikat nutzen möchte: um Websites zu identifizieren ([http://de.wikipedia.org/wiki/Https https]), um Email-Nutzer zu identifizieren (S/MIME) oder um software-Entwickler zu identifizieren. Man kann alles drei anhaken, OK und fertig. Die Anleitung um Zertifikate in Thunderbird zu nutzen findet sich [http://www.thunderbird-mail.de/wiki/Mailverschl%C3%BCsselung_mit_S/MIME#Wie_installiere_ich_ein_X.509-Zertifikat_in_TB.3F hier].&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Chrome, Opera, Konquerer...&amp;lt;/b&amp;gt;: Nicht ausprobiert. Wird aber wahrscheinlich irgendwie ähnlich wie die obigen Lösungen laufen.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;Eigenes Zertifikat erzeugen&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Registrieren:&amp;lt;/b&amp;gt; Zunächst [https://www.cacert.org/index.php?id=1 registriert man sich an]. Hier empfiehlt es sich, im Gegensatz zu den meisten anderen Orten im Netz, seine echten persönlichen Daten anzugeben. Schliesslich möchte man das Zertifikat benutzen, um sich zu identifizieren.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;email-Adressen hinzufügen:&amp;lt;/b&amp;gt; jetzt meldet man sich rechts im Menü auf der [https://www.cacert.org/index.php?id=4 CAcert-Seite] an und gelangt so in sein persönliches Konto. Man wählt wiederum rechts im Menü &amp;lt;i&amp;gt;+ E-Mail-Konto&amp;lt;/i&amp;gt;, klappt es aus und geht auf &amp;lt;i&amp;gt;Hinzufügen&amp;lt;/i&amp;gt;. Hier sollte man alle Adressen hinzufügen mit denen man vorhat zu unterschreiben. Vorsicht bei googlemail: auch wenn man selbst nur &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@gmail.com verwendet, verschickt googlemail die emails immer als &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@googlemail.com. Man muss also sowohl &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@gmail.com als auch &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@googlemail.com hinzufügen, sonst kommt es zu Fehlern.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Zertifikat ausstellen:&amp;lt;/b&amp;gt; Man klickt rechts im Menü auf &amp;lt;i&amp;gt;+ Client-Zertifikate&amp;lt;/i&amp;gt; und dann auf &amp;lt;i&amp;gt;neu&amp;lt;/i&amp;gt;. Nun wählt man die email-Adressen aus, für die das Zertifikat gelen soll (die Auswahlmöglichkeit besteht aus den eben hinzugefügten), klickt &amp;lt;i&amp;gt;Signieren mit dem Klasse 1 Root Zertifikat&amp;lt;/i&amp;gt; und setzt einen Haken bei &amp;lt;i&amp;gt;Zertifikats-Anmeldung mit diesem Zertifikat aktivieren&amp;lt;/i&amp;gt;. Mit &amp;lt;i&amp;gt;weiter&amp;lt;/i&amp;gt; geht&#039;s auf die nächste Seite. Dort wählt man unter &amp;lt;i&amp;gt;Schlüsselgröße&amp;lt;/i&amp;gt; hochgradig aus (entspricht z.Z. 4096bit) und klickt auf erstellen. Je nach System fügt man den Schlüssel nun seinem System hinzu, wie man es schon für das [[http://wiki.attraktor.org/Mac_nix_basteln:SMIME#Wurzelzertifikate_installieren Wurzelzertifikat]] getan hat.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s auch schon. Nun sollte das jeweilige email-Programm in der Lage sein Nachrichten zu signieren und auch zu verschlüsseln. Letzteres vorausgesetzt man hat den öffentlichen Schlüssel des Empfängers - was man automatisch hat sobald man einmal eine signierte Nachricht von demjenigen empfangen hat.&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:SMIME&amp;diff=4031</id>
		<title>Mac nix basteln:SMIME</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:SMIME&amp;diff=4031"/>
		<updated>2012-02-18T12:06:23Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;S/MIME&amp;lt;/h2&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/SMIME S/MIME] ist eine Methode zum signieren und verschlüsseln von Nachrichten, ähnlich wie das in der Öffentlichkeit vielleicht bekanntere PGP oder seine quelloffene Implementation [http://de.wikipedia.org/wiki/GNU_Privacy_Guard GPG]. Im Gegensatz zu GPG bietet S/MIME einige Komfortvorteile:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;S/MIME wird standardmäßig von allen (gängigen) email-Programmen unterstützt (vielleicht mal mit der Ausnahme mobiler Plattformen). D.h. man muss sich nicht um irgendwelche plugins oder sonstige Extraprogramme kümmern, die dann bei der nächsten Aktualisierung des email-Progs nicht mehr laufen&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Schlüssel werden automatisch durch das Versenden signierter Nachrichten verteilt. Man brauch sich also nicht um Schlüsselserver kümmern, oder jemanden seinen öffentlichen Schlüssel zusenden und diesem dann erklären, dass er ihn bei sich im Schlüsselbund hinzufügen muss&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Man bracht nicht jedem Schlüssel sagen, dass man ihm vertraut. Vertraut man dem Wurzelzertifikat, vertraut man allen Schlüsseln, die dagegen gezeichnet wurden&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Das System besteht auf Vertrauen gegenüber den Zertifikatsstellen (Certification Authorities = CAs), bzw. deren Wurzelzertifikaten&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Es scheint, dass die CA auch den privaten Schlüssel des Nutzers hat&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Digitale Signatur&amp;lt;/h4&amp;gt;&lt;br /&gt;
Eine Signatur stellt sicher, dass der Absender der ist, der er vorgibt zu sein und dass die Nachricht unterwegs nicht verändert wurde. Sie entspricht also in etwa einem Siegel auf einem konventionellen Brief.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Verschlüsselung&amp;lt;/h4&amp;gt;&lt;br /&gt;
Verschlüsselung stellt sicher, dass nur designierte Empfänger die Nachricht lesen kann. Sie entspricht also grob dem Umschlag eines konventionellen Briefes. Eine unverschlüsselte Nachricht entspricht also in etwa einer Postkarte: Jeder unterwegs kann sie lesen und auch drin rum kritzeln.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Zertifikate&amp;lt;/h4&amp;gt;&lt;br /&gt;
Das Unterschreiben und Verschlüsseln erfolgt durch sog. Zertifikate. Dabei gibt es verschiedene [http://en.wikipedia.org/wiki/Public_key_certificate#Classification Typen]. Man kann nämlich nicht nur Strompost verschlüsseln, sondern auch Quelltext unterschreiben und der Gleichen. Da wir hier von Strompost reden, reicht uns ein Klasse 1 Zertifikat. Doch woher bekommt man das? Dies kann von den oben genannten Zertifikatsstellen ausgestellt werden. Derer gibt es sehr viele: z.B. Verisign, thawte... oder auch große Firmen haben ihre eigenen Wurzelzertifikate (Telekom, Visa....). Diese ganzen Wurzelzertifikate sind bei den Betriebsystemen bzw. den Mozillaprodukten (Firefox und Thunderbird - welche im Gegensatz zu den anderen Browsern und email-Progs nicht auf die Schlüsseldatenbank des Betriebssystems zurückgreifen) idR. vorinstalliert. Das Problem ist, dass die meisten Geld für die Ausstellung eines Zertifikats für den Anwender haben möchten. Der nicht gewinnorientierte Verein [https://www.cacert.org/ CAcert] stellt sie kostenlos aus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;CAcert&amp;lt;/h3&amp;gt;&lt;br /&gt;
Das Problem mit [https://www.cacert.org/ CAcert] ist, dass deren Wurzelzertifikate im Gegensatz zu den anderen genannten nicht vorinstalliert ist. Diese sollte man sich also zunächst einmal installieren. (Vorweg: Alle Schritte muss man nur einmal machen. Danach hat man keinerlei Mühe mehr)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;Wurzelzertifikate installieren&amp;lt;/h4&amp;gt;&lt;br /&gt;
Die [http://en.wikipedia.org/wiki/Public_key_certificate#Classification Klasse 1 &amp;amp;amp; 3] Wurzelzertifikate findet man unter [https://www.cacert.org/index.php?id=3 https://www.cacert.org/index.php?id=3]. Dort klickt man einfach &amp;lt;i&amp;gt;Root-Zertifikat (PEM Format)&amp;lt;/i&amp;gt; und &amp;lt;i&amp;gt;Zwischen Zertifikat (PEM Format)&amp;lt;/i&amp;gt; an. Was nun folgt ist stark vom eigenen System abhängig.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;OS X (Safari / Apple Mail)&amp;lt;/b&amp;gt;: Safari wird die Zertifikate einfach nur speichern. Man klickt dann die gespeicherten Dateien &amp;lt;i&amp;gt;root.crt&amp;lt;/i&amp;gt; und &amp;lt;i&amp;gt;class3.crt&amp;lt;/i&amp;gt; im &amp;lt;i&amp;gt;Downloads&amp;lt;/i&amp;gt;-Verzeichnis an. Worauf sie der OS X Schlüsselbundverwaltung hinzugefügt werden. Das Zertifikat ist nun installiert und Systemweit verfügbar. Also beispielsweise auch für &amp;lt;i&amp;gt;Apple Mail&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Windows (Internet Explorer / Outlook)&amp;lt;/b&amp;gt;: Der Internet Explorer unter Windows wird ein Fenster mit Zertifikatsinformationen öffnen. Man klickt unten auf den Knopf &amp;lt;i&amp;gt;Zertifikat installieren...&amp;lt;/i&amp;gt; und klickt solange &amp;lt;i&amp;gt;OK&amp;lt;/i&amp;gt; und &amp;lt;i&amp;gt;Weiter&amp;lt;/i&amp;gt; bis der Dialog durch ist. Das Zertifikat ist nun installiert und Windows-Systemweit verfügbar. Also beispielsweise auch für &amp;lt;i&amp;gt;Outlook&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Firefox / Thunderbird (egal welches Betriebssystem)&amp;lt;/b&amp;gt;: Firefox fragt, wofür man das jeweilige Zertifikat nutzen möchte: um Websites zu identifizieren ([http://de.wikipedia.org/wiki/Https https]), um Email-Nutzer zu identifizieren (S/MIME) oder um software-Entwickler zu identifizieren. Man kann alles drei anhaken, OK und fertig. Die Anleitung um Zertifikate in Thunderbird zu nutzen findet sich [http://www.thunderbird-mail.de/wiki/Mailverschl%C3%BCsselung_mit_S/MIME#Wie_installiere_ich_ein_X.509-Zertifikat_in_TB.3F hier].&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Chrome, Opera, Konquerer...&amp;lt;/b&amp;gt;: Nicht ausprobiert. Wird aber wahrscheinlich irgendwie ähnlich wie die obigen Lösungen laufen.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;Eigenes Zertifikat erzeugen&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Registrieren:&amp;lt;/b&amp;gt; Zunächst [https://www.cacert.org/index.php?id=1 registriert man sich an]. Hier empfiehlt es sich, im Gegensatz zu den meisten anderen Orten im Netz, seine echten persönlichen Daten anzugeben. Schliesslich möchte man das Zertifikat benutzen, um sich zu identifizieren.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;email-Adressen hinzufügen:&amp;lt;/b&amp;gt; jetzt meldet man sich rechts im Menü auf der [https://www.cacert.org/index.php?id=4 CAcert-Seite] an und gelangt so in sein persönliches Konto. Man wählt wiederum rechts im Menü &amp;lt;i&amp;gt;+ E-Mail-Konto&amp;lt;/i&amp;gt;, klappt es aus und geht auf &amp;lt;i&amp;gt;Hinzufügen&amp;lt;/i&amp;gt;. Hier sollte man alle Adressen hinzufügen mit denen man vorhat zu unterschreiben. Vorsicht bei googlemail: auch wenn man selbst nur &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@gmail.com verwendet, verschickt googlemail die emails immer als &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@googlemail.com. Man muss also sowohl &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@gmail.com als auch &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@googlemail.com hinzufügen, sonst kommt es zu Fehlern.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Zertifikat ausstellen:&amp;lt;/b&amp;gt; Man klickt rechts im Menü auf &amp;lt;i&amp;gt;+ Client-Zertifikate&amp;lt;/i&amp;gt; und dann auf &amp;lt;i&amp;gt;neu&amp;lt;/i&amp;gt;. Nun wählt man die email-Adressen aus, für die das Zertifikat gelen soll (die Auswahlmöglichkeit besteht aus den eben hinzugefügten), klickt &amp;lt;i&amp;gt;Signieren mit dem Klasse 1 Root Zertifikat&amp;lt;/i&amp;gt; und setzt einen Haken bei &amp;lt;i&amp;gt;Zertifikats-Anmeldung mit diesem Zertifikat aktivieren&amp;lt;/i&amp;gt;. Mit &amp;lt;i&amp;gt;weiter&amp;lt;/i&amp;gt; geht&#039;s auf die nächste Seite. Dort wählt man unter &amp;lt;i&amp;gt;Schlüsselgröße&amp;lt;/i&amp;gt; hochgradig aus (entspricht z.Z. 4096bit) und klickt auf erstellen. Je nach System fügt man den Schlüssel nun seinem System hinzu, wie man es schon für das [[http://wiki.attraktor.org/Mac_nix_basteln:SMIME#Wurzelzertifikate_installieren Wurzelzertifikat]] getan hat.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s auch schon. Nun sollte das jeweilige email-Programm in der Lage sein Nachrichten zu signieren und auch zu verschlüsseln. Letzteres vorausgesetzt man hat den öffentlichen Schlüssel des Empfängers - was man automatisch hat sobald man einmal eine signierte Nachricht von demjenigen empfangen hat.&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
	<entry>
		<id>https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:SMIME&amp;diff=4030</id>
		<title>Mac nix basteln:SMIME</title>
		<link rel="alternate" type="text/html" href="https://staging.wiki.apps.attraktor.org/index.php?title=Mac_nix_basteln:SMIME&amp;diff=4030"/>
		<updated>2012-02-18T11:43:48Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;S/MIME&amp;lt;/h2&amp;gt;&lt;br /&gt;
[http://de.wikipedia.org/wiki/SMIME S/MIME] ist eine Methode zum signieren und verschlüsseln von Nachrichten, ähnlich wie das in der Öffentlichkeit vielleicht bekanntere PGP oder seine quelloffene Implementation [http://de.wikipedia.org/wiki/GNU_Privacy_Guard GPG]. Im Gegensatz zu GPG bietet S/MIME einige Komfortvorteile:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;S/MIME wird standardmäßig von allen (gängigen) email-Programmen unterstützt (vielleicht mal mit der Ausnahme mobiler Plattformen). D.h. man muss sich nicht um irgendwelche plugins oder sonstige Extraprogramme kümmern, die dann bei der nächsten Aktualisierung des email-Progs nicht mehr laufen&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Schlüssel werden automatisch durch das Versenden signierter Nachrichten verteilt. Man brauch sich also nicht um Schlüsselserver kümmern, oder jemanden seinen öffentlichen Schlüssel zusenden und diesem dann erklären, dass er ihn bei sich im Schlüsselbund hinzufügen muss&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Man bracht nicht jedem Schlüssel sagen, dass man ihm vertraut. Vertraut man dem Wurzelzertifikat, vertraut man allen Schlüsseln, die dagegen gezeichnet wurden&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Das System besteht auf Vertrauen gegenüber den Zertifikatsstellen (Certification Authorities = CAs), bzw. deren Wurzelzertifikaten&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;Es scheint, dass die CA auch den privaten Schlüssel des Nutzers hat&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Digitale Signatur&amp;lt;/h4&amp;gt;&lt;br /&gt;
Eine Signatur stellt sicher, dass der Absender der ist, der er vorgibt zu sein und dass die Nachricht unterwegs nicht verändert wurde. Sie entspricht also in etwa einem Siegel auf einem konventionellen Brief.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Verschlüsselung&amp;lt;/h4&amp;gt;&lt;br /&gt;
Verschlüsselung stellt sicher, dass nur designierte Empfänger die Nachricht lesen kann. Sie entspricht also grob dem Umschlag eines konventionellen Briefes. Eine unverschlüsselte Nachricht entspricht also in etwa einer Postkarte: Jeder unterwegs kann sie lesen und auch drin rum kritzeln.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Zertifikate&amp;lt;/h4&amp;gt;&lt;br /&gt;
Das Unterschreiben und Verschlüsseln erfolgt durch sog. Zertifikate. Dabei gibt es verschiedene [http://en.wikipedia.org/wiki/Public_key_certificate#Classification Typen]. Man kann nämlich nicht nur Strompost verschlüsseln, sondern auch Quelltext unterschreiben und der gleichen. Da wir hier von Strompost reden, reicht uns ein Klasse 1 Zertifikat. Doch woher bekommt man das? Dies kann von den oben genannten Zertifikatsstellen ausgestellt werden. Derer gibt es sehr viele: z.B. Verisign, thawte... oder auch große Firmen haben ihre eigenen Wurzelzertifikate (Telekom, Visa....). Diese ganzen Wurzelzertifikate sind bei den Betriebsystemen idR. bzw. den Mozillaprodukten (Firefox und Thunderbird - welche im Gegensatz zu den anderen Browsern und email-Progs nicht auf die Schlüsseldatenbank des Betriebssystems zurückgreifen) vorinstalliert. Das Problem ist, dass die meisten Geld für die Ausstellung eines Zertifikats für den Anwender haben möchten. Der nicht gewinnorientierte Verein [https://www.cacert.org/ CAcert] stellt sie kostenlos aus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;CAcert&amp;lt;/h3&amp;gt;&lt;br /&gt;
Das Problem mit [https://www.cacert.org/ CAcert] ist, dass deren Wurzelzertifikate im Gegensatz zu den anderen genannten nicht vorinstalliert ist. Diese sollte man sich also zunächst einmal installieren. (Vorweg: Alle Schritte muss man nur einmal machen. Danach hat man keinerlei Mühe mehr)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;Wurzelzertifikate installieren&amp;lt;/h4&amp;gt;&lt;br /&gt;
Die [http://en.wikipedia.org/wiki/Public_key_certificate#Classification Klasse 1 &amp;amp;amp; 3] Wurzelzertifikate findet man unter [https://www.cacert.org/index.php?id=3 https://www.cacert.org/index.php?id=3]. Dort klickt man einfach &amp;lt;i&amp;gt;Root-Zertifikat (PEM Format)&amp;lt;/i&amp;gt; und &amp;lt;i&amp;gt;Zwischen Zertifikat (PEM Format)&amp;lt;/i&amp;gt; an. Was nun folgt ist stark vom eigenen System abhängig.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;OS X (Safari / Apple Mail)&amp;lt;/b&amp;gt;: Safari wird die Zertifikate einfach nur speichern. Man klickt dann die gespeicherten Dateien &amp;lt;i&amp;gt;root.crt&amp;lt;/i&amp;gt; und &amp;lt;i&amp;gt;class3.crt&amp;lt;/i&amp;gt; im &amp;lt;i&amp;gt;Downloads&amp;lt;/i&amp;gt;-Verzeichnis an. Worauf sie der OS X Schlüsselbundverwaltung hinzugefügt werden. Das Zertifikat ist nun installiert und Systemweit verfügbar. Also beispielsweise auch für &amp;lt;i&amp;gt;Apple Mail&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Windows (Internet Explorer / Outlook)&amp;lt;/b&amp;gt;: Der Internet Explorer unter Windows wird ein Fenster mit Zertifikatsinformationen öffnen. Man klickt unten auf den Knopf &amp;lt;i&amp;gt;Zertifikat installieren...&amp;lt;/i&amp;gt; und klickt solange &amp;lt;i&amp;gt;OK&amp;lt;/i&amp;gt; und &amp;lt;i&amp;gt;Weiter&amp;lt;/i&amp;gt; bis der Dialog durch ist. Das Zertifikat ist nun installiert und Windows-Systemweit verfügbar. Also beispielsweise auch für &amp;lt;i&amp;gt;Outlook&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Firefox / Thunderbird (egal welches Betriebssystem)&amp;lt;/b&amp;gt;: Firefox fragt, wofür man das jeweilige Zertifikat nutzen möchte: um Websites zu identifizieren ([http://de.wikipedia.org/wiki/Https https]), um Email-Nutzer zu identifizieren (S/MIME) oder um software-Entwickler zu identifizieren. Man kann alles drei anhaken, OK und fertig. Die Anleitung um Zertifikate in Thunderbird zu nutzen findet sich [http://www.thunderbird-mail.de/wiki/Mailverschl%C3%BCsselung_mit_S/MIME#Wie_installiere_ich_ein_X.509-Zertifikat_in_TB.3F hier].&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Chrome, Opera, Konquerer...&amp;lt;/b&amp;gt;: Nicht ausprobiert. Wird aber wahrscheinlich irgendwie ähnlich wie die obigen Lösungen laufen.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;Eigenes Zertifikat erzeugen&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Registrieren:&amp;lt;/b&amp;gt; Zunächst [https://www.cacert.org/index.php?id=1 registriert man sich an]. Hier empfiehlt es sich, im Gegensatz zu den meisten anderen Orten im Netz, seine echten persönlichen Daten anzugeben. Schliesslich möchte man das Zertifikat benutzen, um sich zu identifizieren.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;email-Adressen hinzufügen:&amp;lt;/b&amp;gt; jetzt meldet man sich rechts im Menü auf der [https://www.cacert.org/index.php?id=4 CAcert-Seite] an und gelangt so in sein persönliches Konto. Man wählt wiederum rechts im Menü &amp;lt;i&amp;gt;+ E-Mail-Konto&amp;lt;/i&amp;gt;, klappt es aus und geht auf &amp;lt;i&amp;gt;Hinzufügen&amp;lt;/i&amp;gt;. Hier sollte man alle Adressen hinzufügen mit denen man vorhat zu unterschreiben. Vorsicht bei googlemail: auch wenn man selbst nur &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@gmail.com verwendet, verschickt googlemail die emails immer als &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@googlemail.com. Man muss also sowohl &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@gmail.com als auch &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;@googlemail.com hinzufügen, sonst kommt es zu Fehlern.&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Zertifikat ausstellen:&amp;lt;/b&amp;gt; Man klickt rechts im Menü auf &amp;lt;i&amp;gt;+ Client-Zertifikate&amp;lt;/i&amp;gt; und dann auf &amp;lt;i&amp;gt;neu&amp;lt;/i&amp;gt;. Nun wählt man die email-Adressen aus, für die das Zertifikat gelen soll (die Auswahlmöglichkeit besteht aus den eben hinzugefügten), klickt &amp;lt;i&amp;gt;Signieren mit dem Klasse 1 Root Zertifikat&amp;lt;/i&amp;gt; und setzt einen Haken bei &amp;lt;i&amp;gt;Zertifikats-Anmeldung mit diesem Zertifikat aktivieren&amp;lt;/i&amp;gt;. Mit &amp;lt;i&amp;gt;weiter&amp;lt;/i&amp;gt; geht&#039;s auf die nächste Seite. Dort wählt man unter &amp;lt;i&amp;gt;Schlüsselgröße&amp;lt;/i&amp;gt; hochgradig aus (entspricht z.Z. 4096bit) und klickt auf erstellen. Je nach System fügt man den Schlüssel nun seinem System hinzu, wie man es schon für das [[http://wiki.attraktor.org/Mac_nix_basteln:SMIME#Wurzelzertifikate_installieren Wurzelzertifikat]] getan hat.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s auch schon. Nun sollte das jeweilige email-Programm in der Lage sein Nachrichten zu signieren und auch zu verschlüsseln (letzteres vorausgesetzt man hat den öffentlichen Schlüssel des Empfängers).&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
	</entry>
</feed>