惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
CERT Recently Published Vulnerability Notes
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
WordPress大学
WordPress大学
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
V
Visual Studio Blog
Stack Overflow Blog
Stack Overflow Blog
aimingoo的专栏
aimingoo的专栏
C
Check Point Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
T
Tor Project blog
P
Proofpoint News Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Latest news
Latest news
L
LINUX DO - 热门话题
罗磊的独立博客
T
Tenable Blog
The Hacker News
The Hacker News
美团技术团队
N
Netflix TechBlog - Medium
V
Vulnerabilities – Threatpost
阮一峰的网络日志
阮一峰的网络日志
Last Week in AI
Last Week in AI
博客园 - 司徒正美
Jina AI
Jina AI
Cyberwarzone
Cyberwarzone
云风的 BLOG
云风的 BLOG
S
Secure Thoughts
Cloudbric
Cloudbric
S
Security @ Cisco Blogs
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Microsoft Security Blog
Microsoft Security Blog
Spread Privacy
Spread Privacy
U
Unit 42
雷峰网
雷峰网
C
CXSECURITY Database RSS Feed - CXSecurity.com
Webroot Blog
Webroot Blog
爱范儿
爱范儿
博客园 - 【当耐特】
Know Your Adversary
Know Your Adversary
P
Privacy International News Feed
P
Palo Alto Networks Blog
Google Online Security Blog
Google Online Security Blog
The Last Watchdog
The Last Watchdog
博客园 - 聂微东
Help Net Security
Help Net Security
Hacker News: Ask HN
Hacker News: Ask HN
F
Full Disclosure
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
S
Security Affairs
Project Zero
Project Zero

Liups233の小站

YubiKey OpenPGP 智能卡使用指南 - Liups233の小站 通过 WKD / OPENPGPKEY DNS 记录部署 GPG 公钥 - Liups233の小站 OpenLiteSpeed 安装与建站配置 详细教程 - Liups233 使用 DNSCrypt-Proxy 为 Linux 配置加密 DNS - Liups233 WordPress 7.0 编辑器改回无衬线字体 - Liups233の小站 Redis 数据库权限与 Unix Socket 配置 - Liups233の小站 Cloudflare 设置 mTLS 验证来源拉取 - Liups233の小站 Docker 自建 RustDesk 远程和 API 服务 - Liups233の小站 ChatGPT Go 印度区免费试用白嫖 1 年 - Liups233の小站 为 WordPress 外发邮件添加 S/MIME 签名 - Liups233の小站 网站域名变更迁移教程/记录 - Liups233の小站 将动漫视频刻录为视频光盘-蓝光/AVCHD DVD - Liups233の小站 百乐 CUSTOM 912 钢笔使用体验 - Liups233の小站 使用 Cloudflare mTLS 用户端凭证保护博客登入页面 - Liups233の小站 Kobo 手动安装 NickelMenu 和 KOReader - Liups233の小站 Kobo 阅读器字典缺字解决 - Liups233の小站 iCloud+ 域名邮箱的注册和使用 - Liups233の小站 9 美元一年的通配符 SSL 证书 - Liups233の小站 宝塔面板 Nginx 启用 Brotli 和 Pagespeed - Liups233の小站 拷贝 DVD/Blu-ray 光盘并使用 MeGUI 压制 - Liups233の小站 Spotify 相较 Apple Music 的优点 - Liups233の小站 欧卡/美卡自定义手排挡位布局 - Liups233の小站 内地居民到港开户汇丰和中银香港全过程 - Liups233の小站 给光驱刷入 LibreDrive 固件解锁区域和加密限制 - Liups233の小站 个人博客适用的 Cloudflare 防火墙和缓存规则 - Liups233の小站 为Kobo阅读器添加Google Drive和Dropbox功能 - Liups233の小站 百乐 PILOT Capless Fermo 钢笔评测 - Liups233の小站 业余无线电 B 类考试笔记 - Liups233の小站 黑白阅读器的绝唱?Kobo Clara BW 简单评测 - Liups233の小站 八重洲 WIRES-X 网络注册与使用教程 - Liups233の小站 异世的同路人 — 恋语 Juliamo 游戏简评 - Liups233の小站 欢迎加入我的 FreeDMR 服务器 - Liups233の小站 低至 6 港币一年的 Club SIM eSIM 保号卡 - Liups233の小站 H310/H710(P)/H810 阵列卡刷写为直通模式 - Liups233の小站
使用 S/MIME 证书签名并加密电子邮件 - Liups233の小站
Liups233 · 2025-10-06 · via Liups233の小站

