Schlüsselverwaltung mit XCA

Aus OpenVPN Wiki

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Einleitung

XCA ist eine erweiterte Schlüsselverwaltungssoftware und damit eine Alternative zu EasyRSA. Die Vorteile sind eine grafische Oberfläche und damit eine bessere Übersicht von den ausgestellten Zertifikaten. Die Zertifikate/Schlüssel werden in einer zentralen Datenbankdatei gespeichert. Die privaten Schlüssel werden dabei mit einem Passwort geschützt.

Installation

Zuerst muss XCA heruntergeladen und installiert werden. Dies ist eine Standardprozedur unter Windows und Linux und wird daher nicht weiter erklärt. Bei Problemen kann die XCA Dokumentation und/oder das Forum helfen..

Erstellen einer Datenbank

In XCA findet sich unter dem Menü Datei der Punkt New DataBase. Wählt hier nun einen Speicherort und einen passenden Namen für die Datenbank. Es ist zu empfehlen, die Datenbank auf einen USB Stick abzuspeichern. Aus Sicherheitsgründen sollte das ganze in einem verschlüsselten Container gespeichert werden. (z.B. mit TrueCrypt)

Wählt danach ein Password (möglichst lange) für die Sicherung der privaten Schlüssel. Danach wird die leere Datenbank automatisch geöffnet.

Erstellen von Templates für Server und Clientkeys

Wählt nun den Reiter Templates aus und klickt auf New Template. Wählt CA aus und klickt auf OK. Als Internal Name könnt ihr z.B. "CA_Template" nehmen. Füllt alle anderen Felder, außer Common Name, aus:

Internal Name     ... nur ein interner Name für das Template in XCA. Beispiel: OpenVPN_Server_Template
Country Code      ... Länderkürzel. Beispiel: DE
State or Province ... Bundesland. Beispiel: Bavaria
Locality          ... Stadt/Ort. Beispiel: Munich
Organisation      ... Firmenname. Beispiel: Example Inc.
Organ. Unit       ... Abteilung. Beispiel: EDV
Common Name       ... (leer bei Templates)
E-Mail Address    ... Beispiel: admin@example.com

Im Reiter Extensions kann man die Standard-Gültigkeitsdauer der Zertifikate anpassen. Im Normalfall ist 1 Jahr ausreichend, für die CA 10 Jahre.

Wiederholt den Vorgang mit HTTPS_server als Preset. Als Internal Name empfiehlt sich etwas wie "OpenVPN_Server_Template". Die restlichen Werte wie beim CA-Template.

Erzeugt ein drittes Template mit Preset HTTPS_client. Nehmt die selben Werte wie beim Server-Template und der CA, nur wieder einen anderen Internal Name (z.B. OpenVPN_client_Template).

Erzeugen einer CA

Nun können wir eine CA aus dem Template erzeugen. Wechselt dazu in den Reiter Certificates und klickt auf New Certificate. Im Reiter Source wählt ihr das CA-Template aus ("CA_Template") und klickt auf Apply. Als 'Signatur algorithmus' wählen wir 'MD5'. Im Reiter Subject gebt ihr der CA nun einen Common Name. Beispiel: OpenVPN_CA. Die restlichen Felder sollten aus dem Template übernommen worden sein. Danach klickt ihr auf Generate a new key. Gebt dem Key am besten den selben Namen wie der Common Name der CA, also in unserem Beispiel "OpenVPN_CA" und klickt auf Create, danach auf OK.

Erzeugen eines Server-Zertifikats

Wählt erneut New Certificate im Reiter Certificates. Als Vorlage diesmal eurer Server-Template auswählen und auf Apply klicken. Als 'Signatur algorithmus' wählen wir 'MD5'. Beim Unterpunkt Signing klickt die Option Use this certificate for signing an und wählt eure CA aus. Als Common Name im Reiter Subject könnt ihr beispielsweise "OpenVPN_Server1" eintragen. Die anderen Felder sollten bereits vom Template übernommen worden sein. Erzeugt nun für dieses Zertifikate einen Schlüssel (Generate a new key) und nennt ihn wie der Common Name des Zertifikats. Danach auf OK klicken.

Erzeugen der Client-Zertifikate

Für jeden Client müsst ihr ein eigenes Zertifikat erzeugen. Als Template wählt ihr euer Client-Template, danach wieder auf Apply. Als 'Signatur algorithmus' wählen wir 'MD5'. Signing auf eure CA einstellen. Die Common Names müssen immer eindeutig sein. Beispiel: OpenVPN_Client1, OpenVPN_Client2, etc. Natürlich wieder einen Schlüssel für jeden Client erzeugen. (Name = Common Name)

Exportieren als PKCS#12-Dateien

Damit die Schlüsselpaare in OpenVPN verwendet werden können, kann man sie kompakt in eine PKCS#12-Datei exportieren. Wählt das Server-Zertifikat im Reiter Certificates aus und klickt auf Export. Gebt ein Speicherziel an und wählt als Export Format "PKCS #12 with Certificate Chain" aus. Danach auf OK. Ihr werdet nun nach einem Password gefragt, welches den privaten Schlüssel in der PKCS#12-Datei schützt. Beim Server wird normalerweise - wegen Autostart - kein Password verwendet. Bei den Clients sind Passwörter jedoch empfehlenswert.

Wiederholt den Vorgang für jedes Client-Zertifikat.

In der OpenVPN-Konfigurationsdatei müsst ihr nun nicht mehr die "ca", "cert" und "key" Direktiven benutzen. Stattdessen reicht die "pkcs12 <datei>" Direktive. Beispiel:

pkcs12 /etc/openvpn/keys/OpenVPN_Server1.p12

Hinweis: Die DH-Parameter können mit XCA nicht erstellt werden. Diese müsst ihr mit EasyRSA erstellen. Alternativ kann man sie auch mit openssl direkt erzeugen:

openssl dhparam -out dh1024.pem 1024

Weblinks

Persönliche Werkzeuge