EFS Schlüsselerzeugung per OpenSSL

EFS Schlüssel per OpenSSL erstellen

Alle die ihre EFS Schlüssel nicht vom Microsoft OS oder einer Microsoft-CA erzeugen möchten, erhalten hier die Anleitung diese per OpenSSL zu erstellen.

Ich nutze in meinem Code-Beispiel einen Ubuntu 16.04 LTE Server mit OpenSSL Version 1.0.2g-fips. Da die Befehlsyntax von OpenSSL aber auf allen unterstützten Systemen ident ist, wird das Script auf anderen Linux / Unix Systemen ebenfalls laufen.

Erstellung eines EFS-Schlüssels mit OpenSSL

Einfach als User oder Administrator das u.a Shell-Script als efs-cert-generate.sh speichern. Dann die Dateirechte mit chmod +x efs-cert-generate.sh ändern, um das Script in der Shell direkt aufrufen zu können.

Mit Hilfe meines Scripts kannst du beliebig viele EFS-Schlüssel für unterschiedliche Benutzer erzeugen und ggfls. auch am Linux-Server (am besten mit RAID) sicher speichern.

#!/bin/bash
read -p "Accountname (z.B. mmustermann):" account

mkdir ${account}
cd ${account}

cat >${account}.cnf <<-EOF
[ req ]
default_bits            = 2048
distinguished_name      = req_distinguished_name
string_mask = utf8only

[ req_distinguished_name ]
countryName                     = Land (2 Zeichen, z.B. AT, DE, CH)
countryName_default             = AT
countryName_min                 = 2
countryName_max                 = 2
localityName                    = Ort bzw. Stadt (z.B. Wien)
localityName_default            = Wien
0.organizationName              = Organization Name (eg, company)
0.organizationName_default      = Meine Firma
commonName                      = Dein Name (z.B. Max Mustermann)
commonName_default              = Andreas Schuster [Verschlüsselt.IT]
commonName_max                  = 64
emailAddress                    = Email Address
emailAddress_max                = 64

[ usr_cert ]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer

[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = 1.3.6.1.4.1.311.10.3.4
EOF

### Generiert einen Schlüssel für den Benutzer, Schlüsseldatei ist mit einem Passwort geschützt
echo "Ein neuer Schlüssel für den Benutzer <${account}> wird generiert..."
openssl genrsa -des3 -out ${account}.key 2048

### Speicherung der Schlüsseldatei ohne Passwort, unsicherer im Backup,  aber besser für ein späteres Recovery ;-)
echo "Der Schlüssel wird nun ohne Passwort gespeichert..."
openssl rsa -in ${account}.key -out ${account}.nopass.key

### Ein Certificate-Signing-Request wird mit den Parametern des Config-File erstellt
echo "Der Zertifikatsantrag (CSR) wird erstellt..."
openssl req -new -key ${account}.nopass.key -out ${account}.csr -config ${account}.cnf

### Optional: Ausgabe des Certificate-Signing-Request zur Kontrolle durch den Administrator
echo "Dies ist der Inhalt des Zertifikats..."
openssl req -text -noout -in ${account}.csr

### Generierung eines Self-Signed Zertifikates mit XX Jahren Laufzeit
echo "Das selbst-signierte Zertifikat mit Windows kompatiblen EFS-Eigenschaften wird erstellt..."
tage=365
jahre=20
laufzeit=`expr $tage \* $jahre`
openssl x509 -req -days ${laufzeit} -in ${account}.csr -signkey ${account}.nopass.key -out ${account}.crt -extensions v3_req -extfile ${account}.cnf

### Erstellung einer .P12/.PFX Datei, die am Windows Client importiert werden kann
echo "Die .P12/.PFX Datei (X.509 Zertifikat + privater Schlüssel) wird erstellt..."
openssl pkcs12 -export -in ${account}.crt -inkey ${account}.nopass.key -out ${account}.p12
EFS-SchlüsselDATEI erzeugen

Nach dem Aufruf des Script und der Eingabe der selbsterklärenden Parameter findest du in einem Unterverzeichnis, das nach dem Accountnamen benannt ist, eine passwortgeschützte .p12 Datei. Diese kannst du nach dem Kopien auf ein Windows-System unter Windows direkt per Doppelklick importieren und für die EFS-Verschlüsselung nutzen. Der private Schlüssel beim Import-Vorgang sollte als nicht exportierbar markiert werden. Ein Passwortschutz (die Option „Hohe Sicherheit“ beim Import) auf den privaten Schlüssel wird von EFS leider nicht unterstützt.

Erstelle ein EFS-Schlüssel-Backup!

Die .p12 Schlüsseldatei speichere bitte an einem sicheren Ort mit einem aussagekräftigen Passworthinweis. Ob ein USB-Stick in mehreren Jahren noch korrekt funktioniert, würde ich nicht dem Zufall überlassen. Als geeignet halte ich eine gebrannte CD und zusätzlich eine Ablage auf einem Cloud-Speicher.

Hast Du Erfahrungen mit Microsoft Encrypted File System und EFS-Schlüssel? Ich freue mich auf Deine Kommentare!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*