Kann ich verschlüsselte E-Mails mit Mail und selbstsignierten Zertifikaten senden?

Ich möchte signierte und verschlüsselte E-Mails zwischen einem Mac mit Mail und einem anderen Mac mit Thunderbird senden können, indem ich an beiden Enden selbstsignierte Zertifikate verwende. Früher konnte ich das, aber im Laufe der Jahre ist es auf beiden Seiten schwieriger geworden. Damit das Thunderbird-Ende funktioniert, muss ich jetzt eine selbstsignierte Zertifizierungsstelle erstellen und diese dann verwenden, um ein E-Mail-Zertifikat zu erstellen. Aber ich kann die Verschlüsselung auf der Mail-Seite nicht zum Laufen bringen. (Ich glaube, Apple hat es in Mountain Lion kaputt gemacht.) In meinem Schlüsselbund auf der Mail-Seite habe ich die Zertifizierungsstelle von Thunderbird, die als vertrauenswürdig gekennzeichnet ist, und das von dieser Zertifizierungsstelle erstellte E-Mail-Zertifikat, das besagt: „Dieses Zertifikat ist gültig". Aber wenn ich eine E-Mail erstelle, die an den anderen Mac geht, ist die Verschlüsselungsschaltfläche abgeblendet.

Ich habe irgendwo gelesen, dass das Geheimnis darin besteht, beim Erstellen des Zertifikats die Erweiterung "Schlüsselverschlüsselung" hinzuzufügen, und das habe ich getan, aber es funktioniert immer noch nicht.

Antworten (2)

Ich kann nur den Mac Mail-Teil dieser Frage beantworten, da ich den Thunderbird-Teil nicht testen möchte.

Ich schreibe diesen Teil nur für die Leute, die mit asymmetrischer Verschlüsselung nicht vertraut sind:

Bei dieser Form der Verschlüsselung benötigen Sie zwei Schlüssel, einen privaten und einen öffentlichen. Ein Zertifikat in diesem Sinne ist nichts anderes als der öffentliche Schlüssel, aber es enthält mehr Informationen als nur einen Schlüssel, es sagt, wer Sie sind, Ihre Organisation usw. Das Private darf niemals verloren gehen und an andere weitergegeben werden. Wenn dies der Fall ist, müssen Sie von vorne beginnen und die Person, die es gestohlen hat, kann alles entschlüsseln, also bewahren Sie es sicher und passwortgeschützt auf. Üblicherweise werden Zertifikate von sogenannten Certificate Authorities signiert und verlangen meistens Geld für ihren Dienst. Aus diesem Grund erstellen manche Leute ihre eigene Zertifizierungsstelle und selbstsignierte Zertifikate, was billiger ist.

Die Funktionsweise der E-Mail-Verschlüsselung besteht darin, dass Sie jemandem Ihren öffentlichen Schlüssel (Zertifikat) senden, indem Sie Ihre E-Mail damit signieren. Sie können jede E-Mail signieren, da die Weitergabe Ihres öffentlichen Schlüssels keinen Schaden anrichtet. Dann hat diese andere Person Ihren öffentlichen Schlüssel und verschlüsselt mit diesem Schlüssel eine E-Mail an Sie. Von diesem Zeitpunkt an kann niemand außer der NSA mit einem möglichen Quantencomputer diese Nachricht bei angemessener Schlüssellänge in angemessener Zeit entschlüsseln. Oder einige Leute infiltrieren die eigentlichen Verschlüsselungsbibliotheken wie den HEARTBLEED (Heartbeat)-Bug, der möglicherweise beabsichtigt war, und wer weiß, wie viele dieser Hintertüren es noch gibt. Zertifikate haben in der Regel eine begrenzte Lebensdauer und müssen hin und wieder erneuert werden.

Also Dinge zum Mitnehmen: Sie benötigen einen öffentlichen und einen privaten Schlüssel und geben nur den öffentlichen weiter.

