让 Thunderbird 在端口 993 而不是 443 上请求证书

让 Thunderbird 在端口 993 而不是 443 上请求证书

我正在尝试在 Thunderbird 中为特定服务器创建证书例外<servername>(我特别要求不要被告知最好为服务器提供可接受的证书,我知道这一点,但我对此无能为力)。当我尝试在证书管理器中为或添加证书例外时<servername>imap://<servername>我在 Wireshark 中看到 TB 尝试连接到服务器上的 TCP 443,但服务器(可能)配置为除了 993 之外不响应任何内容(TCP SYN 没有响应)。如果我尝试为或imaps://<servername>设置例外(按照<servername>:993https://<servername>:993),然后它只会告诉我“没有可用信息 - 无法获取此站点的识别状态”(法语翻译)。在这种情况下,它甚至不会尝试在任何端口上连接到服务器。

我如何让 Thunderbird 使用端口 TCP 993 从服务器获取证书,或者,如何使用我计算机上的证书文件创建证书例外(而不是从服务器检索它)?

仅供参考:目前,当尝试从此服务器检索电子邮件时,TB 甚至不再要求我提供例外。它只是在握手结束时发送“加密警报”消息,然后发送 TCP RST,然后它再次循环启动,无需用户交互。它在握手期间获得的服务器证书是我期望的。

我在 Linux 上使用 Thunderbird 91.7.0。

附加信息:

  • 我有另一台装有另一台 Thunderbird 的 Linux 机器,可以与此服务器配合使用(但有证书例外)。从此工作安装中导入 cert9.db 和 key4.db 无法解决问题;
  • 客户端和服务器确实有一个他们同意的通用密码套件(TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 - 0xc02f)。

答案1

我如何让 Thunderbird 使用端口 TCP 993 从服务器获取证书,或者,如何使用我计算机上的证书文件创建证书例外(而不是从服务器检索它)?

在“管理证书”对话框中,似乎在“颁发机构”选项卡下有一个手动导入证书的选项:

Thunderbird 证书管理器对话框的屏幕截图,“Authorities”(权限)选项卡,“import”(导入)按钮周围有红色圆圈

如果您在此处导入自签名证书(并且可能在其上“编辑信任”并勾选该对话框中的框),是否可以从服务器获取邮件?

更新:

看起来证书管理器中列出了几个错误:

https://bugzilla.mozilla.org/buglist.cgi?quicksearch=thunderbird+self-signed

我会仔细研究一下,寻找一个可行的解决方法没有为了找到错误并进行修补,必须仔细研究 Mozilla 的庞大代码库。

潜在解决方案:

哇!这真是太麻烦了。最初,我的目标是以某种方式将证书例外情况添加到 Thunderbird 中。我做到了。

  1. 加载 Thunderbird 并启动错误控制台(工具 > 开发者工具 > 错误控制台)。
  2. 在控制台执行此操作:openTab("contentTab",{url:"https://expired.badssl.com/"})
  3. 观察一个安全错误,其中的文字显示“安全连接失败”,以及一个蓝色链接“或者您可以添加例外......”,但实际上没有任何作用。
  4. 然后,返回偏好设置中的证书管理器。
  5. 在服务器部分,单击“添加例外”,输入“https://expired.badssl.com”,然后单击“获取证书”。
  6. 您应该会得到类似“过时的信息”和“证书目前无效”之类的信息。
  7. 点击“确认安全例外”。
  8. 此时,您可以退出证书管理器。
  9. 此时,如果您尝试再次通过错误控制台加载页面,它可能会或可能不会工作。有时对我来说它可以,有时则不行。但是,停止并启动 thunderbird 可确保它确实可以工作。
  10. 一旦我确认我可以关闭、重新打开并访问https://expired.badssl.com通过错误控制台的 URL(这是一个大红色页面,上面有大白色文字“expired.badssl.com”),我访问了配置文件目录。我的是在这里:

C:\Users\Preston Maness\AppData\Roaming\Thunderbird\Profiles\ij5cen6z.default-release

  1. 此文件夹中现在有一个“cert_override.txt”文件!它看起来像这样:
# PSM Certificate Override Settings file
# This is a generated file!  Do not edit.
wrong.host.badssl.com:443:  OID.2.16.840.1.101.3.4.2.1  90:94:C2:BD:FA:69:7B:45:03:DA:AD:11:67:EB:20:A5:A4:71:EA:98:D0:1F:76:54:72:63:FC:9E:AE:C7:C8:F2 M   AAAAAAAAAAAAAAAQAAAATwrwbNo3pgtkE0LwoesdWf0wTTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEnMCUGA1UEAxMeRGlnaUNlcnQgU0hBMiBTZWN1cmUgU2VydmVyIENB
expired.badssl.com:443: OID.2.16.840.1.101.3.4.2.1  BA:10:5C:E0:2B:AC:76:88:8E:CE:E4:7C:D4:EB:79:41:65:3E:9A:C9:93:B6:1B:2E:B3:DC:C8:20:14:D2:1B:4F T   AAAAAAAAAAAAAAAQAAAAk0rnlUn6mr4/EA8XpHjhaQkwgZAxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMTYwNAYDVQQDEy1DT01PRE8gUlNBIERvbWFpbiBWYWxpZGF0aW9uIFNlY3VyZSBTZXJ2ZXIgQ0E=

