Назад | Перейти на главную страницу

thunderbird.cfg доверяет корневому сертификату CA

Мы только начали использовать Автоконфигурация Thunderbird и считаю его действительно полезным для автоматического создания стандартных корпоративных учетных записей imap, smtp и ldap для каждого пользователя, запускающего почтовый клиент.

тем не мение, сервер ldap компании (фактически, контроллер домена Windows) использует сертификат, выпущенный центром сертификации нашей компании, которому, конечно, не доверяет Thunderbird. Как следствие, удаленная адресная книга ldap не синхронизируется до тех пор, пока сертификат CA не будет импортирован вручную и не будет доверенным.

Может дорогой thunderbird.cfg использовать для импорта и доверять корню ca?

Мы уже пробовали следующее два решения, и они явно ничего не сделали: возможно, они предназначены только для Firefox или неправильно настроены с нашей стороны.

  1. пытаясь доверять корням CA, которым доверяет операционная система Windows:

    pref("security.enterprise_roots.enabled, true");
    
  2. пытаясь импортировать и доверять корневому сертификату 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",""); действительно работал.

Что касается метода 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","");