X.509 Meets OpenSSH

Submitted by admin on So, 11.12.2016 - 09:50

Will man seine OpenSSH Keys irgendwie zentral verwalten, dann sind X509 Zertifikate eine Lösung. Wer ohnehin eine PKI, wie z.B. EJBCA hat, kann dieses dafür nutzen. OpenSSH unterstützt selbst keine X.509 Zertifikate, bietet aber Tools an, die OpenSSL zusammen funktionieren.

#!/bin/bash

usage() {
  echo "usage: $0 <pkcs12 file>"
  exit 1
}

PKCS12="$1"
if [ -z "$PKCS12" ]; then
  usage;
fi

umask 077
tmp_cert="/tmp/mycert.pem.$$"

openssl pkcs12 -in "$PKCS12" -out "$tmp_cert" -nodes
openssl pkcs12 -in "$PKCS12" -out id -nocerts
openssl x509 -in "$tmp_cert" -pubkey -noout >> id
rm -f "$tmp_cert"
ssh-keygen -i -m PKCS8 -f id > id_pub

Das Zertifikat samt private Key muss als PKCS#12 File vorliegen. Es wird vom Skript nach dem Passwort der PKCS#12 Datei und dem neuen Passwort für das id File gefragt. Die id_pub muss dann auf dem Zielserver der authorized_keys hinzugefügt werden und das id File wird vom Client als privater Schlüsselt verwendet.

Die X.509 Features, wie CRL oder OCSP können leider nicht genutzt werden, weil OpenSSH die X.509 Infrastruktur dahinter nicht kennt. Die Entwickler wollen einfach kein X.509 unterstützen.