Es steht zwar schon an vielen Stellen im Netz, aber so brauche ich nicht immer neu zu suchen :). Zertifikate sind zwar etwas komplizierter als Geheime Schlüssel, sind aber auch sicherer und an einigen Stellen dann doch wieder arbeitserleichternd. Vorraussetzung ist das openssl Paket.
Der Beginn ist immer die CA (Certification Authority), diese kann natürlich extern und offiziell sein, hier geht es aber nur um die kleine Lösung vollständig in eigener Verantwortung und ohne Kosten. Am einfachsten geht dies mit dem CA.sh Skript, dieses muss allerdings unter Umständen bearbeitet werden, wenn einem die Vorgaben nicht gefallen, z.B. die Lebensdauer der CA. In der /etc/ssl/openssl.cnf kann die Lebensdauer der Endgerätezertifikate eingetragen werden, außerdem sollte hier die Anzahl der Bits des Schlüssels von 1024 auf 2048 gesetzt werden und vor allem stateOrProvinceName von mandatory auf optional gesetzt werden sowie der Vorgabetext von stateOrProvinceName_default gelöscht werden. Dann kann die selbstunterschriebene CA erzeugt werden (es werden diverse Fragen gestellt, das Passwort natürlich gut und sicher irgendwo in den Safe):
/usr/lib/ssl/misc/CA.sh -newca
Dies legt bei Standardeinstellungen in ./demoCA eine Datei cacert.pem sowie careq.pem an.
Als nächstes wird ein Zertifikat für den Zugansrechner erstellt:
/usr/lib/ssl/misc/CA.sh -newreq
Dieses kann dann mit dem CA-Zertifikat unterschrieben werden:
/usr/lib/ssl/misc/CA.sh -sign
Nun werden der öffentliche Schlüssel der CA und privater und öffentlicher Schlüssel unter sinnvollem Namen an den richtigen Platz im IPSec Konfigurationsverzeichnis gelegt. Das Verzeichnis demoCA ist wichtig! In der index.txt stehen z.B. die fortlaufenden Zertifikate.
mv newcert.pem meinname.pem mv newreq.pem meinname.key
cp demoCA/cacert.pem meineca.pem cp meinname.pem /etc/ipsec.d/certs cp meinname.key /etc/ipsec.d/private cp meineca.pem /etc/ipsec.d/cacerts