我们正在实验室中设置自托管邮件解决方案,并且需要我们自己的 CA。我们遇到的问题是,Thundebird 抱怨我们的根证书不受信任,尽管我们知道它是有效的。
问题在于,Thunderbird 自带了它所信任的证书,但并不查看计算机信任的证书,因此仅将 GPO 推送到所有具有根证书的客户端是行不通的。
我们需要自动部署将根证书导入Thundebird,但在如何操作方面遇到了严重的问题。
Autoconfig 正在运行,Thunderbird 正在获取正确的服务器配置,但证书错误仍然存在。唯一已知的方法是手动将证书导入 Thunderbirds 受信任的证书。
这里有人对如何进行有什么建议吗?
答案1
由于 Thunderbird 基于与 Firefox 相同的平台,因此您应该能够使用与 Firefox 相同的工具。
您可以使用多种工具,按照从最简单到最复杂的顺序排列:
1.它可能是内置的!
Thunderbird 已经实验性地支持从操作系统证书存储自动导入证书。
以下是手动启用它的方法:
- 打开菜单并点击“选项”
- 转到“高级”标签
- 点击“配置编辑器”
- 如果有提示,请点击“我接受风险!”。
- 搜索
security.enterprise_roots.enabled
- 双击
security.enterprise_roots.enabled
将其设置为 true。
您可以通过以下方式自动执行此操作部署配置文件到计算机。
2. 部署默认配置文件
您可以将证书添加到您自己的配置文件中,然后将配置文件的cert8.db
文件复制到主程序文件夹。然后,在计算机上创建的任何新配置文件都将使用该版本cert8.db
。
不幸的是,这对于已经打开 Thunderbird 的用户没有帮助,因为他们的配置文件已经创建。
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 产品的第三方管理工具。请参阅其文档以了解更多详细信息。