Hintergrund
Auch beim S/MIME-Zertifikat wird ein Schlüsselpaar für die asymetrische Verschlüsselung eingesetzt. Dabei handelt es sich um einen privaten Schlüssel, der nicht weiter gegeben werden darf - mit ihm werden Mailinhalte entschlüsselt und eigene Mails signiert. Verschlüsselt werden Mails mit dem öffentlichen Schlüssel, dieser wird vom privaten Schlüssel abgeleitet. Beide Schlüssel haben also eine enge Beziehung und funktionieren auch nur zusammen. Im Gegensatz zum privaten Schlüssel, muss der öffentliche Schlüssel an die Personen verteilt werden, von denen man eine verschlüsselte Mail erhalten möchte.
Daher ist es ratsam, dass der private Schlüssel lokal auf dem eigenen Rechner erstellt wird und nicht beim ausstellenden Dienstleister (CA).
Die entsprechende Verwaltung übernimmt in der Regel das Mail-Programm. Wird als Beispiel mit dem eigenen S/MIME-Zertifikat eine Mail signiert und versendet, erhält der Empfänger automatisch mit der Mail den öffentlichen Schlüssel des Versenders.
Vorgehensweise
-
Der private Schlüssel
Der private Schlüssel wird wie folgt lokal angelegt:
#> openssl genrsa -out private.key -des3 4096Die Parameter genrsa zusammen mit der Zahl 4096 ergeben später einen RSA-Schlüssel mit der entsprechenden Schlüssellänge. Der Parameter -des3 fordert dazu auf diesen privaten Schlüssel mit Hilfe einer Passphrase zu schützen. Der private Schlüssel wird dann mit -out in die Datei private.key geschrieben.
-
Generieren eines CSR (Certificate Signing Request)
Der CSR ist quasi das Antragsformular für die CA in Dateiform. Angelegt wird dieser mit Hilfe des privaten Schlüssels, der im vorherigen Schritt angelegt wurde:
#> openssl req -new -key private.key -out certificate.csrHierbei handelt es sich quasi schon um ein S/MIME-Zertifikat, in dem der öffentliche Schlüssel vom privaten Schlüssel abgeleitet wird. Die Parameter req mit -new fordern openssl dazu auf zusammen mit -key private.key das S/MIME-Zertifikat als CSR in die Datei (-out) certificate.csr zu schreiben. Nur der öffentliche Schlüssel ist dann Bestandteil des CSR.
Beim Erstellungsprozess werden verschiedene Fragen gestellt. Wichtig sind hierbei nur die Angaben "Common Name" und "Email Address", beide werden mit der eigenen Mailadresse für das S/MIME-Zertifikat bestätigt. Die CAs prüfen später während der Erstellung diese Felder ab und ignorieren überflüssige Details.
Die Datei certificate.csr gehört also zum Prozess, sich bei einer CA der Wahl ein beglaubigtes S/MIME-Zertifikat zu erwerben.
-
Das von der CA ausgestellte und signierte S/MIME-Zertifikat
Wenn das von der CA ausgestellte und signierte S/MIME-Zertifikat vorliegt, fehlt jetzt der letzte Schritt, den privaten Schlüssel mit in das standardisierte X.509-Zertifikat zu bringen und in ein passendes Datei-Format (PKCS#12) zu überführen. Zum Schluss wird noch nach einer Passphrase zum Schutz des S/MIME-Zertifikates verlangt:
#> openssl pkcs12 -in my_ca_certificate.crt -inkey private.key -export -out my_certificate.p12Info: Sollte es Probleme beim Importieren des Zertifikates geben, kann es an einer Formatbeschränkung liegen. Dann sollte das Zusammenführen in einer älteren Form erfolgen, was mit dem Parameter -legacy erfolgt.
#> openssl pkcs12 -in my.crt -inkey private.key -export -legacy -out my_certificate.p12