Erstellung einer eigenen hierachischen CA

Aus ConfigWiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Los gehts)
(Vereinigte Zertifikate (suchtiefe))
Zeile 97: Zeile 97:
 
== Hinweise ==
 
== Hinweise ==
 
=== Vereinigte Zertifikate (suchtiefe) ===
 
=== Vereinigte Zertifikate (suchtiefe) ===
Damit Dienste (Programme) prüfen können, müssen sie in der Lage sein den Pfad (Baum) der Signierung nach oben zu folgen.<br />
+
Damit Dienste (Programme) die entsprechenden Zertifikate prüfen können, müssen sie in der Lage sein den Pfad (Baum) der Signierung nach oben zu folgen.<br />
 
Diesem Zweck dienen die vereinigten Zertifikate.<br />
 
Diesem Zweck dienen die vereinigten Zertifikate.<br />
 
Bei der Verwendung eines OpenVPN Server sähe die Konfiguration wie folgt aus:
 
Bei der Verwendung eines OpenVPN Server sähe die Konfiguration wie folgt aus:

Version vom 4. Januar 2011, 12:22 Uhr

Inhaltsverzeichnis

Vorüberlegung

Mit hierachischen CA's kann man Berechtigungsstufen verwalten, ohne für jede Stufe ein extra Root-CA erzeugen zu müssen.
Im Grunde geht es darum die Struktur von Benutzerrechten und und abzusichernden Diensten abstrakt nachzubilden.


Fehler beim Erstellen des Vorschaubildes: Die Miniaturansicht konnte nicht am vorgesehenen Ort gespeichert werden




In Unserem Fall sollen

  • ein Root-CA
  • eine von der Root-CA signirte OpenVPN-CA
  • ein von der OpenVPN-CA signiertes Server_A-CERT
  • eine Kunde_1 Anfrage mit Key
  • eine Kunde_1-OpenVPN-CA
  • ein Kunde_1-OpenVPN-User_1-CERT

erstellt werden.


Fehler beim Erstellen des Vorschaubildes: Die Miniaturansicht konnte nicht am vorgesehenen Ort gespeichert werden

System

  • debian || ubuntu z.B. (Debian 2.6.26-26lenny1)
  • openssl ist installiert

angegebene System-Pfade beziehen sich auf Debian / Debian-Derivate

Los gehts

Ordnerstruktur anlegen

cd /etc/ssl
mkdir my_ca
cd my_ca
mkdir services
mkdir cusomers
mkdir services/openvpn
mkdir cusomers/custom_1
mkdir services/openvpn/openvpnserver_1
mkdir cusomers/custom_1/user_1

OpenSSL Konfiguration anpassen

Das anpassen der "openssl.cnf" spart spater viel Schreibarbeit.
(Editor nach belieben)

mc -e /usr/lib/ssl/openssl.cnf
  • in section "CA_default" den Pfad "dir" anpassen /etc/ssl/my_ca
  • Standartwerte für "match" Einträge (Country, Provinve, OrganisationUnit) anpassen z.B.: DE, Sachsen, ...

notwendige Ergänzungen in der Ordnerstruktur

  • (nur zur Sicherheit)
cd /etc/ssl/my_ca
  • Sammelordner für die Zertifikate (.pem files)
mkdir newcerts
  • Index vorhandener Zertifikate
touch index.txt
  • Zähler für den nächsten Zertifikatsnamen
touch serial
echo 01 > serial

Root-CA erstellen

  • (nur zur Sicherheit)
cd /etc/ssl/my_ca
  • diese CA gilt 10 Jahre
openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout bamseroot.key -out bamseroot.crt -days 3650
  • Diffie-Hellmann Parameter erzeugen
openssl dhparam -out dh1024.pem

CA für OpenVPN Dienst erstellen

  • (nur zur Sicherheit)
cd /etc/ssl/my_ca
  • die Extension v3_ca bewirkt, das erstellen einer "unter-CA"
