Mails mit SSL Zertifikaten verschlüsseln (S/MIME)

Version 1.0

Author: Christian Schmalfeld  <c [dot] schmalfeld [at] projektfarm [dot] de>

Follow me on Twitter

In diesem Artikel geht es darum, wie man die S/MIME Verschlüsselungsfunktion von E-Mailprogrammen dazu nutzt um Mails zu signieren oder sicher zu verschlüsseln. S/MIME benutzt zur Verifizierung der Identität SSL Zertifikate, welche Sie entweder selbst erstellen oder von einer vertrauenswürdigen Zertifikatsbehörde (CA – Certificate Authority) erstellen lassen können.

Für die Inhalte dieses Tutorials übernehme ich keinerlei Garantie!

1 Vorbemerkung

S/MIME funktioniert nicht ganz genau so, wie Sie vielleicht denken. Sie können keine Mails damit verschlüsseln, sobald Sie sich ein eigenes SSL Zertifikat zugelegt haben – damit können Sie Mails digital signieren und an Sie geschickte verschlüsselte Mails entschlüsseln.

S/MIME ist ein System, dass mit zweierlei Schlüsseln hantiert – Ihrem öffnetlichen Schlüssel (public key) und Ihrem privaten Schlüssel (private key). Mit dem Public Key können Sie Ihre Mails signieren, so gelangen andere in dessen Besitz. Ist eine andere Person in Besitz Ihres Public Keys, so kann diese Mails, die an Sie adressiert sind, damit verschlüsseln – entschlüsselt werden diese dann von Ihnen mit Ihrem Private Key. Um also letztendlich verschlüsselte Mails zu verschicken, brauchen Sie den Public Key des Empfängers. Geben Sie jedoch niemals Ihren Private Key an andere weiter!

Ich führe dieses Tutorial auf einem Computer mit dem Linux Mint 11 Betriebssystem durch, ersetzen Sie also wenn nötig die benutzten Befehle durch die auf Ihrem Betriebssystem gültigen.

Die Schritte, mit denen später Zertifikate in Thunderbird importiert werden sind auf jedem Betriebssystem die selben, Sie können sie also auch unter Windows und Mac anwenden.

2 SSL Zertifikate selbst erstellen

SSL Zertifikate selbst zu erstellen hat den Vorteil, dass Sie Ihre persönlichen Daten keiner Zertifikatsbehörde mitteilen mpssen – diese brauchen Ihre Daten, um Ihre Identität verifizieren zu können und überprüfen diese in der Regel auch. Sie können eine solche Zertifikatsbehörde auch selbst erstellen, dies ist jedoch zum Signieren und Verschlüsseln von Mails nicht zwingend notwendig.

2.1 Installation von OpenSSL

Um ein eigenes SSL Zertifikat zu erstellen, müssen Sie zunächst das openssl Paket installieren, sollten Sie dies nicht bereits getan haben. Geben Sie zur Installation folgendes in ein Terminal ein:

sudo apt-get install openssl

Es sollte nun möglich sein die openssl-Shell durch

openssl

aufzurufen oder jedem Befehl das Wort openssl voranzustellen um OpenSSL Befehle auszuführen. Ich werde in diesem Tutorial von der Standart-Shell aus arbeiten.

2.2 Ein selbstsigniertes Zertifikat erstellen

Als erstes sollten Sie einen Ordner erstellen, in dem alle zum Zertifikat gehörenden Dateien gespeichert werden und Ihre Shell auf diesen Ordner zeigen lassen. Ich werde meine Dateien im Ordner /home/ctest/ssl speichern, wobei ctest mein Benutzername ist. Um diesen Ordner zu erstellen und hineinzuzeigen benutze ich:

mkdir /home/ctest/ssl
cd /home/ctest/ssl

Was Sie tun müssen bevor Sie das eigentliche Zertifikat anfertigen ist einen Schlüssel für dieses zu generieren. Geben Sie folgendes auf der Shell ein:

openssl genrsa -des3 -out cert.key 4096

Sie werden dann nach einem Passwort für diese Schlüsseldatei gefragt. Geben Sie ein starkes Passwort ein, an dass Sie sich später erinnern:

Generating RSA private key, 4096 bit long modulus
.......++
...............................++
e is 65537 (0x10001)
Enter pass phrase for cert.key:

Als nächstes erstellen Sie die Zertifikatssignierungsanfrage, in dem Sie folgendes eingeben:

openssl req -new -key cert.key -out cert.csr

