XCA
XCA ist eine grafische Oberfläche zum verwalten von Zertifikaten. CA, Zertifikate, Keys und die CRL können hier bequem angelegt oder auch importiert werden. XCA ist für Windows, Linux und Mac verfügbar. Templates erleichtern das erstellen neuer CSR und Zertifikate. Keys werden zentral in der Datenbank gelagert und mit dem Datenbank-Kennwort gesichert. Damit kann der Key erneut exportiert werden, wenn das Kennwort vergessen wurde. XCA kann auch mehrere solcher Datenbanken verwalten.
Unter Debian (ab Squeeze) und ubuntu ist einfach das gleichnamige Paket zu installieren. Der Download ist von http://xca.sourceforge.net möglich.
Um die Zertifikate zu verwenden exportiert man diese aus der Sektion Zertifikate im Format "PKCS #12 with Certificate chain". PKCS #12 ohne Chain funktioniert nicht mit OpenVPN, sobald die Zertifikaten von einer Sub-CA signiert wurden, da der Client dann nicht die gesamte Kette bis zum Server-Zertifikat überprüfen kann. Die Keys selbst (aus der Sektion Private Schlüssel) lassen sich leider in keinem brauchbaren Format für OpenVPN exportieren.
Die exportierte p12-Datei kann in der OpenVPN-Konfiguration direkt verwendet werden:
pkcs12 /path/to/myCert.p12
Damit werden die "ca", "cert" und "key"-Direktiven nicht mehr benötigt.
Sollten die einzelnen Bestandteile benötigt werden, so können diese mit openssl extrahiert werden:
#!/bin/bash if [[ "${1##*.}" == "p12" && -f $1 ]]; then CERT=${1%.p12} else echo "Usage $0 <p12-File> [nopass]" exit 1 fi if [[ "${2}" == "nopass" ]]; then echo "extract private key without new passphrase !!!" echo KEYOPT="-nodes" fi echo "extract client cert:" openssl pkcs12 -in $CERT.p12 -clcerts -nokeys -nodes -out $CERT-cert.pem echo "extract private key:" openssl pkcs12 -in $CERT.p12 -nocerts $KEYOPT -out $CERT-key.pem echo "extract CA cert:" openssl pkcs12 -in $CERT.p12 -cacerts -nodes -out $CERT-ca.pem
Dieses Script erzeugt in einen Durchgang die benötigten Einzelteile.