我们刚刚开始使用Thunderbird 自动配置并且发现它对于为每个启动邮件客户端的用户自动创建公司标准 imap、smtp 和 ldap 帐户非常有用。
然而,公司 ldap 服务器(其实是 Windows 域控制器)使用的是我们公司证书颁发机构颁发的证书,而 Thunderbird 当然不信任该证书。因此,除非手动导入并信任 ca 证书,否则 ldap 远程地址簿无法同步。
亲爱的可以thunderbird.cfg
用来导入和信任ca root吗?
我们已经尝试了以下两种解决方案,但它们显然什么也没做:也许它们只适用于 Firefox,或者我们没有正确配置。
尝试信任 Windows 操作系统信任的 CA 根:
pref("security.enterprise_roots.enabled, true");
尝试导入并信任 ca 根证书:
var Cc = Components.classes; var Ci = Components.interfaces; var certdb = Cc["@mozilla.org/security/x509certdb;1"].getService(Ci.nsIX509CertDB); var certdb2 = certdb; try { certdb2 = Cc["@mozilla.org/security/x509certdb;1"].getService(Ci.nsIX509CertDB2); } catch (e) {} // This should be the certificate content with no line breaks at all. cert = "MII ... =="; certdb.addCertFromBase64(cert, "C,C,C");
更新,以及解决方案。
我们无法弄清楚方法1.
,但最终用方法取得了成功。2.
错误是我明显误解了这个句子:
第三个参数已从 API 中删除,不应包含在内
我以为addCertFromBase64
只需要两个参数,但实际上它仍然需要第三个参数,即使它只是一个空字符串。编辑命令确实certdb.addCertFromBase64(cert, "C,C,C","");
有效。
答案1
至于方法2.
,缺少一个参数。以下代码有效(参见最后一行):
var Cc = Components.classes;
var Ci = Components.interfaces;
var certdb = Cc["@mozilla.org/security/x509certdb;1"].getService(Ci.nsIX509CertDB);
var certdb2 = certdb;
try {
certdb2 = Cc["@mozilla.org/security/x509certdb;1"].getService(Ci.nsIX509CertDB2);
} catch (e) {}
// This should be the certificate content with no line breaks at all.
cert = "MII ... ==";
certdb.addCertFromBase64(cert, "C,C,C","");