View a markdown version of this page

在 Amazon SES S/MIME 中使用对电子邮件进行身份验证 - Amazon Simple Email Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Amazon SES S/MIME 中使用对电子邮件进行身份验证

Secure/Multipurpose Internet 邮件扩展 (S/MIME) 是一种使用基于证书的数字签名的标准。它证明了消息是由发件人地址的持有人发送的,并且其内容在传输过程中没有发生变化。有关 S/MIME消息格式的更多信息,请参阅 RFC 编辑器网站上的 RFC 8551: S/MIME 消息规范。

S/MIME 签名证明了单个发件人级别的消息真实性和完整性。收件人可以确信消息内容未被篡改。

使用 Amazon SES,您可以自动应用 S/MIME 签名,而无需在提交消息之前对其进行签名。您可以在证书管理器 (ACM) 中管理 AWS 证书。亚马逊 SES 是与 ACM 集成的服务之一。有关与 ACM 集成的服务的更多信息,请参阅与 ACM 集成的服务。

S/MIME 还有 DKIM

S/MIME 和 DKIM 在不同的层面上运作,互为补充。DKIM 证明发送域使用在 DNS 中发布的密钥对消息进行了授权。 S/MIME 使用证书向证书颁发机构申明信任链。这证明了特定的电子邮件地址持有者发送了消息,并且内容完好无损。 S/MIME 不能取代 DKIM。

了解 S/MIME 签名

当您通过启用了签名的配置集发送出站消息时,Amazon SES 会对其进行 S/MIME 签名。解析后的电子邮件身份必须具有ACTIVE发件人地址的证书。Amazon SES 在发送时在服务器端对消息进行签名。

亚马逊 SES 使用 RFC 编辑器网站上的 RFC 1847 中定义的multipart/signed格式(明确签名)生成分离签名。邮件客户端不支持的收件人仍可读取原始邮件 S/MIME。亚马逊 SES 将签名内容作为第一个 MIME 部分发送。它将签名作为媒体类型application/pkcs7-signature(通常命名smime.p7s)的第二部分单独携带。Amazon SES 将您的签名证书及其证书链嵌入到签名(加密消息语法 (CMS) SignedData 对象)中。然后,收件人可以建立返回签发证书颁发机构的信任链,并验证消息的完整性和来源。

签名消息使用标准 S/MIME 标头。其中包括一个protocol参数为的Content-Type: multipart/signed标头"application/pkcs7-signature"和一个命名摘要算法的micalg参数(例如,sha-256)。以下示例显示了签名消息的顶级 Content-Type 标题:

Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="----=_SmimeBoundary"

S/MIME 证书注意事项

要使证书可用于 S/MIME 登录 Amazon SES,它必须满足以下所有要求:

  • 证书必须位于您发送电子邮件的同一 AWS 地区的 ACM 中。

  • 必须验证电子邮件身份。可以接受域名验证(TXT 记录)或电子邮件地址验证。

  • 证书的使用者备用名称 (SAN) 必须包含与发件人地址相匹配的 RFC822Name 电子邮件地址。对于域名身份,这意味着该域名下的地址或子域名。对于电子邮件地址身份,这意味着完全匹配。

  • 证书密钥算法必须使用以下任一算法:RSA 2048、RSA 3072、RSA 4096、EC P-256、EC 或 EC P-521 (根据 RFC P-384 编辑器网站上的 RFC 85 50)。

  • 证书当前必须有效(未过期)。

证书颁发机构信任要求

收件人的邮件客户端必须信任颁发您证书的证书颁发机构 (CA) 才能验证签名。默认情况下,大多数邮件客户端和 ISP 信任来自公共 CA 的证书。如果您使用私有 CA,则收件人必须有权访问并信任您的根 CA。默认情况下,互联网服务提供商和邮件客户端不信任私有 CA。

有关证书标准的更多信息,请参阅 RFC 编辑器网站上的 RFC 5280: X.509 证书和 CRL 配置文件和 RFC 8550: S/MIME 证书处理。