前言

之前在研究 GPG 加密,但发现几乎没有邮件客户端支持,都需要安装第三方软件;而 S/MIME 也是一种邮件签名加密的协议,相反就有很多系统和软件都自带这个功能。这篇教程会教你如何申请 S/MIME 证书,添加到相应的电子邮件软件中,对邮件进行签名和加密。

目录

S/MIME 对比 GPG

两者都使用公私钥进行签名加密(非对称),但在信任方式上有根本区别:

  • S/MIME 类似 SSL 证书,使用分级、树状的信任链,需要从可信的证书颁发机构(CA)获取证书。每个人对 CA 都默认信任。
  • GPG 使用相互信任,即用户之间相互信任,没有一个集中的机构来颁发证书,比较「去中心化」。

我更喜欢在电子邮件中使用 S/MIME,其优点如下:

  • 广泛的软件支持,包括 Outlook、ThunderBird、Apple 邮件在内的许多软件都原生支持 S/MIME 证书,兼容性更好。
  • 中心化的信任可以减少麻烦,不用像 GPG 一样确认指纹、设置信任度等。

但是,S/MIME 相比 GPG 也有缺点:

  • 有效期短,免费的一般就一年。
  • 由商业公司签发,基本都要 money 😢,免费的也有诸多限制。
  • S/MIME 基本只能在电子邮件中使用,而 GPG 还可以延伸作为文件的签名、加密方法,甚至还能用于 SSH 登入,更加自由。
  • 如果 CA 发生问题,那整个信任链就会崩塌。

如果你想,似乎可以将 GPG 和 S/MIME 结合使用,例如使用可信的 S/MIME 签名,再将带有签名的明文用一次性的 GPG 密钥加密。每次发送信息前都重新生成新的 GPG 密钥,并在交换公钥的过程中使用 S/MIME 签名。

免费的 Actalis(第一年免费,较不安全)

我很不情愿地推荐你在 Actalis 上申请证书。推荐是因为我只找到 Actalis 可以申请第一年免费 S/MIME 证书(续费 6 欧元);不情愿是因为它不允许你通过上传 CSR 的方式申请,而是在它自己的服务器上生成私钥。而由于一旦拥有私钥就能签名,有了签名你的信息就具有不可否认性,所以如果它想做恶,后果可想而知。在 Actalis 上申请免费一年的用于测试是没问题的。

打开〈Actalis 官网〉,翻到下面就可以申请第一年免费的 Mailbox Validated 证书,点击 PROCEED 添加到购物车,然后进行购买。需要注册一个 Actalis 账号,注册邮箱就用需要申请证书的邮箱即可。

Actalis Mailbox Validated 证书
Actalis Mailbox Validated 证书

申请后,稍后会往你邮箱中发确认申请的邮件,邮件上半是意大利语,下半是英语,点击英语部分的 Confirm email 就行。确认后,稍等 10 分钟,会往你邮箱中发证书私钥的密码。再等 10 分钟,刷新 Actalis 后台页面,就可以下载 p12 格式的证书文件了。

在后台下载证书文件
在后台下载证书文件

然后使用以下命令从 p12 文件中导出公钥, 需要输入私钥密码(没有 openssl 就自行安装):

openssl pkcs12 -in <p12 文件> -clcerts -nokeys -out public.cer

导出的 public.cer 公钥文件可以分享给他人,后面也会讲解如何导入他人的公钥。

付费的 Certum(最多两年,更安全)

如果你想更安全,并且有安全的私钥保存方法,那可以在 Certum 申请,可以通过上传 CSR 的方式申请,私钥保存在本地,支持 RSA 2048/3072/4096、ECC 256/384(prime256v1 / secp384r1)(ECC 证书只能用于签名,无法加密)。如果没使用过 CSR 也可以看下面步骤学习下,弄错了也没关系,Certum 可以重新签发证书。

生成私钥和 CSR

建议创建一个干净的 Linux 虚拟机再进行以下操作

安装 Java 17,然后下载〈Certum Tools application〉,应下载 .jar 格式的。通过 java -jar certum-tools.jar 运行程序。运行之后,点右上角切换语言为英语。在中间的 Common Name 中输入申请的邮箱,选择算法和密钥大小(建议用 RSA,2048 位密钥的够安全了,申请 4096 位的也行)。然后点击 Generate CSR,就会生成私钥和 CSR,分别点击 Save 并保存好。

