# S/MIME（安全/多用途互联网邮件扩展）是什么？

> S/MIME 是一种使用 X.509 证书和 CMS 格式对电子邮件进行端到端签名和加密的标准。

Source: https://ssl.sh/zh/glossary/smime/
Last updated: 2026-11-10

S/MIME（Secure/Multipurpose Internet Mail Extensions）用 X.509 证书给 MIME 格式的邮件加上数字签名和加密，当前消息规范是 S/MIME 4.0（RFC 8551）。发件人用自己的[私钥](https://ssl.sh/zh/glossary/private-key/)签名，收件人可以验证邮件来源和是否被篡改；发件人用每个收件人的[公钥](https://ssl.sh/zh/glossary/public-key/)加密，只有对应收件人能解密。S/MIME 证书带有 emailProtection 扩展密钥用途，邮箱地址写在 SAN 里。公共信任的 S/MIME 证书按 CA/浏览器论坛的《S/MIME 基线要求》签发，分为邮箱验证、组织验证、担保人验证和个人验证几种类型。

## 为什么重要
S/MIME 保护的是邮件本身，不依赖中途经过的邮件服务器，Outlook、Apple Mail、Thunderbird 都内置支持，常用于企业和政府机构的签名通知、机密邮件。加密前要先拿到对方的证书，最常见的做法是先互发一封签名邮件。与 TLS 证书不同，加密用的旧私钥在续期后也要保留，否则以前收到的加密邮件就再也打不开了。

## 例子
```bash
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](https://ssl.sh/zh/glossary/starttls/) 只保护服务器之间的每一跳，S/MIME 保护的是邮件内容本身，端到端有效。
- **加密后什么都看不到。** 主题、发件人、收件人等邮件头通常不加密。
- **续期后旧私钥可以删掉。** 必须保留，否则历史加密邮件无法解密。

## 相关术语

- [X.509](https://ssl.sh/zh/glossary/x509/): X.509 是 ITU-T 制定的公钥证书标准格式，其互联网配置规范 RFC 5280 规定了 TLS 所用证书的结构和验证方法。
- [公钥](https://ssl.sh/zh/glossary/public-key/): 公钥是非对称密钥对中可以公开的一半，写在证书里，供他人验证由对应私钥生成的签名。
- [私钥](https://ssl.sh/zh/glossary/private-key/): 私钥是非对称密钥对中保密的那一半，TLS 服务器用它证明自己拥有证书里的那把公钥。
- [EKU](https://ssl.sh/zh/glossary/extended-key-usage/): EKU 即扩展密钥用途，是列出证书可用于哪些目的（如 serverAuth 服务器认证、clientAuth 客户端认证、代码签名）的 X.509 扩展。
- [PKCS#7](https://ssl.sh/zh/glossary/pkcs7/): PKCS#7 是一种用于签名和加密数据的格式，在 .p7b 或 .p7c 文件中常用来打包一组证书，不含私钥。
- [STARTTLS](https://ssl.sh/zh/glossary/starttls/): STARTTLS 是一条协议命令，用于把 SMTP、IMAP、POP3 等协议中已建立的明文连接，在同一端口上升级为 TLS 加密连接。
- [数字签名](https://ssl.sh/zh/glossary/digital-signature/): 数字签名是用私钥对消息计算出的一个值，任何持有对应公钥的人都能验证它，从而确认消息来源和内容未被篡改。
