Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Both sides previous revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
linux:eigenes_ssl-zertifikat_erstellen [28.04.2009 16:41]
nefarius
linux:eigenes_ssl-zertifikat_erstellen [05.05.2010 09:16] (aktuell)
nefarius
Zeile 1: Zeile 1:
 ====== Eigenes SSL-Zertifikat erzeugen ====== ====== Eigenes SSL-Zertifikat erzeugen ======
-[color=red][size=20]Artikel befindet sich im Aufbau!!![/​size][/​color] 
  
 ===== Vorwort ===== ===== Vorwort =====
-So ein Zertifikat benötigt manschneller als man vielleicht glauben möchte. Es fängt an bei einer simplen //​https//​-Verbindung und endet beim verschlüsselten IMAP-Server. SSL (//Secure Socket Layer//, mittlerweile [[http://​de.wikipedia.org/​wiki/​Transport_Layer_Security|TLS]]) kann bei vielen Protokollen eingesetzt werden, Beispiele wären:+So ein Zertifikat benötigt man schnellerals man vielleicht glauben möchte. Es fängt an bei einer simplen //​https//​-Verbindung und endet beim verschlüsselten IMAP-Server. SSL (//Secure Socket Layer//, mittlerweile [[http://​de.wikipedia.org/​wiki/​Transport_Layer_Security|TLS]]) kann bei vielen Protokollen eingesetzt werden, Beispiele wären:
  
   * HTTP - Verbindung vom Browser zum Webserver   * HTTP - Verbindung vom Browser zum Webserver
Zeile 20: Zeile 19:
 ==== Installation ==== ==== Installation ====
 Sofern nicht vorhanden, ''​openssl''​ nachinstallieren:​ Sofern nicht vorhanden, ''​openssl''​ nachinstallieren:​
-<​code>​ +<​code ​bash
-~# apt-get install openssl+apt-get install openssl
 </​code>​ </​code>​
- 
 ===== Erstellung des Zertifikates ===== ===== Erstellung des Zertifikates =====