保存好后,先不要关闭软件,待会要用这个软件组合公私钥。

购买并激活证书

打开〈Certum 商店〉,点击右上角注册账号(用需要申请证书的邮箱注册),然后在账户设置里添加一个 Billing Address,国家选一个东亚国家,Buyer 选 Person,剩下的信息建议写详细点(可以写虚拟地址,但不要明显乱填,下图为错误示范)。这个操作是为了避免在结算价格里计算税费。

设置 Billing Address-错误示范
设置 Billing Address-错误示范

然后回到商店页面,选择你要的 S/MIME 证书。我推荐最便宜的 Certum S/MIME Mailbox,新证书一年 9.5 欧,两年 15 欧,建议直接买两年划算。续费都比新办便宜 0.5 欧。如果你有更高级的需求(钱用不完),可以买 Certum S/MIME Individual。这个证书会显示你的姓名,而不仅仅是邮件地址。如果要买这个,需要把 Billing Address 中的姓名改为真实的。

选择证书并购买
选择证书并购买

添加到购物车并购买,付款方式自选(可以使用内地外币卡)。付款完成后,点击右上角 My Account 中的 My orders,可以看见订单状态变为了 In Progress,稍等一会,就会收到邮件「Begin certificate activation. Order …」,打开里面的链接进入 Certum CertManager Dashboard。在页面下方,可以看到刚才购买的证书,点击 Email verification 开始激活证书。

确认邮件地址
确认邮件地址

输入邮箱后,确定,稍后就会有激活邮件发来,点击链接即可。激活后,回到刚才的页面,点击 Activate certificate。

开始激活证书
开始激活证书

激活的时候,选择 CSR 作为生成方式,然后将刚才生成的 CSR 文件中的内容复制进去,然后一直下一步就行。激活过程一般很快,之后就能下载证书文件了。如果以后私钥丢了等情况,需要重新生成证书,直接点 Reissue certificate,粘贴新的 CSR 进去就行。

组合证书文件

等证书激活好后,点击 Download PEM 下载证书(公钥文件)。然后回到 Certum Tools,切换到 PFX Generator (P12) 选项卡,选择下载好的证书文件,以及刚才保存的私钥文件,并输入一个导出密码来保护证书文件。密码最好复杂点,但也要记得住。导出的 pfx 文件可以保存好,方便添加到不同设备。

组合为 PFX 证书
组合为 PFX 证书

安装与使用证书

Mozilla Thunderbird(Windows/Linux/macOS)

Mozilla Thunderbird 是由 Mozilla 基金会研发的一款自由及开放源码的跨平台电邮客户端、新闻阅读器、聚合器以及即时通信软件。(来自 Wikipedia)

虽然 Thunderbird 支持的电子邮件协议有限,但是其 IMAP 协议也支持大部分邮箱的即时推送,就类似 Exchange ActiveSync 那种收到邮件马上就有通知,而不用像传统意义上的 IMAP/POP3 协议一样需要定期与服务器同步。

强烈建议在所有操作前,开启 Thunderbird 的主控密码,这样会加密添加的邮件帐户的密码和导入的 S/MIME 证书,并且在每次启动 Thunderbird 前都需要输入这个主控密码。如果要开启主控密码,点击右上角的三条横线,进入设定,点击隐私权和安全性选项卡,然后打开主控密码选项,也可以同时打开上面的需要装置登入选项。

1759681618 thunderbird master password
Thunderbird 使用主控密码

添加自己的证书

在添加了邮件帐号后,点击右上角的三条横线,进入帐号设定,点击端到端加密选项卡里面的「管理 S/MIME 凭证」,在这里就能汇入 p12/pfx 格式的证书文件。

Thunderbird 导入 S/MIME 证书
Thunderbird 导入 S/MIME 证书

导入证书后,分别按两个「选择」按钮,选择刚刚添加的证书,作为用于签名和加密的证书。然后勾选「对新信息启用加密」和「签署未加密信息」选项,如图。

Thunderbird S/MIME 设定
Thunderbird S/MIME 设定

这样一来,在撰写邮件时,就会默认启用 S/MIME 加密和签名。但还有一个问题,我们需要收件人的公钥才能进行加密,否则只能签名,所以下面会讲解如何手动添加对方的公钥。

