Erstellung einer eigenen hierachischen CA
(→Los gehts) |
(→Los gehts) |
||
Zeile 53: | Zeile 53: | ||
*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 | ||
+ | *Diffie-Hellmann Parameter erzeugen | ||
+ | openssl dhparam -out dh1024.pem | ||
=== CA für OpenVPN Dienst erstellen === | === CA für OpenVPN Dienst erstellen === | ||
*(nur zur Sicherheit) | *(nur zur Sicherheit) | ||
Zeile 62: | 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 . | + | 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 | |
Version vom 4. Januar 2011, 10:58 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.
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.
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
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