S/MIME (安全/多用途互联网邮件扩展)
定义
S/MIME 是一种使用 X.509 证书和 CMS 格式对电子邮件进行端到端签名和加密的标准。
S/MIME(Secure/Multipurpose Internet Mail Extensions)用 X.509 证书给 MIME 格式的邮件加上数字签名和加密,当前消息规范是 S/MIME 4.0(RFC 8551)。发件人用自己的私钥签名,收件人可以验证邮件来源和是否被篡改;发件人用每个收件人的公钥加密,只有对应收件人能解密。S/MIME 证书带有 emailProtection 扩展密钥用途,邮箱地址写在 SAN 里。公共信任的 S/MIME 证书按 CA/浏览器论坛的《S/MIME 基线要求》签发,分为邮箱验证、组织验证、担保人验证和个人验证几种类型。
为什么重要
S/MIME 保护的是邮件本身,不依赖中途经过的邮件服务器,Outlook、Apple Mail、Thunderbird 都内置支持,常用于企业和政府机构的签名通知、机密邮件。加密前要先拿到对方的证书,最常见的做法是先互发一封签名邮件。与 TLS 证书不同,加密用的旧私钥在续期后也要保留,否则以前收到的加密邮件就再也打不开了。
例子
openssl cms -sign -in message.txt -signer alice.crt -inkey alice.key -out signed.eml
openssl cms -encrypt -aes256 -in message.txt -out encrypted.eml bob.crt
常见误区
- S/MIME 就是邮件服务器之间的 TLS。 STARTTLS 只保护服务器之间的每一跳,S/MIME 保护的是邮件内容本身,端到端有效。
- 加密后什么都看不到。 主题、发件人、收件人等邮件头通常不加密。
- 续期后旧私钥可以删掉。 必须保留,否则历史加密邮件无法解密。