openssl req -new -newkey rsa:1024 -keyout services/openvpn/openvpn.key -out services/openvpn/openvpn.csr
openssl ca -cert .bamseroot.crt  -keyfile bamseroot.key -in services/openvpn/openvpn.csr -out services/openvpn/openvpn.crt -extensions v3_ca
  • ein komplettes Zertifikat (Suchtiefe) für den Dienst erstellen
cat bamseroot.crt > services/openvpn/openvpn_complete.crt
cat services/openvpn/openvpn.crt >> services/openvpn/openvpn_complete.crt
  • ein Test ... sollte in etwa "openvpn_complete.crt: OK" ergeben. Testen ist wichtig !
openssl verify -CAfile bamseroot.crt services/openvpn/openvpn_complete.crt

Zertifikat für OpenVPN Server erstellen

  • (nur zur Sicherheit)
cd /etc/ssl/my_ca
openssl req -new -newkey rsa:1024 -keyout services/openvpn/openvpnserver_1/openvpnserver_1_openvpn.key -out services/openvpn/openvpnserver_1/openvpnserver_1_openvpn.csr
openssl ca -cert services/openvpn/openvpn.crt  -keyfile services/openvpn/openvpn.key -in services/openvpn/openvpnserver_1/openvpnserver_1_openvpn.csr -out services/openvpn/openvpnserver_1/openvpnserver_1_openvpn.crt
  • und wieder testen
openssl verify -CAfile .services/openvpn/openvpn_complete.crt services/openvpn/openvpnserver_1/openvpnserver_1_openvpn.crt

CA für ersten Kunden erstellen

openssl req -new -newkey rsa:1024 -keyout cusomers/custom_1/custom_1.key -out cusomers/custom_1/custom_1..csr
openssl ca -cert services/openvpn/openvpn.crt  -keyfile services/openvpn/openvpn.key -in cusomers/custom_1/custom_1.csr -out cusomers/custom_1/custom_1_openvpn.crt -extensions v3_ca
  • Test ...
openssl verify -CAfile services/openvpn/openvpn_complete.crt cusomers/custom_1/custom_1_openvpn.crt
  • Vereinigte CA für Kunden erstellen (Suchtiefe)
cat bamseroot.crt > cusomers/custom_1/custom_1_openvpn_copmplete.crt
cat services/openvpn/openvpn.crt >> cusomers/custom_1/custom_1_openvpn_copmplete.crt
cat cusomers/custom_1/custom_1_openvpn.crt >> cusomers/custom_1/custom_1_openvpn_copmplete.crt

Zertifikat für den ersten User des Kunden "custom_1" erstellen

  • (nur zur Sicherheit)
cd /etc/ssl/my_ca
openssl req -new -newkey rsa:1024 -keyout cusomers/custom_1/user_1/user_1.key -out cusomers/custom_1/user_1/user_1.csr
openssl ca -cert cusomers/custom_1/custom_1_openvpn.crt -keyfile cusomers/custom_1/custom_1_openvpn.key -in cusomers/custom_1/user_1/user_1.csr -out cusomers/custom_1/user_1/user_1.crt
  • Test ...
openssl verify -CAfile cusomers/custom_1/custom_1_openvpn.crt cusomers/custom_1/user_1/user.crt

Hinweise

Vereinigte Zertifikate (suchtiefe)

Damit Dienste (Programme) die entsprechenden Zertifikate prüfen können, müssen sie in der Lage sein den Pfad (Baum) der Signierung nach oben zu folgen.
Diesem Zweck dienen die vereinigten Zertifikate.
Bei der Verwendung eines OpenVPN Server sähe die Konfiguration wie folgt aus:

  • server.conf
...
ca /etc/ssl/my_ca/services/openvpn/openvpn_complete.crt
cert /etc/ssl/my_ca/services/openvpn/openvpnserver_1/openvpnserver_1_openvpn.crt
key /etc/ssl/my_ca/services/openvpn/openvpnserver_1/openvpnserver_1_openvpn.key
dh /etc/ssl/my_ca/dh1024.pem
...
  • client.conf
...
ca /PATH/custom_1_openvpn_copmplete.crt
cert /PATH/user_1.crt
key /PATH/user_1.key
...
Meine Werkzeuge