Wie entschlüsseln Sie eine defekte S / MIME-Nachricht, die von Outlook gesendet wird?

3186
Jens Erat

Vor kurzem erhielt ich eine verschlüsselte Nachricht, die von Outlook gesendet wurde und die ich nicht entschlüsseln kann. Thunderbird druckt stattdessen folgende Fehlermeldung:

Thunderbird kann diese Nachricht nicht entschlüsseln

Der Absender hat diese Nachricht mit einem Ihrer digitalen Zertifikate an Sie verschlüsselt. Thunderbird konnte dieses Zertifikat und den entsprechenden privaten Schlüssel jedoch nicht finden. Mögliche Lösungen:

  • Wenn Sie eine Smartcard haben, legen Sie sie jetzt ein.
  • Wenn Sie eine neue Maschine oder ein neues Thunderbird-Profil verwenden, müssen Sie Ihr Zertifikat und den privaten Schlüssel aus einer Sicherung wiederherstellen. Zertifikatsicherungen enden normalerweise mit ".p12".

Auch andere E-Mail-Clients (einschließlich einer aktuellen Version von Outlook!) Konnten die Nachricht nicht entschlüsseln. Da die Mail sehr wichtig ist und ich nicht wirklich den Absender bitten möchte, die Mail erneut zu senden, was kann ich tun?

7

1 Antwort auf die Frage

15
Jens Erat

Die Angelegenheit

Dies ist ein bekanntes Problem bei Microsoft Outlook 2010, es wird jedoch ein Fix bereitgestellt. Möglicherweise möchten Sie den Absender darüber informieren, dass er es anwenden soll.

X.509-Zertifikate weisen mehrere Attribute auf, von denen einige zur Identifizierung von Zertifikaten verwendet werden können. Eine solche Möglichkeit besteht darin, die Seriennummer zusammen mit dem Zertifikataussteller zu verwenden (zusammen müssen sie eine eindeutige Kennung bilden). Bei S / MIME-verschlüsselten Nachrichten wird dies aufgerufen issuerAndSerialNumber. Eine Alternative ist die auch standardisierte subjectKeyIdentifier, die in irgendeiner Form "aus dem öffentlichen Schlüssel" abgeleitet werden soll, aber nicht spezifisch definiert wird.

Outlook 2010 (vor SP1) verwendet die Option subjectKeyIdentifierund erstellt eine, wenn keine solche Kennung angegeben wird (aus dem oben verlinkten Knowledge Base-Artikel, von mir hinzugefügte Hervorhebung):

Die Cryptographic Message Syntax (CMS) ist in RFC 5652 dokumentiert. Diese Spezifikation ermöglicht die Verwendung des subjectKeyIdentifier oder issuerAndSerialNumber als SignerIdentifier. Die Release (RTM) -Version von Outlook 2010 verwendet subjectKeyIdentifier als SignerIdentifier, während frühere Versionen issuerAndSerialNumber verwenden. Wenn die Erweiterung subjectKeyIdentifier nicht im Zertifikat definiert ist, generiert Outlook 2010 RTM eine Erweiterung. Einige E-Mail-Clients oder Betriebssysteme von Drittanbietern können den von Outlook generierten subjectKeyIdentifier nicht verwenden. Dies führt dazu, dass der Empfänger die Nachricht nicht entschlüsseln und lesen kann.

Mit anderen Worten verwendet Microsoft Outlook 2010 vor SP1 eine Zertifikats-ID, die von keiner anderen E-Mail-Anwendung wahrscheinlich verstanden wird. Es ist mir tatsächlich nicht gelungen, eine aktuelle Version von Outlook zum Entschlüsseln einer solchen Nachricht zu verwenden!

So entschlüsseln Sie die Nachricht trotzdem