Folgendes habe ich getan:

  1. Erstellte eine Root-CA und eine Signing-CA (das brauchen Sie nicht, aber ich habe es getan) und ich habe dieses sehr gute Tutorial dafür verwendet: Multi-Level-CAs in http://pages.cs.wisc.edu/~ zmiller/ca-howto/

  2. Dann habe ich meine openssl.conf so geändert, dass Mac Mail es mir erlaubt, das Zertifikat auch für die E-Mail-Verschlüsselung zu verwenden.

    Das wichtige Bit ist, keyUsage und extKeyUsage zu haben

    [ v3_req ]
    
    # Extensions to add to a certificate request
    
    basicConstraints = CA:FALSE
    keyUsage = nonRepudiation, digitalSignature, keyEncipherment,       dataEncipherment
    extKeyUsage = emailProtection, Apple .Mac email signing, Apple .mac email encryption
    

    Für Leute, die Spezifikationen mögen, lesen Sie diese https://www.ietf.org/rfc/rfc2459 , aber Sie werden die MacOS-spezifischen Teile darin nicht finden.

  3. Erstellt den privaten Schlüssel und das Zertifikat:

    openssl req -newkey rsa:4096 -keyout <e-mail>.key -config openssl.cnf -out <e-mail>.req -days 3650
    
    openssl ca -config openssl.cnf -out <e-mail>.crt -infiles <e-mail>.req
    

    Sie könnten argumentieren, dass zehn Jahre als Zertifikatslebensdauer zu lang sind, aber ich wollte etwas haben, das jetzt funktioniert, und in 10 Jahren oder noch weniger wird diese Art der Verschlüsselung sowieso nicht funktionieren. Ich wollte die Zertifikate nicht ständig erneuern, da ich sie für meine ganze Familie erstellt habe.

    Wenn bei diesem Vorgang etwas schief geht, können Sie das Zertifikat widerrufen, indem Sie:

    openssl ca -config openssl.cnf -revoke <e-mail>.crt
    

    Man sollte auch crls erstellen, aber das habe ich auch nicht gemacht.

  4. Schlüssel in ein p12-Format konvertiert

    openssl pkcs12 -export -in <e-mail>.crt -inkey <e-mail>.key -out <e-mail>.p12
    
  5. p12 in den Schlüsselbund unter OS X 10.9.4 (13E28) importiert

  6. Als vertrauenswürdig markiert

  7. Zugehöriges Zertifikat mit E-Mail-Konto in den MacOS-E-Mail-Einstellungen unter Kontoinformationen im Feld TLS-Zertifikat. Senden Sie eine E-Mail an eine andere E-Mail-Adresse, die auch ein Zertifikat und einen Schlüssel hat, und signieren Sie die Nachricht mit meinem öffentlichen Schlüssel. Nun, MacOS Mail hat dies für mich erledigt.

  8. E-Mail erhalten und meine erste verschlüsselte E-Mail zurückgeschickt.

Was mir passiert ist, als ich das Verfahren mit meiner Frau ausprobiert habe, war, dass das Schlosssymbol in meiner Antwortmail auf die erste signierte Mail ausgegraut war und ich verwirrt war. Dadurch konnte ich keine Mails verschlüsseln. Der Grund war, dass ich die signierte Mail, die meine Frau an mich geschickt hatte, erhalten habe, aber ich habe diese Signatur nicht als vertrauenswürdig im MacOS-Schlüsselbund markiert, da alle Signaturen, die man erhält, auch dort landen. Nachdem ich es als vertrauenswürdig markiert und Mail neu gestartet hatte, funktionierte alles einwandfrei.

Vielleicht kann jemand oder sogar die fragende Person dieser Antwort den Thunderbird-Teil hinzufügen.

Ich denke, das eigentliche, was in Bezug auf die Frage fehlt, ist Folgendes: extKeyUsage = emailProtection, Apple .Mac-E-Mail-Signatur, Apple .mac-E-Mail-Verschlüsselung und möglicherweise der empfangenen Signatur zu vertrauen. Ich wollte nur so explizit sein, um einen Teil der Angst zu nehmen, die dieser Prozess verständlicherweise erzeugt. Die Verschlüsselungsunterstützung ist heutzutage immer noch schlecht und ich denke, die Leute sollten anfangen, Verschlüsselung zu verwenden und aufhören, sich darüber zu beschweren, dass Leute sie ausspionieren, aber ich verstehe, dass die Hürde für die Verschlüsselung immer noch zu hoch ist, niemand kann es ihnen wirklich verdenken.
Sie brauchen diese Erweiterungen nicht. Sie scheinen nichts zu beeinflussen. Apple Mail beschwerte sich immer wieder darüber, dass ich die von mir generierten Zertifikate nicht zur Verschlüsselung verwenden konnte. Ich denke, die kritischen Bits, die mir gefehlt haben, waren dataEncipherment in keyUsage und emailAddress=<foo> in der Betreffzeile. Habe sie zuvor nach altSubjectName verschoben.
Interessanterweise habe ich erfahren, dass Sie tatsächlich eine Schlüsselverschlüsselung anstelle einer Datenverschlüsselung benötigen, da S/MIME einen symmetrischen Schlüssel zur Datenverschlüsselung verwendet und diesen symmetrischen Schlüssel dann mit dem asymmetrischen Schlüssel aus dem Zertifikat verschlüsselt. Habe diese Erklärung hier gefunden .

Gibt es einen Grund, warum Sie diesen speziellen Ansatz ausprobieren?

Wenn Ihre eigentliche Frage ist, wie Sie signierte und verschlüsselte E-Mails senden, verwende ich GPG (über GPGTools). Es gibt ein Plug-in, das mit Thunderbird funktioniert, aber ich verwende Apples Mail.