-Alle verwendeten Optionen ließt man sich am besten in der [[http://​www.openssl.org/​docs/​apps/​openssl.html|man-Page von openssl]] durch! Die Dateiendungen verwende ich zur Unterscheidung der Dateitypen, da bei Verwechslung von Key, Zertifikat ​und signiertem Zertifikat nichts funktionieren wird :-P+Alle verwendeten Optionen ließt man sich am besten in der [[http://​www.openssl.org/​docs/​apps/​openssl.html|man-Page von openssl]] durch! Die Dateiendungen verwende ich zur Unterscheidung der Dateitypen, da bei Verwechslung von Key, CSR und signiertem Zertifikat nichts funktionieren wird :-P
  
 ==== Erzeugung des Schlüssels ==== ==== Erzeugung des Schlüssels ====
-Zu allererst benötigt man einen privaten Schlüssel, der mit dem Zertifikat fest verschweißt wird: +Zu allererst benötigt man einen privaten Schlüssel, der nur auf dem Server gespeichert bleibt und so gut wie möglich vor Diebstahl geschützt werden muss! 
-<​code>​+ 
 +=== Schlüssel mit Passphrase === 
 +Wer seinen Schlüssel zusätzlich mit einem Passwort versieht, muss darauf achten, dass nicht alle Server-Dienste dies auch unterstützen. ''​lighttpd''​ z.B. verlangt beim Start die Eingabe des Passwortes. 
 +<​code ​bash>
 openssl genrsa -des3 -out example.key 4096 openssl genrsa -des3 -out example.key 4096
 </​code>​ </​code>​
- +=== Schlüssel ohne Passphrase === 
-Manche ​Server-Dienste benötigen allerdings die unverschlüsselte Variante des Private Keys ohne Passwort. Solch eine Schlüsseldatei erstellt man folgendermaßen ​(**so gut wie möglich schützen!**)+Meist wird man jedoch einen ungeschützten Schlüssel verwenden, da dieser z.B. bei einem Server-Neustart ​ohne Passwort-Abfrage gelesen werden kann (**Dateirechte entsprechend anpassen! Nur root und der Dienst sollen diese Datei lesen können!**). 
- +<​code ​bash
-<​code>​ +openssl ​genrsa ​-out example.key 4096
-openssl ​rsa -in example.key ​-out example.pem+
 </​code>​ </​code>​
  
-==== Erzeugung ​des Zertifikates ​==== +=== Passphrase entfernen === 
-Das (unsignierte!) Zertifikat ​erstellt ​man mit folgender Zeile: +Will man von einem vorhandenen geschützten Schlüssel die Passphrase entfernen, hilft folgender Befehl: 
-<​code>​+<code bash> 
 +openssl rsa -in example.key -out example-unsafe.key 
 +</​code>​ 
 +==== Erzeugung ​einer Certificate Signing Request (CSR) ==== 
 +Den Certificate Signing Request ​(CSRbenötigt man, um ein vollwertiges ​Zertifikat ​von einer Zertifizierungsstelle zu erhalten, ​man erstellt es mit folgender Zeile: 
 +<​code ​bash>
 openssl req -new -key example.key -out example.csr openssl req -new -key example.key -out example.csr
 </​code>​ </​code>​
Zeile 47: Zeile 52:
 ==== Signierung des Zertifikates ==== ==== Signierung des Zertifikates ====
 Hier gibt es wiederum 2 Wege:  Hier gibt es wiederum 2 Wege: 
- +=== 1. Die Selbstsignierung ===
-=== Die Selbstsignierung ===+
 D.h. man "​unterschreibt"​ das Zertifikat selber, dies hat aber zur Folge, dass bei Browsern, Mail-Clients etc. (je nach Einsatzgebiet) eine Warnmeldung erscheinen wird, die besagt, dass dem Zertifikat nicht vertraut werden kann: D.h. man "​unterschreibt"​ das Zertifikat selber, dies hat aber zur Folge, dass bei Browsern, Mail-Clients etc. (je nach Einsatzgebiet) eine Warnmeldung erscheinen wird, die besagt, dass dem Zertifikat nicht vertraut werden kann:
  
Zeile 60: Zeile 64:
  
 Für private Seiten, die z.B. nur den Administrationsbereich vor Man-In-The-Middle schützen möchten, ist diese Methode mehr als ausreichend:​ Für private Seiten, die z.B. nur den Administrationsbereich vor Man-In-The-Middle schützen möchten, ist diese Methode mehr als ausreichend:​
-<​code>​+<​code ​bash>
 openssl x509 -req -days 365 -in example.csr -signkey example.key -out example.crt openssl x509 -req -days 365 -in example.csr -signkey example.key -out example.crt
 </​code>​ </​code>​
 Das erstellte Zertifikat ist somit für ein ganzes Jahr gültig. Das erstellte Zertifikat ist somit für ein ganzes Jahr gültig.
 +
 +=== 2. Freie Zertifizierungsstelle ===
 +Neben der Selbstsignierung gäbe es natürlich noch den Weg, eine der bekannten Zertifizierungsstellen wie GoDaddy oder VeriSign zu kontaktieren,​ allerdings wird das kostentechnisch ein kleiner Schock werden ;-) Es gibt allerdings auch Firmen, die gegen kleine Einschränkungen Zertifikate gratis signieren. Ein bekanntes Beispiel ist
 +  * [[http://​www.startssl.com/​|StartSSL.com]]
 +deren großer Vorteil ist, dass alle bekannten Browser deren Zertifikate anstandslos akzeptieren! Dann wäre da noch
 +  * [[http://​www.cacert.org/​|CACert.org]]
 +Vorteil: wesentlich leichter und schneller einzurichten als StartSSL, allerdings Nachteil: Browser (und andere Clients) kennen deren Root-Zertifikat nicht und erzeugen besagte Fehlermeldung. Wer also ein Zertifikat nur in kleinen Kreisen benötigt (Freundeskreis,​ nur du selbst), importiert sich deren Root-Cert und es klappt ebenfalls. Siehe dazu die sehr guten, vorhandenen Erklärungen:​
 +  * [[http://​wiki.schokokeks.org/​SSL-Zertifikat#​CAcert.org|schokokeks.org - CAcert.org]]
 +  * [[http://​www.cacert.org/​index.php?​lang=de_DE|CAcert.org]]
 +
 +===== Quellen=====
 +  * http://​wiki.schokokeks.org/​Eigenes_SSL_Zertifikat
 +  * http://​www.openssl.org/​docs/​apps/​openssl.html
 +  * http://​www.madboa.com/​geek/​openssl/​
 +  * http://​www.cacert.org/​index.php?​lang=de_DE
 +  * http://​www.tc.umn.edu/​~brams006/​selfsign.html
 +  * http://​www.openssl.org/​docs/​HOWTO/​keys.txt
 +  * http://​www.openssl.org/​docs/​HOWTO/​certificates.txt