Die Ende-zu-Ende Verschlüsselung von E-Mails ist eine sehr sichere Variante des E-Mail-Austauschs. Dazu kann man entweder Zertifikate von Comodo o.ä. kaufen (es gibt auch kostenlose für ein Jahr) oder man erzeugt selbst Zertifikate z.B. mit "openssl". Hier ist jedoch einiges zu beachten.
Ich gehe hier davon aus, dass man für seine private Umgebung oder die Firmenumgebung Zertifikate erzeugen will und diese an die User verteilen möchte. Hier beschreibe ich die Erzeugung von SSL/TLS Zertifikaten mit "openssl" und die Einbindung in Outlook zur Verwendung derselben zum Signieren der Nachrichten und zum Verschlüsseln der Nachrichten.
Wir wollen nicht nur irgendein Zertifikat erzeugen, sondern ein in unserer IT-Umgebung anerkannt gültiges, deshalb erzeugen wir zunächst ein Root-Zertifikat etc., falls es dann schon gibt von der internen PKI, kann/sollte man natürlich das nutzen.
Openssl erhält man z.B. von der offiziellen openssl Website. Oftmals ist es auch bereits bei Webserverinstallationen enthalten und muss nur auf dem entsprechendem Rechner gefunden werden.
Ich gehe hier im Folgenden davon aus, dass man mit der Konsole (CMD oder Powershell) umgehen kann und bereits in dieser Konsole in das Verzeichnis von openssl gewechselt ist. So sparen wir uns verwirrungen bei den Pfadangaben.
Erstmal einen privaten Schlüssel von 2048 Bit Länge erzeugen (Passwort wird abgefragt dazu. Gut merken):
openssl genpkey -algorithm RSA -out CA.key -aes-256-cbc -pass pass:myPassword -pkeyopt rsa_keygen_bits:2048
genpkey ist hier das Kommando um einen private key zu erzeugen. https://www.openssl.org/docs/manmaster/man1/genrsa.html
openssl req -x509 -new -nodes -extensions v3_ca -key .\CA.key -days 1024 -out CA.crt -sha512
Den Zwischenschritt den wir später noch sehen, die Erzeugung eines CSR, machen wir hier implizit mit und gehen direkt zum zertifikat. Dies erreichen wir durch die Zusätze (-x509 und -out)
Jetzt haben wir ein Zertifikat um weitere Zertifikate zu Signieren.
openssl genpkey -algorithm RSA -out my.key -aes-256-cbc -pass pass:myPassword -pkeyopt rsa_keygen_bits:2048
CSR erzeugen
openssl req -new -key my.key -out my.csr
Im folgenden Schritt wollen wir nicht nur das Zertifikat erzeugen, sondern auch die richtige/aktuelle Version (x509_v3/version 3) erzeugen. Dazu ist es erforderlich, dass man als zusätzliches Attribut mindestens die sogenannten "Alternative Names" mitliefert. In diesem Attribut steht im Prinzip einfach nur nochmal die E-Mail-Adresse die wir absichern wollen. Viele Programme schauen allerdings mittlerweile NUR noch in dieses Attribut und wenn es nicht existiert funktioniert es nicht.
Deshalb:
subjectAltName=DNS:my.mailadress@domain.com
Natürlich mit den eigenen Daten.
openssl x509 -req -in .\my.csr -CA ./CA.crt -CAkey ./CA.key -CAcreateserial -out my.crt -days 365 -sha512 -extfile ./extfile.cnf
Zertifikat mitsamt private Key in eine .p12 Datei packen. (Für den Import ins Outlook. Der User braucht ja den private Key)
openssl pkcs12 -export -in .\my.crt -inkey .\my.key -out my.p12
Der Ablauf ist immer Ähnlich. Ich beschreibe hier nur noch die aktuelle Version Outlook 2016 (2013 ist exakt gleich).
Das wars erstmal auf der eigenen Seite.
Derjenige, der jetzt die digital signierte E-Mail erhält, muss nur noch z.B. mit rechtsklick auf den Namen des Absenders, diesen Als Kontakt zu Outlook hinzufügen.
Jetzt kann dieser Kommunikationspartner verschlüsselte Mails an mich senden, wenn er in einer Neuen E-Mail unter Optionen->Verschlüsseln auswählt und nur ich, der im Besitz des Private-Key ist, kann die Nachricht noch lesen.