请注意“expired.badssl.com:443”条目,后面跟着一些标识符、证书的哈希值和一些 base64 编码的数据。

  1. 至少一个 Thunderbird 用户然后能够编辑此条目以使用正确的电子邮件相关端口(而不是 443),然后能够发送和接收邮件而不会出现证书问题:

将上述内容复制到新行,唯一需要更改的是端口号。就我而言,我将端口 143 更改为端口 465,因为这是我在 hmailserver 程序上用于 SMTP 端口的端口。然后保存文件。现在文件如下所示:my.mail.server:143 OID.2.16.840.1.101.3.4.2.1 CE:D6:4C:(此后是大量密钥乱码)my.mail.server:465 OID.2.16.840.1.101.3.4.2.1 CE:D6:4C:(此后是大量密钥乱码)现在您可以重新启动 Thunderbird,当您检查证书例外情况时,您会看到证书列出两次 - 一次是传入端口,另一次是传出端口。现在我可以通过端到端加密的 hmailserver 程序接收或发送电子邮件,没有任何问题。


不过,在您的特定情况下,您似乎无法直接执行此操作。您的目标服务器未监听 443。但您提到您有证书文件本身。这里有一个项目用于制作这些证书覆盖行,它采用主机名和证书文件:

https://github.com/Osmose/firefox-cert-override

我可以运行这个脚本并让它输出看似有效的内容cert_override.txt(尽管使用不同的域名,google.com,因为我没有你的 PEM 文件):

命令:

$ firefox-cert-override google.com:443=/tmp/google.pem google.com:443=/tmp/google.pem

输出:

# PSM Certificate Override Settings file
# This is a generated file!  Do not edit.
google.com:443  OID.2.16.840.1.101.3.4.2.1  DE:EF:77:F6:32:11:74:46:D5:7A:79:78:39:F6:ED:3C:C2:9A:1D:6C:B8:07:05:18:B9:5A:84:71:4F:75:ED:70 MUT AAAAAAAAAAAAAAARAAAASADaXCSq7j0ZmBIAAAAABaYdMEYxCzAJBgNVBAYTAlVTMSIwIAYDVQQKExlHb29nbGUgVHJ1c3QgU2VydmljZXMgTExDMRMwEQYDVQQDEwpHVFMgQ0EgMUMz
google.com:443  OID.2.16.840.1.101.3.4.2.1  DE:EF:77:F6:32:11:74:46:D5:7A:79:78:39:F6:ED:3C:C2:9A:1D:6C:B8:07:05:18:B9:5A:84:71:4F:75:ED:70 MUT AAAAAAAAAAAAAAARAAAASADaXCSq7j0ZmBIAAAAABaYdMEYxCzAJBgNVBAYTAlVTMSIwIAYDVQQKExlHb29nbGUgVHJ1c3QgU2VydmljZXMgTExDMRMwEQYDVQQDEwpHVFMgQ0EgMUMz

(我使用了两次相同的条目只是为了展示脚本如何接受多个输入;你会有不同的主机:端口组合,但我想每个证书文件都是相同的)

我怀疑如果您使用您的证书文件和主机上所需的端口(993、25/587/465/无论什么)运行该脚本,您将获得一个cert_override.txt可以放入配置文件的文件,关闭 Thunderbird,然后重新打开 Thunderbird 并让一切再次正常工作。

或者至少,我真的非常希望如此:)

答案2

我在尝试连接到本地运行的 Dovecot 服务器(默认情况下使用自签名证书)时也遇到了这个问题。鉴于 TB 添加证书例外的接口仅接受以 开头的“站点” https://,我将 Dovecot 配置为在端口 443 上运行一个附加进程。然后就可以毫无问题地添加例外。

为了记录起见,我将其添加到/etc/dovecot/conf.d/10-master.conf

  inet_listener https {
    port = 443
    ssl = yes
  }

答案3

你可能会遇到 bughttps://bugzilla.mozilla.org/show_bug.cgi?id=1764770“Thunderbird 突然无法检索 imap 邮件 - 证书覆盖对话框未出现”也讨论于https://old.reddit.com/r/Thunderbird/comments/wlx2yp/tb_does_not_work_with_my_imap_server_after/

根据评论https://bugzilla.mozilla.org/show_bug.cgi?id=1764770#c9“添加例外。对话框在‘尝试识别此站点’处挂起。”

在 TB 102 中就发现了这个问题,但可能更早。根据错误报告,可能已针对 TB 分支 105 提交了修复,但在撰写本文时尚未发布。

同时,对于我来说,TB 102.8 的解决方法是修改 TB 配置编辑器设置network.security.ports.banned.override993如评论中所述https://bugzilla.mozilla.org/show_bug.cgi?id=1764770#c49

完成上述操作并重新启动 TB 后,我仍然必须手动打开“管理证书...”对话框,但可以通过“添加安全例外”对话框添加新的安全例外。我在“位置”中输入了“servername:993”,单击“获取证书”,TB 确实加载了它,并且“确认安全例外”按钮已启用,因此不再挂在那里。因此单击它,然后单击邮箱的“获取消息”,然后就可以加载消息了。

相关内容