[OpenVPN] Teil 2: Anlegen der Zertifikate und Schlüssel für den Server

Im Teil 2 beschreibe ich, wie man die Zertifikate und Schlüssel für den Server anlegt.

Ausserdem wird gleich der Grundstein gelegt, damit man später auch bereits vergebene Zertifikate zurückziehen kann.

Anmerkung

Update 12.08.2016: Auf OpenVPN 2.3.4 aktualisiert.

Update: Verlinkung auf weitere Anleitungsteile am Ende hinzugefügt.

Update 08.03.2010: Variable KEY_NAME exportiert

Update 21.09.2009: Variablen-Export hinter “source ./vars” verschoben (bei Debian Lenny werden sie sonst überschrieben).

Anlegen der Zertifikate & Schlüssel für den Server

Damit das Rad nicht doppelt erfunden wird, haben die OpenVPN Entwickler die Tool-Sammlung easy-rsa erstellt. Diese kopiert man sich in sein OpenVPN Verzeichnis:

cp -R /usr/share/easy-rsa /etc/openvpn
cd /etc/openvpn/easy-rsa

Anschließend definiert man ein paar Standardwerte in der globalen Konfiguration /etc/openvpn/easy-rsa/vars:

export KEY_COUNTRY="DE"
export KEY_PROVINCE="Saxony"
export KEY_CITY="Chemnitz"
export KEY_ORG="Knuddelbunte Welt Organisation"
export KEY_EMAIL="hier_kommt_die_email@hi.n.de"

Nun lesen wir die Standardwerte ein…

source vars

… und initialisieren die Schlüssel

./clean-all

Jetzt ist es an der Zeit, die Zertifikat Autorität und das Server Zertifikat anzulegen. Zuerst die Autorität (die vorher festgelegten Standardwerte werden automatisch voreingestellt):

./build-ca
Country Name (2 letter code) [DE]:
State or Province Name (full name) [Saxony]:
Locality Name (eg, city) [Chemnitz]:
Organization Name (eg, company) [Knuddelbunte Welt Organisation]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) [Knuddelbunte Welt Organisation CA]:
Name [EasyRSA]:
Email Address [hier_kommt_die_email@hi.n.de]:

Und dann das Server Zertifikat:

./build-key-server server
Country Name (2 letter code) [DE]:
State or Province Name (full name) [Saxony]:
Locality Name (eg, city) [Chemnitz]:
Organization Name (eg, company) [Knuddelbunte Welt Organisation]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) [server]:
Name [EasyRSA]:
Email Address [hier_kommt_die_email@hi.n.de]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: 
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.0.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'DE'
stateOrProvinceName   :PRINTABLE:'Saxony'
localityName          :PRINTABLE:'Chemnitz'
organizationName      :PRINTABLE:'Knuddelbunte Welt Organisation'
commonName            :PRINTABLE:'server'
name                  :PRINTABLE:'EasyRSA'
emailAddress          :IA5STRING:'hier_kommt_die_email@hi.n.de'
Certificate is to be certified until Aug 10 18:52:51 2026 GMT (3650 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Zum Schluß noch schnell die Diffie Hellmann Parameter generieren…

./build-dh

… und die crl.pem-Datei erstellen, mit der es später möglich ist, vergebene Zertifikate ungültig zu machen.

export KEY_CN=
export KEY_OU=
export KEY_NAME=
export KEY_ALTNAMES=
openssl ca -gencrl -out /etc/openvpn/crl.pem -config openssl-1.0.0.cnf

OpenVPN Anleitung: Teil 1, Teil 2, Teil 3, Teil 4, Teil 5