Active-Directory

需要幫助使用我們自己的根證書自動部署雷鳥

  • April 27, 2017

我們正在實驗室中設置自託管郵件解決方案,我們需要成為自己的 CA。我們遇到的問題是 Thunderbird 抱怨我們的根證書不受信任,即使我們知道它是有效的。

問題是 Thunderbird 帶有它自己信任的證書,並且它不會查看電腦受信任的證書,因此僅將 GPO 推送到具有根證書的所有客戶端是行不通的。

我們需要自動部署將根證書導入到 Thunderbird 中,並且在弄清楚如何操作方面遇到了嚴重的問題。

Autoconfig 正在執行,並且 Thunderbird 正在獲得正確的伺服器配置,但證書錯誤仍然存在。唯一已知的方法是將證書手動導入到 Thunderbirds 受信任的證書中。

這裡有人對如何進行有建議嗎?

因為 Thunderbird 與 Firefox 基於相同的平台,所以您應該能夠使用與 Firefox 相同的工具。

您可以使用多種工具,按從簡單到最複雜的順序排列:

1.它可能是內置的!

Thunderbird 實驗性地支持從作業系統證書儲存中自動導入證書。

以下是手動啟用它的方法:

  1. 打開菜單並點擊“選項”
  2. 轉到“高級”選項卡
  3. 點擊“配置編輯器”
  4. 點擊“我接受風險!” 如果提示這樣做。
  5. 搜尋security.enterprise_roots.enabled
  6. 點兩下security.enterprise_roots.enabled將其設置為 true。

您可以通過將配置文件部署到電腦來自動執行此操作。

  1. 部署預設配置文件

您可以將證書添加到您自己的配置文件中,然後將您的配置文件的cert8.db文件複製到主程序文件夾。然後在電腦上創建的任何新配置文件都將使用該版本的cert8.db.

不幸的是,這對任何已經打開 Thunderbird 的使用者沒有幫助,因為他們的配置文件已經創建。

有關更多資訊,請參閱https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Thunderbird_Enterprise_Tips#Using_a_private_CA_certificate

3.部署配置文件

正如上面選項 #1 中提到和連結的那樣,Mozilla 產品支持在C:\Program Files (possibly x86)\Mozilla Thunderbird\defaults\pref\autoconfig.js.

您可以在該文件中放置一個腳本,將您的證書添加到證書儲存中。這是一個例子:

var cert = "MIIHPT...zTMVD"; // This should be the certificate content with no line breaks at all.

var observer = {
 observe: function observe(aSubject, aTopic, aData) {
   var certdb = Components.classes["@mozilla.org/security/x509certdb;1"].getService(Components.interfaces.nsIX509CertDB);
   var certdb2 = certdb;
   try {
     certdb2 = Components.classes["@mozilla.org/security/x509certdb;1"].getService(Components.interfaces.nsIX509CertDB2);
   } catch (e) {}
   certdb2.addCertFromBase64(cert, "C,C,C", "");
 }
}
Components.utils.import("resource://gre/modules/Services.jsm");
Services.obs.addObserver(observer, "profile-after-change", false);

4.Mozilla的certutil執行檔

您可以創建一個執行certutil以將證書添加到使用者配置文件的登錄腳本。此論壇文章有一個範例腳本(用於 Firefox),其中重要部分複制如下(對 Thunderbird 進行了修改):

strAppDataDir = WshShell.ExpandEnvironmentStrings("%APPDATA%")
strThunderbirdProfilesDir = strAppDataDir & "\Thunderbird\Profiles\"

Set arrThunderbirdProfileList = objFSO.GetFolder(strThunderbirdProfilesDir).SubFolders

For Each ThunderbirdProfile In arrThunderbirdProfileList
   'Create a backup of the old cert8.db file. This line is optional.
   objFSO.CopyFile ThunderbirdProfile & "\cert8.db" , ThunderbirdProfile & "\cert8.db.old", OverWriteFiles
   'Add the local CA certificate to cert8.db and assign appropriate trust levels.
   Call WshShell.Run(strCertutilPath & " -A -n " & Chr(34) & strLocalCertificateAuthorityName & Chr(34) & " -i " & strCertificateFilePath & " -t " & Chr(34) & strTrustAttributes & Chr(34) & " -d " & Chr(34) & ThunderbirdProfile & Chr(34), 0, true)
 Next

(注意:不要與微軟的同名程序混淆)

5.您可以使用管理工具

CCK2是 Mozilla 產品的第三方管理工具。有關更多詳細資訊,請參閱其文件。

引用自:https://serverfault.com/questions/846750