Erstellung einer eigenen hierachischen CA

Aus ConfigWiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Zertifikat für OpenVPN Server erstellen)
(Los gehts)
Zeile 64: Zeile 64:
 
  cat bamseroot.crt > services/openvpn/openvpn_complete.crt
 
  cat bamseroot.crt > services/openvpn/openvpn_complete.crt
 
  cat services/openvpn/openvpn.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 !'''
+
* ein Test ... sollte in etwa "openvpn_complete.crt: OK" ergeben. '''Testen ist wichtig !'''
 
  openssl verify -CAfile bamseroot.crt services/openvpn/openvpn_complete.crt
 
  openssl verify -CAfile bamseroot.crt services/openvpn/openvpn_complete.crt
 
=== Zertifikat für OpenVPN Server erstellen ===
 
=== Zertifikat für OpenVPN Server erstellen ===
Zeile 73: Zeile 73:
 
  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
 
  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
 
*und wieder testen
openssl verify -CAfile .services/openvpn/openvpn_complete.crt services/openvpn/openvpnserver_1/openvpnserver_1_openvpn.crt
+
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
  
# CA für ersten Kunden erstellen
+
=== Zertifikat für den ersten User des Kunden "custom_1" erstellen ===
cd customers/
+
*(nur zur Sicherheit)
cd k0000/
+
  cd /etc/ssl/my_ca
openssl req -new -newkey rsa:1024 -keyout k0000.key -out k0000.csr
+
openssl ca -cert ../../services/openvpn/openvpn.crt  -keyfile ../../services/openvpn/openvpn.key -in k0000.csr -out k0000_openvpn.crt -extensions v3_ca
+
# test ...
+
openssl verify -CAfile ../../services/openvpn/openvpn_complete.crt k0000_openvpn.crt
+
 
+
 
+
# Vereinigte root CA für Kunden erstellen
+
cat ../../bamseroot.crt >> k0000_openvpn_copmplete.crt
+
cat ../../services/openvpn/openvpn.crt >> k0000_openvpn_copmplete.crt
+
cat k0000_openvpn.crt >> k0000_openvpn_copmplete.crt
+
 
+
  
# CERt für ersten User/Maschine des Kunden erstellen
+
openssl req -new -newkey rsa:1024 -keyout k0000_pfsense_office.key -out k0000_pfsense_office.csr
cd k0000_pfsense_office/
+
openssl ca -cert ../k0000_openvpn.crt  -keyfile ../k0000.key -in k0000_pfsense_office.csr -out k0000_pfsense_office.crt
openssl req -new -newkey rsa:1024 -keyout k0000_pfsense_office.key -out k0000_pfsense_office.csr
+
* Test ...
openssl ca -cert ../k0000_openvpn.crt  -keyfile ../k0000.key -in k0000_pfsense_office.csr -out k0000_pfsense_office.crt
+
openssl verify -CAfile ../k0000_openvpn_copmplete.crt k0000_pfsense_office.crt
# test
+
openssl verify -CAfile ../k0000_openvpn_copmplete.crt k0000_pfsense_office.crt
+

Version vom 4. Januar 2011, 11:05 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 k0000_pfsense_office.key -out k0000_pfsense_office.csr
openssl ca -cert ../k0000_openvpn.crt  -keyfile ../k0000.key -in k0000_pfsense_office.csr -out k0000_pfsense_office.crt
  • Test ...
openssl verify -CAfile ../k0000_openvpn_copmplete.crt k0000_pfsense_office.crt
Meine Werkzeuge