Dies wird nicht einfach sein und bedeutet, dass Sie zur Befehlszeile wechseln. Dies sollte auf fast allen Betriebssystemen (Linux, Windows, Mac OS, BSD) funktionieren. Stellen Sie sicher, dass OpenSSL installiert ist. Mit OpenSSL können wir die Entschlüsselung mithilfe eines bestimmten Schlüssels erzwingen und den fehlerhaften Schlüssel ignorieren subjectKeyIdentifier.

  1. Speichern Sie die Nachricht in einem Ordner (Thunderbird speichert sie als .emlDatei). Ich habe es mail.emlin allen weiteren Schritten benannt.
  2. Exportieren Sie den privaten Schlüssel (öffnen Sie die Einstellungen, Erweitert, Zertifikate, Zertifikate anzeigen, wählen Sie das entsprechende Zertifikat aus, Sichern, wählen Sie denselben Ordner aus, der für die Nachricht verwendet wird). Thunderbird fragt nach einer Passphrase. Sie sollten jetzt eine andere Datei mit der .p12Erweiterung haben. Ich habe es benannt certificate.p12.
  3. Öffnen Sie ein Terminal. Alle weiteren Schritte werden in der Befehlszeile ausgeführt.
  4. Navigieren Sie mit dem cdBefehl zu dem Ordner .
  5. Zum Entschlüsseln der Nachricht benötigen wir den privaten Schlüssel im PEM-Format. Um den Schlüssel zu konvertieren, führen Sie openssl pkcs12 -in certificate.p12-out privatekey.pem -nodes` aus. Sie werden nach der Passphrase gefragt, die Sie in Thunderbird eingegeben haben.
  6. Verwenden Sie nun den exportierten Schlüssel, um die Nachricht tatsächlich zu entschlüsseln:

    openssl cms -decrypt -in mail.eml -inkey privatekey.pem -out decrypted.txt 

    Die entschlüsselte Nachricht wird in der decrypted.txtDatei gespeichert .

Die Nachricht wird wahrscheinlich als verschlüsselt quoted-printable. Wenn Sie auf merkwürdige Zeichenfolgen stoßen, in denen Gr=FC=DFeein Header Content-Transfer-Encoding: quoted-printableenthalten ist, konvertieren Sie die Nachricht in Klartext (Sie benötigen Perl, wahrscheinlich auf Version 5 beschränkt, und das MIME::QuotedPrintModul):

perl -MMIME::QuotedPrint -pe '$_=MIME::QuotedPrint::decode($_);' <decrypted.txt >decoded.txt 

Die decoded.txtDatei enthält schließlich die entschlüsselte Nachricht. Wenn die Kodierung von Sonderzeichen immer noch falsch erscheint, verwenden Sie die Konvertierungswerkzeuge Ihrer Wahl oder versuchen Sie einfach, die Datei in Firefox oder einem anderen Browser zu öffnen. In der Regel sind sie eine gute Arbeit beim Korrigieren der fehlerhaften Kodierung.

Wenn Sie eine neue, unverschlüsselte .emlNachricht zusammenstellen, müssen Sie alle Content-*Header entfernen und die Content-*Header aus der entschlüsselten Nachricht an dieser Stelle verschieben. Weitere Details sind in diesem Tutorial nicht enthalten. Es gibt zu viele verschiedene Kodierungen, um eine angemessene Unterstützung zu bieten.

Müssen Sie die E-Mail-Header aus der E-Mail entfernen, bevor Sie die Dekodierung versuchen? Wenn nein, warum nicht? (Unterstützt `openssl` das .eml-Format?) Oh, und die Debian-Distribution ist entweder" Debian GNU / Linux "oder das kürzere" Debian ", aber niemals nur" Debian Linux ". wizzwizz4 vor 8 Jahren 1
Der Befehl `openssl cms` verarbeitet MIME-Nachrichten. Von `man cms`: _" Der Befehl cms verarbeitet S / MIME v3.1-Mails. Er kann S / MIME-Nachrichten verschlüsseln, entschlüsseln, signieren und verifizieren, komprimieren und dekomprimieren. "_ Das gesamte Debian-Zeug wurde ohnehin irrelevant, a frühere Version erforderte "munpack", was nicht für alle Distributionen zu verpacken scheint. Jens Erat vor 8 Jahren 0