Sie werden nun nach den Daten für die Zertifikatsfelder gefragt. In das Common Name Feld gehört normalerweise der Servername; geben Sie hier jedoch keinen bekannten Servernamen wie smtp.web.de ein – vertrauenswürdige Server sind Ihrem Mailprogramm meist schon bekannt und es wird Ihr Zertifikat als Identitätsraub werten! Alles andere was Sie in dieses Feld eintragen sollte funktionieren. Stellen Sie sicher, dass Sie sich nicht bei Ihrer E-Mail-Adresse vertippt haben:

Enter pass phrase for cert.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
ctest-System-Product-Name ssl #

Als nächstes signieren Sie die Anfrage mit dem Schlüssel, den Sie zuvor generiert haben:

openssl x509 -req -days 365 -in cert.csr -signkey cert.key -out cert.crt

Sie werden daraufhin nach dem Passwort gefragt, mit dem Sie den Schlüssel versehen haben:

Signature ok
[...]
Getting Private key
Enter pass phrase for cert.key:
ctest-System-Product-Name ssl #

An sich ist das Zertifikat nun fertig, Sie müssen jedoch einen weiteren Schritt tun, um es in Ihr Mailprogramm importieren zu können.  Diese akzeptieren Zertifikate nur im .p12 Format, weswegen Sie es erst konvertieren müssen. Tun Sie dies wie folgt (Ersetzen Sie Your Name mit dem Namen, den Ihr Zertifikat später erhält – vorzugsweise Ihrem richtigen Namen, damit Sie identifiziert werden können):

openssl pkcs12 -export -in cert.crt -inkey cert.key -name „Your Name“ -out cert.p12

Das Export-Passwort nach dem sie gefragt werden wird gebraucht, wenn Sie das Zertifikat importieren oder exportieren wollen:

Enter pass phrase for cert.key:
Enter Export Password:
Verifying - Enter Export Password:
ctest-System-Product-Name ssl #

Sie sollten nun vier Dateien in dem Verzeichnis haben, in dem Sie arbeiten. Überprüfen Sie dies, indem Sie dessen Inhalte auflisten:

ls -l

ctest-System-Product-Name ssl # ls -l
total 20
-rw-r--r-- 1 root root 2004 2011-11-28 12:52 cert.crt
-rw-r--r-- 1 root root 1752 2011-11-28 12:32 cert.csr
-rw-r--r-- 1 root root 3311 2011-11-28 12:31 cert.key
-rw-r--r-- 1 root root 4290 2011-11-28 12:53 cert.p12
ctest-System-Product-Name ssl #

Fehlt eine der Dateien, so haben Sie einen Schritt übersprungen oder irgendwo einen Fehler gemacht.

2.3 Alternativ: Eine Zertifikatsbehörde zum signieren Ihres Zertifikats erstellen

Diese Methode ist optional und Ihre Ausführung nicht nötig, wenn Sie bereits ein selbstsigniertes Zertifikat erstellt haben. Sie erstellt lediglich  eine Zertifikatsbehörde wie Thawte, welche dann statt Ihrer das Zertifikat signiert.

Um eine CA zu erstellen, müssen Sie zunächst einen dazugehörigen Schlüssel generieren:

openssl genrsa -des3 -out ca.key 4096

Generating RSA private key, 4096 bit long modulus
[...]
e is 65537 (0x10001)
Enter pass phrase for ca.key:
Verifying - Enter pass phrase for ca.key:
ctest-System-Product-Name ssl #

Erstellen Sie dann die CA unter Benutzung des generierten Schlüssels:

openssl req -new -x509 -days 365 -key ca.key -out ca.crt

Sie werden dann nach den Daten für die Felder der CA gefragt – ihr Common Name darf nicht der selbe sein, den Sie später im Zertifikat eintragen:

Enter pass phrase for ca.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:
Email Address []:
ctest-System-Product-Name ssl #

Die nachfolgenden Schritte sind ähnlich denen aus Kapitel 2.2. Sie erstellen einen Zertifikatsschlüssel

openssl genrsa -des3 -out cert.key 4096

und eine Zertifikatssignierungsanfrage (In das Common Name Feld gehört normalerweise der Servername; geben Sie hier jedoch keinen bekannten Servernamen wie smtp.web.de ein – vertrauenswürdige Server sind Ihrem Mailprogramm meist schon bekannt und es wird Ihr Zertifikat als Identitätsraub werten! Alles andere was Sie in dieses Feld eintragen sollte funktionieren. Stellen Sie sicher, dass Sie sich nicht bei Ihrer E-Mail-Adresse vertippt haben):

