Erstellung einer eigenen hierachischen CA

Aus ConfigWiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(OpenSSL Konfiguration anpassen)
(Vorüberlegung)
 
(36 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 15: Zeile 15:
 
<br /><br /><br />
 
<br /><br /><br />
 
[[Bild:Folder openssl.png]]
 
[[Bild:Folder openssl.png]]
 +
 
== System ==
 
== System ==
 
* debian || ubuntu z.B. (Debian 2.6.26-26lenny1)
 
* debian || ubuntu z.B. (Debian 2.6.26-26lenny1)
Zeile 24: Zeile 25:
 
  mkdir my_ca
 
  mkdir my_ca
 
  cd my_ca
 
  cd my_ca
  mkdir services
+
  mkdir -p services/openvpn/openvpnserver_1
mkdir cusomers
+
  mkdir -p customers/custom_1/user_1
mkdir services/openvpn
+
mkdir cusomers/custom_1
+
mkdir services/openvpn/openvpnserver_1
+
  mkdir cusomers/custom_1/user_1
+
  
 
=== OpenSSL Konfiguration anpassen ===
 
=== OpenSSL Konfiguration anpassen ===
 
Das anpassen der "openssl.cnf" spart später '''viel''' Schreibarbeit.
 
Das anpassen der "openssl.cnf" spart später '''viel''' Schreibarbeit.
<br />''(Editor nach belieben)''
+
 
mc -e /usr/lib/ssl/openssl.cnf
+
* in Section "CA_default" den Pfad "dir" anpassen
* in section "CA_default" den Pfad "dir" anpassen ''/etc/ssl/my_ca''
+
* Standardwerte für "match" Einträge anpassen
* Standartwerte für "match" Einträge (Country, Provinve, OrganisationUnit) anpassen z.B.: ''DE'', ''Sachsen'', ...
+
 
 +
/usr/lib/ssl/openssl.cnf (bzw. /etc/ssl/openssl.cnf):
 +
[ CA_default ]
 +
dir = /etc/ssl/my_ca
 +
...
 +
 +
policy = policy_match
 +
 +
[ policy_match ]
 +
countryName = match
 +
stateOrProvinceName = match
 +
organizationName = match
 +
...
 +
 +
[ req_distinguished_name ]
 +
countryName_default = DE
 +
...
 +
stateOrProvinceName_default = Sachsen
 +
...
 +
0.organizationName_default = OSSI - Otto's Super Service International
 +
 
 +
Den Abschnitt  [ server ]  an das Ende der openssl.conf einfügen.<br >
 +
Ergänzungen in openssl.conf:
 +
[ server ]
 +
 +
#  Make a cert with nsCertType set to "server"
 +
basicConstraints=CA:FALSE
 +
nsCertType = server
 +
nsComment = "Server Certificate"
 +
subjectKeyIdentifier=hash
 +
authorityKeyIdentifier=keyid,issuer:always
 +
extendedKeyUsage=serverAuth
 +
keyUsage = digitalSignature, keyEncipherment
 +
 
 +
Damit kann ein Zertifikat erzeugt werden, welches vom OpenVPN-Client mit der Option '''ns-cert-type server''' validiert werden kann.
  
 
=== notwendige Ergänzungen in der Ordnerstruktur ===
 
=== notwendige Ergänzungen in der Ordnerstruktur ===
*(nur zur Sicherheit)
+
* falls wir nicht schon dort sind:
 
  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 46: Zeile 77:
 
  touch index.txt
 
  touch index.txt
 
* Zähler für den nächsten Zertifikatsnamen
 
* Zähler für den nächsten Zertifikatsnamen
touch serial
 
 
  echo 01 > serial
 
  echo 01 > serial
 +
 
=== Root-CA erstellen ===
 
=== Root-CA erstellen ===
 
*(nur zur Sicherheit)
 
*(nur zur Sicherheit)
Zeile 53: Zeile 84:
 
*diese CA gilt 10 Jahre
 
*diese CA gilt 10 Jahre
 
  openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout myroot.key -out myroot.crt -days 3650
 
  openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout myroot.key -out myroot.crt -days 3650
*Diffie-Hellmann Parameter erzeugen
+
*Diffie-Hellmann Parameter erzeugen (Dient zur sicheren Übertragung von Schlüsselinformationen über unsichere Netzwerkabschnitte hinweg)
  openssl dhparam -out dh1024.pem
+
  openssl dhparam -out dh1024.pem 1024
  
 
=== CA für OpenVPN Dienst erstellen ===
 
=== CA für OpenVPN Dienst erstellen ===
Zeile 61: Zeile 92:
 
*die Extension v3_ca bewirkt, das erstellen einer "unter-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 req -new -newkey rsa:1024 -keyout services/openvpn/openvpn.key -out services/openvpn/openvpn.csr
  openssl ca -cert .myroot.crt  -keyfile myroot.key -in services/openvpn/openvpn.csr -out services/openvpn/openvpn.crt -extensions v3_ca
+
  openssl ca -cert myroot.crt  -keyfile myroot.key -in services/openvpn/openvpn.csr -out services/openvpn/openvpn.crt -extensions v3_ca
 
* ein komplettes Zertifikat (Suchtiefe) für den Dienst erstellen
 
* ein komplettes Zertifikat (Suchtiefe) für den Dienst erstellen
  cat myroot.crt > services/openvpn/openvpn_complete.crt
+
  cat myroot.crt 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 myroot.crt services/openvpn/openvpn_complete.crt
 
  openssl verify -CAfile myroot.crt services/openvpn/openvpn_complete.crt
 +
 
=== Zertifikat für OpenVPN Server erstellen ===
 
=== Zertifikat für OpenVPN Server erstellen ===
*(nur zur Sicherheit)
+
* falls wir nicht schon dort sind:
 
  cd /etc/ssl/my_ca
 
  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
+
* Key und Zertifikatsanfrage:
  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 req -new -newkey rsa:1024 -keyout services/openvpn/openvpnserver_1/openvpnserver_1_openvpn.key \
*und wieder testen
+
-out services/openvpn/openvpnserver_1/openvpnserver_1_openvpn.csr
  openssl verify -CAfile .services/openvpn/openvpn_complete.crt services/openvpn/openvpnserver_1/openvpnserver_1_openvpn.crt
+
 
 +
* als '''Server'''-Zertifikat unterschreiben mit Zertifikat und Key von der OpenVPN-CA, (nicht RootCA):
 +
  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 -extensions server
 +
 
 +
* und wieder testen:
 +
  openssl verify -CAfile services/openvpn/openvpn_complete.crt services/openvpn/openvpnserver_1/openvpnserver_1_openvpn.crt
 +
 
 +
* Falls der Server kein passwortgeschütztes Zertifikat unterstützt, kann man dieses beim Erzeugen des Keys (Schritt 1 in diesem Abschnitt) mit der Option '''-nodes''' unterdrücken oder nachträglich entfernen:
 +
openssl rsa -in services/openvpn/openvpnserver_1/openvpnserver_1_openvpn.key \
 +
-out services/openvpn/openvpnserver_1/openvpnserver_1_openvpn-without-passphrase.key
  
 
=== CA für ersten Kunden erstellen ===
 
=== 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 req -new -newkey rsa:1024 -keyout customers/custom_1/custom_1.key -out customers/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
+
  openssl ca -cert services/openvpn/openvpn.crt  -keyfile services/openvpn/openvpn.key \
 +
-in customers/custom_1/custom_1.csr -out customers/custom_1/custom_1_openvpn.crt -extensions v3_ca
 +
 
 
* Test ...
 
* Test ...
  openssl verify -CAfile services/openvpn/openvpn_complete.crt cusomers/custom_1/custom_1_openvpn.crt
+
  openssl verify -CAfile services/openvpn/openvpn_complete.crt customers/custom_1/custom_1_openvpn.crt
 +
 
 
* Vereinigte CA für Kunden erstellen (Suchtiefe)
 
* Vereinigte CA für Kunden erstellen (Suchtiefe)
  cat myroot.crt > cusomers/custom_1/custom_1_openvpn_copmplete.crt
+
  cat myroot.crt services/openvpn/openvpn.crt customers/custom_1/custom_1_openvpn.crt > customers/custom_1/custom_1_openvpn_complete.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 ===
 
=== Zertifikat für den ersten User des Kunden "custom_1" erstellen ===
Zeile 91: Zeile 134:
 
  cd /etc/ssl/my_ca
 
  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 req -new -newkey rsa:1024 -keyout customers/custom_1/user_1/user_1.key -out customers/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
+
  openssl ca -cert customers/custom_1/custom_1_openvpn.crt -keyfile customers/custom_1/custom_1.key \
 +
-in customers/custom_1/user_1/user_1.csr -out customers/custom_1/user_1/user_1.crt
 +
 
 
* Test ...
 
* Test ...
  openssl verify -CAfile cusomers/custom_1/custom_1_openvpn.crt cusomers/custom_1/user_1/user.crt
+
  openssl verify -CAfile customers/custom_1/custom_1_openvpn_complete.crt customers/custom_1/user_1/user_1.crt
  
 
== Hinweise ==
 
== Hinweise ==
=== Vereinigte Zertifikate (suchtiefe) ===
+
=== 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.<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 />
Zeile 106: Zeile 151:
 
  cert /etc/ssl/my_ca/services/openvpn/openvpnserver_1/openvpnserver_1_openvpn.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
 
  key /etc/ssl/my_ca/services/openvpn/openvpnserver_1/openvpnserver_1_openvpn.key
  dh /etc/ssl/my_ca/dh1024.pem
+
  dh /etc/ssl/my_ca/dh1024.pem 1024
 
  ...
 
  ...
 
* client.conf
 
* client.conf
 
  ...
 
  ...
  ca /PATH/custom_1_openvpn_copmplete.crt
+
  ca /PATH/custom_1_openvpn_complete.crt
 
  cert /PATH/user_1.crt
 
  cert /PATH/user_1.crt
 
  key /PATH/user_1.key
 
  key /PATH/user_1.key
 
  ...
 
  ...
=== -nodes Schlüssel ohne Kennwort===
+
 
 +
===Schlüssel ohne Kennwort===
 
Zuweilen kann es nötig sein (wenn gleich aus Sicherheitsgründen davon abzuraten ist),
 
Zuweilen kann es nötig sein (wenn gleich aus Sicherheitsgründen davon abzuraten ist),
 
passwortlose Schlüssel zu erstellen.  
 
passwortlose Schlüssel zu erstellen.  
Zeile 120: Zeile 166:
 
  -nodes
 
  -nodes
 
  if this option is specified then if a private key is created it will not be encrypted.
 
  if this option is specified then if a private key is created it will not be encrypted.
 +
 +
 
Verwendung:
 
Verwendung:
  openssl req -new -newkey rsa:1024 -nodes -keyout cusomers/custom_1/user_1/user_1.key -out cusomers/custom_1/user_1/user_1.csr
+
  openssl req -new -newkey rsa:1024 -nodes -keyout customers/custom_1/user_1/user_1_without_pass.key -out customers/custom_1/user_1/user_1.csr
 +
 
 +
oder nachträglich entfernen:
 +
 
 +
openssl rsa -in customers/custom_1/user_1/user_1.key -out customers/custom_1/user_1/user_1_without_pass.key
 +
 
 +
===Kennwort des privaten Schlüssels ändern oder nachträglich setzen===
 +
Wenn die Zertifikate und Schlüssel mit Tools erzeugt werden, die dabei kein Passwort setzen (z.B. easyRSA, pfsense-Certificate-Manager), ist es ratsam, den Key nachträglich durch ein Passwort zu schützen.
 +
Wie auch in anderen Systemen das Passwort regelmäßig geändert werden muß, kann man dies auch bei einem SSL-PrivateKey ändern, ohne dabei gleich ein neues Zertifikat zu erstellen und das Alte auszutauschen.
 +
 
 +
openssl rsa -in user_without_pass.key -out user.key -des3
 +
 
 +
Bei einem vorhandenen Passwort wird zuerst das alte Passwort abgefragt und danach das Neue.
 +
 
 +
===Zertifikate erneuern===
 +
 
 +
Es kann auch mit einem vorhandenen Key ein neuer CSR erstellt werden. Damit können dann abgelaufene Zertifikate erneuert werden oder auch der Key von einer anderen CA signiert werden.
 +
 
 +
openssl req -new -key user_1.key -out user_1.csr
 +
 
 +
Das Zertifikat wird wie oben beschrieben signiert.
 +
 
 +
===gut erklärende Webseite===
 +
 
 +
[http://thomassteinbach.blogspot.com/2009/02/vpn-teil-ii-openvpn-konfigurieren_1720.html http://thomassteinbach.blogspot.com/2009/02/vpn-teil-ii-openvpn-konfigurieren_1720.html]

Aktuelle Version vom 5. Oktober 2013, 20:28 Uhr

Inhaltsverzeichnis

[Bearbeiten] 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

[Bearbeiten] System

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

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

[Bearbeiten] Los gehts

[Bearbeiten] Ordnerstruktur anlegen

cd /etc/ssl
mkdir my_ca
cd my_ca
mkdir -p services/openvpn/openvpnserver_1
mkdir -p customers/custom_1/user_1

[Bearbeiten] OpenSSL Konfiguration anpassen

Das anpassen der "openssl.cnf" spart später viel Schreibarbeit.

  • in Section "CA_default" den Pfad "dir" anpassen
  • Standardwerte für "match" Einträge anpassen

/usr/lib/ssl/openssl.cnf (bzw. /etc/ssl/openssl.cnf):

[ CA_default ]
dir		= /etc/ssl/my_ca
...

policy		= policy_match

[ policy_match ]
countryName		= match
stateOrProvinceName	= match
organizationName	= match
...

[ req_distinguished_name ]
countryName_default		= DE
...
stateOrProvinceName_default	= Sachsen
...
0.organizationName_default	= OSSI - Otto's Super Service International

Den Abschnitt [ server ] an das Ende der openssl.conf einfügen.
Ergänzungen in openssl.conf:

[ server ]

#  Make a cert with nsCertType set to "server"
basicConstraints=CA:FALSE
nsCertType			= server
nsComment			= "Server Certificate"
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always
extendedKeyUsage=serverAuth
keyUsage = digitalSignature, keyEncipherment

Damit kann ein Zertifikat erzeugt werden, welches vom OpenVPN-Client mit der Option ns-cert-type server validiert werden kann.

[Bearbeiten] notwendige Ergänzungen in der Ordnerstruktur

  • falls wir nicht schon dort sind:
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
echo 01 > serial

[Bearbeiten] 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 myroot.key -out myroot.crt -days 3650
  • Diffie-Hellmann Parameter erzeugen (Dient zur sicheren Übertragung von Schlüsselinformationen über unsichere Netzwerkabschnitte hinweg)
openssl dhparam -out dh1024.pem 1024

[Bearbeiten] 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 myroot.crt  -keyfile myroot.key -in services/openvpn/openvpn.csr -out services/openvpn/openvpn.crt -extensions v3_ca
  • ein komplettes Zertifikat (Suchtiefe) für den Dienst erstellen
cat myroot.crt 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 myroot.crt services/openvpn/openvpn_complete.crt

[Bearbeiten] Zertifikat für OpenVPN Server erstellen

  • falls wir nicht schon dort sind:
cd /etc/ssl/my_ca
  • Key und Zertifikatsanfrage:
openssl req -new -newkey rsa:1024 -keyout services/openvpn/openvpnserver_1/openvpnserver_1_openvpn.key \
-out services/openvpn/openvpnserver_1/openvpnserver_1_openvpn.csr
  • als Server-Zertifikat unterschreiben mit Zertifikat und Key von der OpenVPN-CA, (nicht RootCA):
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 -extensions server
  • und wieder testen:
openssl verify -CAfile services/openvpn/openvpn_complete.crt services/openvpn/openvpnserver_1/openvpnserver_1_openvpn.crt
  • Falls der Server kein passwortgeschütztes Zertifikat unterstützt, kann man dieses beim Erzeugen des Keys (Schritt 1 in diesem Abschnitt) mit der Option -nodes unterdrücken oder nachträglich entfernen:
openssl rsa -in services/openvpn/openvpnserver_1/openvpnserver_1_openvpn.key \
-out services/openvpn/openvpnserver_1/openvpnserver_1_openvpn-without-passphrase.key

[Bearbeiten] CA für ersten Kunden erstellen

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

[Bearbeiten] 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 customers/custom_1/user_1/user_1.key -out customers/custom_1/user_1/user_1.csr
openssl ca -cert customers/custom_1/custom_1_openvpn.crt -keyfile customers/custom_1/custom_1.key \
-in customers/custom_1/user_1/user_1.csr -out customers/custom_1/user_1/user_1.crt
  • Test ...
openssl verify -CAfile customers/custom_1/custom_1_openvpn_complete.crt customers/custom_1/user_1/user_1.crt

[Bearbeiten] Hinweise

[Bearbeiten] 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 von OpenVPN würden die Zertifikate wie folgt verwendet:

  • 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 1024
...
  • client.conf
...
ca /PATH/custom_1_openvpn_complete.crt
cert /PATH/user_1.crt
key /PATH/user_1.key
...

[Bearbeiten] Schlüssel ohne Kennwort

Zuweilen kann es nötig sein (wenn gleich aus Sicherheitsgründen davon abzuraten ist), passwortlose Schlüssel zu erstellen. Die Flag -nodes hilft.

-nodes
if this option is specified then if a private key is created it will not be encrypted.


Verwendung:

openssl req -new -newkey rsa:1024 -nodes -keyout customers/custom_1/user_1/user_1_without_pass.key -out customers/custom_1/user_1/user_1.csr

oder nachträglich entfernen:

openssl rsa -in customers/custom_1/user_1/user_1.key -out customers/custom_1/user_1/user_1_without_pass.key

[Bearbeiten] Kennwort des privaten Schlüssels ändern oder nachträglich setzen

Wenn die Zertifikate und Schlüssel mit Tools erzeugt werden, die dabei kein Passwort setzen (z.B. easyRSA, pfsense-Certificate-Manager), ist es ratsam, den Key nachträglich durch ein Passwort zu schützen. Wie auch in anderen Systemen das Passwort regelmäßig geändert werden muß, kann man dies auch bei einem SSL-PrivateKey ändern, ohne dabei gleich ein neues Zertifikat zu erstellen und das Alte auszutauschen.

openssl rsa -in user_without_pass.key -out user.key -des3

Bei einem vorhandenen Passwort wird zuerst das alte Passwort abgefragt und danach das Neue.

[Bearbeiten] Zertifikate erneuern

Es kann auch mit einem vorhandenen Key ein neuer CSR erstellt werden. Damit können dann abgelaufene Zertifikate erneuert werden oder auch der Key von einer anderen CA signiert werden.

openssl req -new -key user_1.key -out user_1.csr

Das Zertifikat wird wie oben beschrieben signiert.

[Bearbeiten] gut erklärende Webseite

http://thomassteinbach.blogspot.com/2009/02/vpn-teil-ii-openvpn-konfigurieren_1720.html

Meine Werkzeuge