从 MIME 创建 S/MIME?

Posted

技术标签:

【中文标题】从 MIME 创建 S/MIME?【英文标题】:Creating S/MIME from MIME? 【发布时间】:2011-09-07 15:48:41 【问题描述】:

我不完全理解,如果有一些文档或帮助将不胜感激:)

使用 php 我使用 ezcomponents Mail 对象创建了一个 MIME。但我不明白的是:

您是否通过使用openssl_pkcs7_sign 对原始 MIME 进行签名来创建 S/MIME 消息?还是您从头开始创建 S/MIME 并在完成后对其进行签名?

请耐心等待我尝试理解正确的做事方式。

编辑:找到这段代码可以更好地说明我的问题

<?
// Setup mail headers.
$headers = array("To" => "someone@nowhere.net",
     "From" => "noone@somewhere.net",
     "Subject" => "A signed and encrypted message.");

// Sign the message first
openssl_pkcs7_sign("msg.txt","signed.txt",
     "signing_cert.pem",array("private_key.pem",
     "password"),array());

// Get the public key certificate.
$pubkey = file_get_contents("cert.pem");

//encrypt the message, now put in the headers.
openssl_pkcs7_encrypt("signed.txt", "enc.txt",
     $pubkey,$headers,0,1);

$data = file_get_contents("enc.txt");

// separate header and body, to use with mail function
//  unfortunate but required, else we have two sets of headers
//  and the email client doesn't decode the attachment
$parts = explode("\n\n", $data, 2);

// send mail (headers in the Headers parameter will override those
//  generated for the To & Subject parameters)
mail($mail, $subject, $parts[1], $parts[0]);
?>

【问题讨论】:

【参考方案1】:

为自己省去很多麻烦,并通过专为工作设计的 MTA 过滤器路由您需要签名的邮件,例如Gnu Anubis(SMTP 代理)或实现 milter

【讨论】:

问题是我想让我的用户以编程方式创建他们自己的签名并在我的应用程序中选择一个选项来发送是否安全。 “Anubis 4.1 版尚未提供对 S/MIME 加密或签名的内置支持” 我的朋友不会这样。由于存在配置小精灵,我不想一直使用外部东西。我宁愿自己使用 PHP PHP 也没有 - 不同之处在于 Anubis 是专门为修改电子邮件内容而设计的 - 当然,如果你是一个比编写 anubis 的人更优秀的程序员,那么你就没有什么可做的了担心 - 但如果是这样,那你为什么要问我们如何实现呢? 呵呵,因为我不是一个优秀的程序员,所以我才问。 你能告诉我在这种情况下如何实现 Anubis 吗?请?这是最好的方法+1

以上是关于从 MIME 创建 S/MIME?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PowerShell 中使用 S/MIME 对消息进行签名和加密

从 MimeBodyPart javax.mail.message 中删除两个连字符

我可以将 S/MIME 作为多部分/混合消息的一部分吗?

使用 S/MIME (PHP) 发送带有附件的电子邮件

没有 JCE 的 Java 中的 S/MIME

电子邮件安全:TLS 和 S/MIME