openssl SMIME 和多部分消息

问题描述

我需要从 bash 发送带有二进制附件的加密电子邮件。我已经阅读了 RFC、openssl 文档以及 SF 中的一些其他帖子,但无济于事。

目前我理解的流程是这样的:

  1. 创建 MIME 消息
  2. 使用 openssl smime 对其进行加密,从而为信封生成额外的标头。这应该用我自己的私钥签名,但用收件人的公钥加密。
  3. 将此输出通过管道发送到 sendmail
  4. 接收方应该能够在 Outlook 中解密整个内容。

但是我看到的是一些乱码。如果有人能在我搞砸的地方发光,我会很感激。

以下是具体细节:

1. MIME 消息

From: <FROM>
To: <TO>
Subject: <SUBJECT>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="<BOUNDARY>"

--<BOUNDARY>
Content-Type: text/plain; charset=utf-8

<TEXT>

--<BOUNDARY>
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename= "<FILENAME>"

<BASE64_DATA>

--<BOUNDARY>

2.签名和加密:

SIGNED=$(openssl smime -sign -in mime.txt -signer MyPublic.cer -inkey MyPrivate.key)
ENCRYPTED=$(openssl smime -encrypt -subject "Work damn you" RecipientPublic.cer <<< $SIGNED)

3.发送

echo "$ENCRYPTED" | sendmail [email protected]

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)