手动添加对方公钥

注意我这里说的是手动添加,因为正常来说 S/MIME 其实不需要手动添加,你只需要收到带有对方签名的邮件,Thunderbird 就会自动添加对方的公钥,然后就可以发送加密邮件了。不过如果你已经有对方的公钥,并且通过对比指纹确认公钥未遭篡改,那也能直接添加公钥。

点击右上角的三条横线,进入帐号设定,点击端到端加密选项卡里面的「管理 S/MIME 凭证」,然后切换到人员选项卡,点击「汇入」就能导入其他人的公钥,然后就可以直接给对方发加密的邮件了。

Thunderbird 添加他人公钥
Thunderbird 添加他人公钥

Apple Mail (iOS)

添加自己的证书

将 p12/pfx 传进手机的文件 App 里,单击下就能以描述文件的形式安装。然后打开设定 App,信任刚才添加的描述文件即可,过程中需要输入手机密码和证书密码。

然后还是在设定里,找到邮件 App 的单独设定,点击已有的邮件帐号-帐号设定-高级,就可以设置 S/MIME 签名和预设加密,建议把两个选项都打开,然后选择刚才导入的证书就可以了。这样在发送所有邮件时都会默认签名,同时如果有收件人公钥,也会默认加密。

添加别人的证书

iOS 应该只能通过收到带有签名的证书的方式来添加公钥,而不能手动添加(虽然也可以用描述文件导入公钥,但是邮件 App 无法识别)。

收到他人的邮件后,点击寄件人的名字-查看证书,再点安装就可以了,如图。

然后在发送邮件,输入收件人地址时,如果有可用的公钥,就会出现一个锁上的锁,否则就是打开的锁。

其他软件,比如 Outlook,就请自行在网上搜教程吧,不过我用 Outlook (classic) 在处理 S/MIME 签名加密时经常报错,不懂什么原因,所以还是转 Thunderbird 了。

使用公开的 LDAP 服务器自动获取公钥

为了方便快速获取他人的 S/MIME 公钥,而不必一一手动添加,可以将公钥上传至公开的 LDAP 目录服务器,就像 GPG 公钥服务器一样。通过这种方式,无需先交换经过签名的邮件,只要两个使用者都连接到同一个目录服务器,获取到对方的公钥,就能建立加密通信。

其实这种方式大多适用于公司/组织内的使用,公开的 S/MIME 目录服务器并不像 GPG 公钥服务器那么流行,而且也无法去中心化。不过如果你想试试,也可以上传公钥看看(我也上传了)。

我使用的公开 LDAP 目录服务是 Z1 Global TrustPoint,由一家德国公司建立,资料处理符合 GDPR 规范,链接〈官网〉〈使用条款〉〈隐私政策

上传公钥

打开 Z1 Global TrustPoint 上传页面,选择「User certificate」,将公钥上传上去,然后会往对应邮箱里发一封确认邮件,点击其中的链接即可。

上传 S/MIME 公钥
上传 S/MIME 公钥

然后返回主页,搜索下你的邮件地址,如果搜得出来对应的公钥,就可以继续了。

Thunderbird 添加 LDAP 目录服务

点击右上角的三条横线-新增帐号-新增通讯录-LDAP 通讯录,按以下信息填写,然后确定保存。

名称:随便
主机名称:ldap.globaltrustpoint.com
端口:636,并勾选使用安全连接
Base DN:dc=globaltrustpoint,dc=com

然后打开 Thunderbird 设定,在编辑选项卡中,将「使用下列功能以加速寻找符合的收件者」里的三个勾全部选上,如果已经选上了,最好取消勾选,然后再重新勾选一遍。目录服务器选择刚刚添加的。

Thunderbird 设定自动搜索 S/MIME 公钥
Thunderbird 设定自动搜索 S/MIME 公钥

这样一来,如果启用了对新消息启用加密的选项,在填写完收件人地址后,Thunderbird 就会自动向 LDAP 服务器查询对应邮件地址有无对应的公钥,如果有,就会自动添加,如图

Thunderbird 自动从 LDAP 服务器获取公钥
Thunderbird 自动从 LDAP 服务器获取公钥

以上就是全部内容,欢迎留言。如果你也用 WordPress 也可以试试看我写的一个插件〈为 WordPress 外发邮件添加 S/MIME 签名〉。需要测试,可以直接给我发邮件([email protected]),我的公钥可以在这里下载。