是否可以使用普通的SSL域证书对所有外发邮件进行签名和加密?

Is it possible to sign and encrypt all outgoing mails with a normal SSL Domain certificate?

提问人:th3_sh0w3r 提问时间:10/26/2023 更新时间:10/26/2023 访问量:40

问:

我正在通过SMTP邮件服务器使用PHP发送邮件。我有一个 SMIME 证书,用于发送所有这些邮件(有时是签名和加密的)。这非常有效。

现在我想购买一个(普通不是SMIME)SSL域证书(针对整个域),是否可以将其用于我的网站和这些邮件的签名/加密,或者我是否需要SMIME证书用于邮件?

php 电子邮件 ssl phpmailer smime

评论

1赞 President James K. Polk 10/26/2023
我不知道是否有商业证书颁发机构会签署这样的证书,但你为什么要一个?从安全角度来看,将相同的密钥用于不同的目的通常是一个坏主意。
0赞 th3_sh0w3r 10/26/2023
@PresidentJamesK.波尔克,你还能怎么做?我只想认证来自该域的所有邮件。这在某种程度上可能吗?
0赞 mitchelangelo 10/26/2023
当我这样做时,我安装了 opendkim,生成了一个密钥对,然后将该程序作为服务在服务器上运行,并让它使用特定域的私钥标记所有传出邮件,您还需要将公钥添加到域记录中,以便其他人可以验证每封电子邮件中的签名。然后,当您发送电子邮件时,它会显示“由 domain.com 签名”,最初很难设置。您不能使用 SSL 证书,您必须生成密钥对。
0赞 th3_sh0w3r 10/26/2023
@mitchelangelo 我明白了,但我不明白你的最后一句话。我不能使用SSL证书,但我有一个带有公钥和私钥对的SSL证书?
0赞 Synchro 10/26/2023
证书几乎相同,但验证过程必然不同。证书需要为电子邮件使用设置适当的用法字段,而典型的 DV 证书不会有这些字段,尽管它们在加密上是相同的。Let's encrypt 过去曾被要求这样做,但显然不要认为这是值得的。

答:

0赞 not2savvy 10/26/2023 #1

由于多种原因,这是行不通的。

首先,虽然从技术上讲可以使用SSL证书(或者更确切地说是其私钥)来签署或加密电子邮件,但邮件客户端不会这样做,因为它要求证书已颁发给电子邮件使用和发件人的电子邮件地址。

其次,收件人也会遇到同样的问题:他们的软件不会接受这样的签名作为有效签名。

第三,为了加密电子邮件,您需要收件人的公钥。你自己的证书在这里对你没有帮助。

您可能想研究 DKIM 以在服务器级别签署传出电子邮件,但从您的问题来看,我不清楚这是否对您有所帮助。

评论

0赞 Synchro 10/26/2023
这大多是正确的,但许多常见的电子邮件客户端都内置了 S/MIME 支持作为标准,例如 macOS 和 iOS 上的 Apple 邮件。发现收件人公钥通常也很容易 - 您只需要有人向您发送签名(但未加密)的消息,您就拥有了所需的一切。
0赞 th3_sh0w3r 10/26/2023
@not2savvy 好的,我明白了。有没有另一种方法可以对域的所有电子邮件进行签名(没有DKIM)?