Thunderbird 自诞生以来就一直支持 S/MIME,但它处理证书的方式与 Outlook 有一个关键区别,这个区别决定了后续的一切:它拥有自己独立的证书存储区。你在 Windows、macOS 或 Linux 密钥环中安装的任何东西都不会出现在 Thunderbird 中,同样,你导入 Thunderbird 的任何东西也不会出现在其他地方。
这也是为什么在每个操作系统上操作步骤都完全相同的原因。以下步骤已在 Thunderbird 当前的正式版(版本 153)以及当前的扩展支持版本(版本 140)上进行了验证。
Thunderbird 拥有自己独立的证书存储区
这是首先需要理解的一点,因为它解释了围绕 Thunderbird 与证书的大部分困惑。
Outlook 会从 Windows 证书存储区中读取证书,所以在 Windows 上,你只需安装一次证书,使用该存储区的每个应用程序就都能看到它。Thunderbird 并不参与这一机制。它在自己的配置文件(profile)内维护一套独立的存储区,因此电子邮件证书必须专门导入到 Thunderbird 中,即使该证书已经安装在 Windows 中并在另一个程序中正常使用。
由此带来的实际后果值得明确说明:
- 你需要原始的 .p12 或 .pfx 文件及其密码。仅在 Windows 中安装的证书是不够的,除非你能将其重新导出为文件。
- Windows、macOS 和 Linux 上的操作步骤都是一样的,因为存储区和界面都是 Thunderbird 自己独有的。
- 更换新电脑意味着需要在新电脑上重新将证书导入 Thunderbird。复制配置文件(profile)可以将证书一并带过去,但全新安装则不会自动带上。
第 1 步:导入证书
准备好 PKCS#12 文件。它的扩展名为 .p12 或 .pfx,同时包含你的证书和私钥,并受你下载证书时设置的密码保护。如果你丢失了该密码,无法从文件中恢复;你必须从证书仍安装的地方重新导出一份,或者申请重新签发证书。
- 打开 Thunderbird 菜单(右上角的三条横线)并选择 Settings(设置)。
- 选择 Privacy & Security(隐私与安全),然后向下滚动到 Certificates(证书)。
- 点击 Manage Certificates(管理证书)。
- 在 Your Certificates(你的证书)选项卡中,点击 Import(导入)。
- 选择你的 .p12 或 .pfx 文件,并在提示时输入密码。
- 点击 OK(确定)。此时证书会出现在列表中,显示在签发该证书的 CA 下方,并标明你的邮箱地址。
Your Certificates(你的证书)选项卡专门用于存放属于你自己的证书,也就是你持有其私钥的证书。相邻的 People(联系人)选项卡则存放其他人的证书,当你收到他人签名的邮件时,对方的证书就会累积在这里。将自己的证书导入错误的选项卡是常见的失误,会导致该证书无法用于签名。
如果你在配置文件上设置了主密码(Primary Password),Thunderbird 会在导入过程中要求输入它,因为它正是用来保护存储区中私钥的密码。
第 2 步:为你的账户选择该证书
导入操作只是将证书放入存储区,并不会将其关联到某个电子邮件账户,关联证书是一个单独的步骤,且需要针对每个账户分别进行。
- 打开菜单(三条横线按钮)并选择 Account Settings(账户设置)。
- 在左侧窗格中,在你想要设置的账户下方,选择 End-To-End Encryption(端到端加密)。Thunderbird 对该面板的官方说明写得很清楚:要发送加密或数字签名的邮件,你需要配置”OpenPGP 或 S/MIME 二者之一”。
- 找到位于 OpenPGP 部分下方的 S/MIME 部分。
- 在 用于数字签名的个人证书旁边,点击 Select(选择)并选取你的证书。
- Thunderbird 会提示是否使用同一证书进行加密。除非你被分别签发了独立的签名证书和加密证书,否则接受此提议即可;若是后一种情况,则需自行设置用于加密的个人证书。
- 可以选择是否为该账户默认启用签名。默认加密建议保持关闭,因为一旦开启,就无法向任何你尚未拥有其证书的人发送邮件。
选择器中只会显示 Thunderbird 认为对该账户地址有效的证书。若列表为空,几乎总是意味着证书上的电子邮件地址与账户不匹配,或者到签发 CA 的证书链不完整。
在依赖它之前先进行测试
Thunderbird 有一个几乎没有任何指南提到的验证步骤:在同一 S/MIME 部分中,每个已选定证书旁边都有一个 Test(测试)按钮。请务必使用它。这决定了你是现在就发现问题,还是等到一封签名邮件被退回时才发现问题。
它返回的信息非常具体,因此更有助于诊断问题,而不仅仅是提供心理上的安慰:
- 该证书已通过测试,可用于电子邮件签名。或者是加密方面的类似提示。这正是你所期望看到的结果。
- 找不到该证书。说明当前选择指向的证书已不在存储区中,通常发生在配置文件被移动或证书被删除之后。
- 证书验证失败,出现以下错误,随后会显示描述信息以及类似 SEC_ERROR_UNKNOWN_ISSUER 的错误代码。该特定代码意味着证书链不完整:Thunderbird 拥有你的证书,但缺少将其连接到受信任根证书的中间证书。请将 CA 提供的中间证书导入同一证书管理器中的 Authorities(颁发机构)选项卡。
如果验证失败,Thunderbird 仍会提示你可以继续使用该证书。不要将此选项当作解决方案。这意味着你的收件人将看到与你刚刚忽略的相同的失败提示。
发送签名或加密的邮件
在撰写邮件窗口中,使用 Security(安全)下拉菜单为该邮件启用签名或加密。Thunderbird 官方的原话值得再次强调,因为它消除了一个常见的疑虑:”数字签名可让收件人验证该邮件确实由你发送,且内容未被篡改。加密邮件默认始终会被签名。”
要检查收到的邮件,可打开其安全信息。Thunderbird 会显示签名算法、签名摘要算法以及加密算法,并附带密钥长度,例如 AES-GCM,密钥长度为 256 位。这也是确认某位联系人的邮件确实经过了真实签名,而非仅仅声称如此的方法。
为什么还无法向某人发送加密邮件
加密使用的是收件人的证书,而不是你自己的证书。你的证书用于对你发出的邮件进行签名,并使其他人能够向你发送加密邮件。在你持有某人的证书副本之前,Thunderbird 无法向该人发送加密邮件。
一旦你了解这是必需的步骤,交换过程就很简单了。向对方发送一封带有你证书的签名邮件。然后请对方回复一封带有其证书的签名邮件。Thunderbird 会将收到的证书归档到证书管理器的 People(联系人)选项卡下,此后向该地址发送加密邮件就可以正常使用了。这是 S/MIME 本身的特性,而非 Thunderbird 的限制,在 Outlook 及其他所有客户端中情况都是一样的。
还没有证书?Thunderbird 可以为你生成申请
当前版本的 Thunderbird 可以自行生成密钥对及证书申请,这是较早的指南中未曾提及的功能。用 Thunderbird 自己的话来说:”要获取新的个人 S/MIME 证书,请生成证书签名请求(CSR),并将其提交给证书颁发机构(CA)。”
该选项位于同一个 End-To-End Encryption(端到端加密)面板中。你可以选择 CSR 文件的保存位置,选择 RSA(Thunderbird 将其标注为推荐选项)或 ECC,并选择密钥强度。私钥在 Thunderbird 自身的存储区内生成,永远不会离开该存储区,相比下载 PKCS#12 文件,这是一项实实在在的优势:不存在会被丢失、泄露,或需要通过邮件发给自己的文件。
但这种做法也有相应的代价。由于密钥永远不会离开 Thunderbird,若要在手机或第二台电脑上使用同一证书,就必须之后从 Your Certificates(你的证书)选项卡中将其导出;如果在你完成导出之前配置文件就已丢失,那么密钥也会随之丢失。此外需要注意,Thunderbird 会提示生成步骤”可能需要一些时间,并导致程序暂时无响应”,所以不要以为程序已经卡死。
不要删除已过期的证书
当你的证书过期后,你会获得一个新证书,而旧的条目看起来就像是多余的垃圾。请不要动它。
使用旧证书加密的邮件,只能用旧的私钥来解密。从 Your Certificates(你的证书)中删除旧证书,会导致这些邮件永久无法阅读,包括那些已经保存在你邮箱中的邮件。证书过期只会阻止你对新邮件进行签名——这也正是过期机制的意义所在——但该密钥会无限期地继续用于解密旧邮件。请保留每一个已停用的电子邮件证书,并在每次更换设备时,将它们与当前证书一并导出。
故障排除
- 证书选择器中为空。要么证书不在 Your Certificates(你的证书)中,要么其电子邮件地址与账户不匹配。这两种情况都可以在证书管理器中查看到。
- 你已在 Windows 中安装了证书,但 Thunderbird 无法识别。这是正常现象。Thunderbird 使用自己独立的存储区,因此也需要将 PKCS#12 文件导入到 Thunderbird 中。
- Test(测试)按钮报告 SEC_ERROR_UNKNOWN_ISSUER。说明缺少中间证书。请将其导入到 Authorities(颁发机构)选项卡中。
- 导入失败,或提示输入一个你从未设置过的密码。Thunderbird 此时要求输入的是配置文件的主密码,而不是文件本身的密码。两者是不同的密码,而对话框并不总能明确说明这一点。
- 某个收件人的加密选项呈灰色不可用。说明你没有对方的证书。请请求对方发送一封签名邮件。
- 你配置错了账户。S/MIME 设置是按账户和身份分别配置的,因此如果一个配置文件中有多个邮箱地址,就需要在每个适用的地址下分别选择证书。
常见问题
当 Thunderbird 在版本 78 中加入内置 OpenPGP 支持时,它变成了 End-To-End Encryption(端到端加密)。S/MIME 并没有消失,它只是现在与 OpenPGP 共用同一个面板,位于 OpenPGP 下方独立的一个部分中。那些告诉你点击 Security(安全),或让你在 Options(选项)中的 Advanced(高级)选项卡下查找证书的指南,描述的是 2020 年之前的 Thunderbird。
Thunderbird 两者都支持,你可以为每个账户分别配置其中一种。S/MIME 使用来自证书颁发机构的证书,信任关系已由 CA 为你建立好,因此这是企业环境以及需要与业务对接方对接时通常采用的方式。OpenPGP 则使用你自己生成并自行验证的密钥,不涉及 CA。如果你购买了电子邮件证书,那么你要配置的就是 S/MIME。
这是因为 Outlook 会读取 Windows 证书存储区,而 Thunderbird 不会。在 Windows 中安装证书对 Thunderbird 没有任何影响。请按照上文第 1 步,将相同的 .p12 或 .pfx 文件导入到 Thunderbird 自己的存储区中。我们的配套指南介绍了如何在 Outlook 上安装 S/MIME 证书,其中的情况正好相反。
不是。SSL/TLS 证书用于标识一个网站,并保护与该网站之间的连接。S/MIME 证书用于标识某个人或某个电子邮件地址,并保护邮件内容本身。两者遵循不同的签发规则,彼此不能互相替代。你在 Thunderbird 中所需要的是电子邮件证书。
是的,除非你将整个配置文件(profile)复制过去,否则在每一次 Thunderbird 安装中都需要重新操作。证书存放在配置文件中,而不是操作系统中,也不是电子邮件账户本身,因此全新安装时的存储区总是空的。
可以。在 Manage Certificates(管理证书)中的 Your Certificates(你的证书)选项卡下,选中该证书,并使用备份选项,将其写入一个由你自行设置密码保护的 PKCS#12 文件。如果证书是在 Thunderbird 内部生成的,请在生成后立即执行此操作,因为在这种情况下,该存储区保存着这份私钥在世界上唯一存在的副本。
适用于当前正式版本 153,以及当前扩展支持版本 140。自版本 78 以来,各面板的名称一直保持稳定,因此从那时起的所有版本都适用于本指南。应用内 CSR 生成功能在这两个当前版本系列中均已支持。

