[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