openssl req -new -key cert.key -out cert.csr

Nun signieren Sie das Zertifikat. Anstatt es jedoch selbst zu tun, benutzen Sie hierfür die erstellte CA:

openssl x509 -req -days 365 -in cert.csr -CA ca.crt
-CAkey ca.key -set_serial 00 -out cert.crt

Signature ok
subject=/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd
Getting CA Private Key
Enter pass phrase for ca.key:
ctest-System-Product-Name ssl #

An sich ist das Zertifikat nun fertig, Sie müssen jedoch einen weiteren Schritt tun, um es in Ihr Mailprogramm importieren zu können. Diese akzeptieren Zertifikate nur im .p12 Format, weswegen Sie es erst konvertieren müssen. Tun Sie dies wie folgt (Ersetzen Sie Your Name mit dem Namen, den Ihr Zertifikat später erhält – vorzugsweise Ihrem richtigen Namen, damit Sie identifiziert werden können):

openssl pkcs12 -export -in cert.crt -inkey cert.key -name „Your Name“ -out cert.p12

Das Export-Passwort nach dem sie gefragt werden wird gebraucht, wenn Sie das Zertifikat importieren oder exportieren wollen:

Enter pass phrase for cert.key:
Enter Export Password:
Verifying - Enter Export Password:
ctest-System-Product-Name ssl #

Sie sollten nun sechs Dateien in dem Verzeichnis haben, in dem Sie arbeiten. Überprüfen Sie dies, indem Sie dessen Inhalte auflisten:

ls -l

total 28
-rw-r--r-- 1 root root 2041 2011-11-28 13:44 ca.crt
-rw-r--r-- 1 root root 3311 2011-11-28 13:43 ca.key
-rw-r--r-- 1 root root 1793 2011-11-28 13:45 cert.crt
-rw-r--r-- 1 root root 1651 2011-11-28 13:44 cert.csr
-rw-r--r-- 1 root root 3311 2011-11-28 13:44 cert.key
-rw-r--r-- 1 root root 4122 2011-11-28 13:45 cert.p12
ctest-System-Product-Name ssl #

Fehlt eine der Dateien, so haben Sie einen Schritt übersprungen oder irgendwo einen Fehler gemacht.

3 Ein Zertifikat von einer vertrauenswürdigen Zertifikatsbehörde ausstellen lassen

Neben der Möglichkeit, SSL Zertifikate selbst zu erstellen, können Sie sich diese auch umsonst von einer vertrauenswürdigen Zertifikatsbehörde ausstellen lassen. Das Positive an dieser Option ist, dass auch das Zertifikat folgend ohne Sicherheitsausnahmen und manuelle Einstellungen als gültig und vertrauenswürdig gilt. Das Negative ist jedoch, dass Sie der Behörde zur Verifizierung Ihrer Identität eine Reihe persönlicher Daten aushändigen müssen. Sollten Sie sich trotzdem für diese Option entscheiden, so gibt es im Internet eine Reihe von Providern, die auf Ihren Seiten gratis SSL Zertifikate anbieten, wie zum Beispiel https://www.startssl.com/:

4 Zertifikate in ein Mailprogramm importieren

4.1 Thunderbird

Um Zertifikate in Thunderbird zu importieren, öffnen Sie den Menüpunkt Preferences (ich benutze Thunderbird 3):

Wählen Sie Advanced und öffnen den Certificates Reiter. Klicken Sie auf View Certificates:

4.1.1 Importieren eines selbstsignierten Zertifikates

Wählen Sie den Your Certificates Reiter aus und klicken auf Import:

Suchen Sie die .p12 Datei, welche sie erstellt haben und klicken auf Open:

Jedes Mal wenn Sie ein Zertifikat importieren, müssen Sie das Export-Passwort angeben, dass Sie beim Erstellen der .p12 Datei angegeben haben:

Wählen Sie als nächstes den Servers Reiter und klicken erneut auf Import:

Suchen Sie hier nach der .crt Datei, welche zu Ihrem Zertifikat gehört (haben Sie eine CA erstellt, so gibt es zwei Dateien mit dieser Endung):

Immernoch im selben Reiter, wählen Sie den gerade hinzugefügten Eintrag aus und klicken auf Edit:

Aktivieren Sie Trust the authenticity of this certificate und klicken auf Edit CA Trust:

