Certificate-Authority
Thunderbird.cfg 信任 ca 根證書
我們剛剛開始使用Thunderbird 自動配置,發現它對於為每個啟動郵件客戶端的使用者自動創建公司標準 imap、smtp 和 ldap 帳戶非常有用。
但是,公司的ldap伺服器(其實就是一個Windows域控制器)使用的是我們公司Certificate Authority頒發的證書,Thunderbird當然不信任這個證書。因此,在手動導入並信任 ca 證書之前,ldap 遠端通訊簿不會同步。
親愛的
thunderbird.cfg
可以用來導入和信任 ca 根嗎?我們已經嘗試了以下兩種解決方案,但它們顯然什麼也沒做:也許它們僅適用於 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");
更新,和解決方案。
我們無法弄清楚 method
1.
,但最終成功了 method2.
錯誤是我對這句話的明顯誤解:第三個參數已從 API 中刪除,不應包含在內
我認為
addCertFromBase64
只需要兩個參數,而它仍然需要第三個參數,即使它只是一個空白字元串。編輯命令certdb.addCertFromBase64(cert, "C,C,C","");
確實有效。
至於 method
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","");