Erstellung einer eigenen hierachischen CA

Aus ConfigWiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Los gehts)
(Los gehts)
Zeile 39: Zeile 39:
  
 
=== notwendige Ergänzungen in der Ordnerstruktur ===
 
=== notwendige Ergänzungen in der Ordnerstruktur ===
(nur zur Sicherheit)
+
*(nur zur Sicherheit)
 
  cd /etc/ssl/my_ca
 
  cd /etc/ssl/my_ca
 
* Sammelordner für die Zertifikate (.pem files)  
 
* Sammelordner für die Zertifikate (.pem files)  
Zeile 49: Zeile 49:
 
  echo 01 > serial
 
  echo 01 > serial
 
=== Root-CA erstellen ===
 
=== Root-CA erstellen ===
(nur zur Sicherheit)
+
*(nur zur Sicherheit)
 
  cd /etc/ssl/my_ca
 
  cd /etc/ssl/my_ca
diese CA gilt 10 Jahre
+
*diese CA gilt 10 Jahre
 
  openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout bamseroot.key -out bamseroot.crt -days 3650
 
  openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout bamseroot.key -out bamseroot.crt -days 3650
 +
=== 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 openvpn_complete.crt
 +
 +
 +
 +
# CERT für Server erstellen
 +
cd bamsesrv01/
 +
openssl req -new -newkey rsa:1024 -keyout bamsesrv01_openvpn.key -out bamsesrv01_openvpn.csr
 +
openssl ca -cert ../openvpn.crt  -keyfile ..//openvpn.key -in bamsesrv01_openvpn.csr -out bamsesrv01_openvpn.crt
 +
# und wieder testen
 +
openssl verify -CAfile ../openvpn_complete.crt bamsesrv01_openvpn.crt
 +
 +
wieder in basisordern der root CA wechseln
 +
cd ..
 +
cd ..
 +
cd ..
 +
 +
 +
# CA für ersten Kunden erstellen
 +
cd  customers/
 +
cd k0000/
 +
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
 +
cd k0000_pfsense_office/
 +
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

Version vom 4. Januar 2011, 10:46 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

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 openvpn_complete.crt


  1. CERT für Server erstellen

cd bamsesrv01/ openssl req -new -newkey rsa:1024 -keyout bamsesrv01_openvpn.key -out bamsesrv01_openvpn.csr openssl ca -cert ../openvpn.crt -keyfile ..//openvpn.key -in bamsesrv01_openvpn.csr -out bamsesrv01_openvpn.crt

  1. und wieder testen

openssl verify -CAfile ../openvpn_complete.crt bamsesrv01_openvpn.crt

wieder in basisordern der root CA wechseln cd .. cd .. cd ..


  1. CA für ersten Kunden erstellen

cd customers/ cd k0000/ 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

  1. test ...

openssl verify -CAfile ../../services/openvpn/openvpn_complete.crt k0000_openvpn.crt


  1. 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


  1. CERt für ersten User/Maschine des Kunden erstellen

cd k0000_pfsense_office/ 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

  1. test

openssl verify -CAfile ../k0000_openvpn_copmplete.crt k0000_pfsense_office.crt

Meine Werkzeuge