最近、Outlookから送信された暗号化されたメッセージを受信しましたが、復号化できません。 Thunderbirdは、代わりに次のエラーメッセージを出力しています。
Thunderbirdはこのメッセージを復号化できません
送信者は、デジタル証明書の1つを使用してこのメッセージを暗号化しましたが、Thunderbirdはこの証明書と対応する秘密鍵を見つけることができませんでした。可能な解決策:
- スマートカードをお持ちの場合は、今すぐ挿入してください。
- 新しいマシンを使用している場合、または新しいThunderbirdプロファイルを使用している場合は、バックアップから証明書と秘密鍵を復元する必要があります。証明書のバックアップは通常、「。p12」で終わります。
また、他のメールクライアント(最近のバージョンのOutlook!を含む)がメッセージの復号化に失敗しました。メールは非常に重要であり、送信者にメールの再送信を依頼したくないので、どうすればよいですか?
これは Microsoft Outlook 2010の既知の問題 ですが、修正が提供されています-送信者に適用する必要があることを通知することをお勧めします。
X.509証明書にはいくつかの属性が添付されており、そのうちのいくつかは証明書の識別に使用できます。そのような方法の1つは、証明書発行者と一緒にシリアル番号を使用することです(一緒に、それらは一意の識別子を形成する必要があります)。 S/MIME暗号化メッセージの場合、これはissuerAndSerialNumber
と呼ばれます。別の方法として、標準化された subjectKeyIdentifier
もあります。これは、何らかの形式で公開鍵から派生する必要がありますが、具体的には定義されていません。
Outlook 2010(SP1より前)はsubjectKeyIdentifier
を使用し、そのような識別子が提供されていない場合は1つ作成します(上記のリンクされたナレッジベースの記事から、私が追加した強調表示)。
暗号化メッセージ構文(CMS)は、RFC 5652に文書化されています。この仕様では、subjectKeyIdentifierまたはissuerAndSerialNumberのいずれかをSignerIdentifierとして使用できます。 Outlook 2010のリリース(RTM)バージョンはsubjectKeyIdentifierをSignerIdentifierとして使用しますが、以前のバージョンはissuerAndSerialNumberを使用します。 subjectKeyIdentifier拡張子が証明書で定義されていない場合、Outlook 2010 RTMが生成します。一部の電子メールクライアントまたはサードパーティのオペレーティングシステムは、Outlookを使用できません-生成されたsubjectKeyIdentifier。これにより、受信者はメッセージを復号化して読み取ることができなくなります。
つまり、Microsoft Outlook 2010 pre-SP1は、証明書識別子を使用します非常に可能性が高い他のメールアプリケーションでは理解されません。私は実際にそのようなメッセージを解読するためにOutlookの最新バージョンを使用することに失敗しました!
これは簡単なことではなく、コマンドラインにドロップする必要があります。これは、ほぼすべてのオペレーティングシステム(Linux、Windows、macOS、すべてのBSD)で機能するはずです。必ず、OpenSSLがインストールされていることを確認してください。 OpenSSLを使用すると、壊れたsubjectKeyIdentifier
を無視して、特定のキーを使用して復号化を強制できます。
.eml
ファイルとして保存します)。以降のすべての手順で、mail.eml
という名前を付けました。.p12
の別のファイルが作成されます。 certificate.p12
と名付けました。cd
コマンドを使用してフォルダーに移動します。openssl pkcs12 -in certificate.p12
-out privatekey.pem-nodes`を実行します。 Thunderbirdに入力したパスフレーズの入力を求められます。次に、エクスポートされたキーを使用して、メッセージを実際に復号化します。
openssl cms -decrypt -in mail.eml -inkey privatekey.pem -out decrypted.txt
復号化されたメッセージはdecrypted.txt
ファイルに保存されます。
メッセージはquoted-printable
としてエンコードされる可能性があります。 Gr=FC=DFe
のような奇妙な文字シーケンスがあり、ヘッダーContent-Transfer-Encoding: quoted-printable
が含まれている場合は、メッセージをプレーンテキストに変換します(Perlが必要で、おそらくバージョン5に制限されています。MIME::QuotedPrint
モジュール) :
Perl -MMIME::QuotedPrint -pe '$_=MIME::QuotedPrint::decode($_);' <decrypted.txt >decoded.txt
decoded.txt
ファイルには、最終的に復号化されたメッセージが含まれます。それでも特殊文字のエンコードが間違っていると思われる場合は、選択した変換ツールを使用するか、Firefoxまたは別のブラウザーでファイルを開いてみてください。通常、混乱したエンコードを修正するのに役立ちます。
暗号化されていない新しい.eml
メッセージをまとめるには、すべてのContent-*
ヘッダーを削除し、この場所で復号化されたメッセージからContent-*
ヘッダーを移動する必要があります。詳細はこのチュートリアルの範囲外です。さまざまなエンコーディングが多すぎて、適切な支援を提供できません。