Da Sie das Zertifikat in einem Mailprogramm benutzen wollen, wählen Sie This certificate can identify mail users. aus und klicken auf OK. Der Unterzeichner des Zertifikats (also Sie) wird dann in der Liste der CAs im Authorities Reiter angezeigt werden.

Der nächste Schritt bezieht sich darauf, wie Sie eine selbsterstellte CA importieren. Haben Sie diese Option nicht gewählt, so können Sie den nächsten Schritt überspringen.

4.1.2 Importieren einer selbsterstellten CA

Wählen Sie den Authorities Reiter und klicken auf Import:

Wählen Sie nun die zu ihrer CA gehörige .crt Datei aus und klicken auf Open:

Sie werden dann gefragt, wie weit Sie der CA vertrauen wollen:

Nachdem Sie auf OK geklickt haben, wird Ihre CA im Reiter aufgelistet sein.

4.1.3 Zuweisen des Zertifikates zu einem Mailkonto und Verschlüsseln einer Mail

Nun müssen Sie die Zertifikate Ihren Mailkontos zuweisen. Gehen Sie hierfür in den Menüpunkt Account Settings:

Wählen Sie aus dem Menü des Kontos, dass sie konfigurieren möchten den Punkt Security. Benutzen Sie dann den ersten Select… Button um nach dem passenden Zertifikat zu suchen:

Nachdem Sie das Zertifikat gefunden haben, das hoffentlich anders aussieht als meines, klicken Sie OK

Sie werden gefragt, ob Sie das selbe Zertifikat, dass Sie zum Signieren ausgewählt haben auch zum Ver- und Entschlüsseln benutzen wollen. Wählen Sie Yes, wenn Sie einen verschlüsselten Mailaustausch einrichten möchten:

Beim Schreiben einer Mail können Sie nun die Menüpunkte Encrypt This Message und Digitally Sign This Message auswählen:

Die Symbole für eine signierte und verschlüsselte E-Mail sehen wie folgt aus. Der versiegelte Brief steht für eine signierte Mail, während das Schloss bedeutet, dass die Nachricht verschlüsselt ist:

4.2 Evolution

Die Prozedur läuft für Evolution beinahe genauso für Thunderbird ab. Wählen Sie Edit > Preferences aus dem Menü:

4.2.1 Ein selbstsigniertes Zertifikat importieren

Wählen Sie die Certificates Sektion aus der linken Spalte, dort den Your Certificates Reiter und klicken Sie auf Import.

Suchen Sie danach das zu importierende Zertifikat. Sie werden nach dem Zertifikatsschlüssel gefragt:

Und danach nach dem Export-Passwort für die .p12 Datei.

Der Import von selbstsignierten Zertifikaten ist hiermit abgeschlossen. Der nächste Schritt wird nur benötigt, wenn Sie ein von einer selbst erstellten CA unterschriebenes Zertifikat importieren.

4.2.2 Ein von einer CA signiertes Zertifikat importieren

Im Preferences Fenster wählen Sie den Authorities Reiter und klicken auf Import.

Suchen Sie die zur CA gehörige .crt Datei und importieren Sie diese. Sie werden danach gefragt, wie weit Sie der unbekannten Zertifikatsbehörde vertrauen möchten – da Sie diese wahrscheinlich nur im Mailprogramm benutzen, wählen Sie Trust the CA to identify email users und klicken auf OK:

4.2.3 Zuweisen des Zertifikates zu einem Mailkonto und Verschlüsseln einer Mail

Bevor Sie mit Ihrem neuen Zertifikat Mails signieren und ver- und entschlüsseln können, müssen Sie dieses erst dem zugehörigen Konto zuweisen – wählen Sie hierfür Edit > Preferences, Mail Accounts, dort das Konto zu dem das Zertifikat gehört und klicken auf Edit:

Wählen Sie den Security Reiter und klicken auf den Select… Button neben den Signing certificate und Encryption certificate Feldern in der Secure MIME (S/MIME) Sektion:

Im erscheinenden Fenster wählen Sie das gewünschte Zertifikat aus dem Dropdownmenü aus und klicken auf OK:

Wenn Sie nun eine neue Mail erstellen können Sie die Punkte S/MIME Sign und S/MIME Encrypt aus dem Options Menü des Mailfensters auswählen:

Das Symbol für eine signierte Mail sieht wie folgt aus. Eine zusätzlicher Hinweis erscheint, wenn die Mail verschlüsselt ist:

5 Links

Das könnte dich auch interessieren …