我公司为基于服务器的产品分发Windows安装程序。 根据最佳实践,它使用证书进行签名。 根据微软的build议,我们使用GlobalSign代码签名证书 ,微软声称这是所有Windows Server版本默认识别的。
现在,除非服务器configuration了组策略:计算机configuration/pipe理模板/系统/ Internet通信pipe理/ Internet通信设置/closures自动根证书更新为已启用,否则这一切运行良好。
我们发现,我们的一个早期testing版testing人员正在使用此configuration运行,导致在安装过程中出现以下错误
无法安装所需的文件,因为cab文件[cab文件的长path]具有无效的数字签名。 这可能表明橱柜文件已损坏。
我们把它写成一个怪异的东西,毕竟没有人能够解释为什么这个系统是这样configuration的。 但是,现在该软件已经可以用于一般用途,看起来我们的客户的双位数(百分比)configuration了这个设置,没有人知道为什么。 许多人不愿意改变设置。
我们已经为客户编写了一篇知识库文章 ,但是我们真的不希望这个问题发生,因为我们实际上关心的是客户体验。
有些事情我们在调查的时候已经注意到了:
所以,这是我的问题了。 为什么禁用更新根证书是很常见的事情? 再次启用更新的潜在副作用是什么? 我想确保我们能够为我们的客户提供适当的指导。
在2012年底/ 2013年初,有一个自动根证书更新的问题。 临时修复是禁用自动更新,所以部分这个问题是历史的。
另一个原因是受信任的根证书程序和根证书分发,这(用来解释微软 )…
根证书在Windows上自动更新。 当[系统]遇到新的根证书时,Windows证书链validation软件会检查相应的Microsoft Update位置以获取根证书。
到目前为止,这么好,但然后…
如果发现它,则将其下载到系统。 对用户来说,体验是无缝的。 用户没有看到任何安全对话框或警告。 下载自动发生在幕后。
发生这种情况时,可能会显示证书正被自动添加到根存储中。 所有这一切使得一些系统pipe理员感到紧张,因为你无法从证书pipe理工具中删除“坏”CA,因为他们不在那里删除…
其实有办法让Windows下载完整的列表,以便他们可以按自己的意愿编辑它,但通常只是阻止更新。 许多系统pipe理员不理解encryption或安全(一般),所以他们毫无疑问地遵循接受的智慧(正确的或以其他方式),他们不喜欢对涉及安全的事情进行修改,他们并不完全明白它相信它是一些黑色的艺术。
自动根证书更新组件旨在自动检查Microsoft Windows Update Web站点上的受信任的权限的列表。 具体来说,存在本地计算机上存储的受信任的根证书颁发机构(CA)的列表。 当应用程序出现由CA颁发的证书时,它将检查受信任的根CA列表的本地副本。 如果证书不在列表中,则“自动根证书更新”组件将联系Microsoft Windows Update网站以查看是否有更新可用。 如果已将CA添加到可信CA的Microsoft列表中,则其证书将自动添加到计算机上的可信证书存储区中。
为什么禁用更新根证书是很常见的事情?
简短的回答可能是关于控制。 如果您想要控制哪些根CA是可信的(而不是使用此function并让Microsoft为您执行此操作),那么最简单也最安全的方法是提供您想要信任的根CA列表,并将它们分发到您的域计算机,然后locking该列表。 由于对组织想要信任的根CA列表的更改相对较less,因此pipe理员想要审查和批准任何更改,而不是允许自动更新,这是有一定意义的。
坦率地说,如果没有人知道为什么在给定的环境中启用这个设置,那就意味着它不应该被设置。
再次启用更新的潜在副作用是什么?
域计算机将被允许在Microsoft Windows更新站点上检查受信任CA的列表,并可能将新证书添加到其可信证书存储区中。
如果客户/客户无法接受,证书可以由GPO分发,他们需要将证书包含在当前用于信任证书的分发方法中。
或者你总是build议暂时禁用这个特定的政策,以允许安装你的产品。
我不同意通常禁用这个。 一个更好的方法来说话是问为什么有人会禁用它。 对于您的问题,更好的解决scheme是安装程序检查根/中间CA证书,如果不存在,请安装它们。
受信任的根CA程序是必不可less的。 如果广泛closures应用程序的话,TON就不能按预期工作。 当然,也许有一些组织会禁用这个function,但是这真的取决于组织的需求。 这是一个有缺陷的假设,任何需要外部依赖的应用程序(根证书)将始终工作而不进行testing。 禁用此function的应用程序和组织的开发人员都有责任确保存在外部依赖性(根证书)。 这意味着,如果一个组织禁用这个,他们知道预计这个问题(或即将了解它)。
值得注意的是,受信任的根CA程序机制(dynamic安装根CA证书)的一个有用目的是安装所有或甚至大部分已知/受信任的根CA证书是不切实际的。 如果安装的证书太多,Windows中的某些组件会中断,因此唯一可行的做法是仅在需要时安装所需的证书。
“问题在于:用于向客户端发送可信证书的SChannel安全包有16KB的限制,因此在存储过多的证书可能会阻止TLS服务器发送所需的证书信息;它们开始发送,但不得不停止如果客户端没有正确的证书信息,则不能使用需要TLS进行authentication的服务,因为KB 931125中提供的根证书更新包会手动将大量的证书添加到存储中,将其应用于服务器结果在存储超过16KB的限制和失败的TLSauthentication的潜力。“
我禁用certif.service的原因如下:
我有很多没有互联网连接的系统。 在大多数情况下,由于它们是大型数据存储服务器上的虚拟机,因此它们缺less显示/ kb /鼠标。 因此,在所有需要维护/修改的情况下,我都使用Windows RDP来访问它们。 如果通过RDP连接到计算机,则Windows首先会在线检查证书更新。 如果您的服务器/客户端没有互联网,则在继续连接之前挂起10-20秒。
我每天都做很多RDP连接。 我节省了几个小时,不盯着消息:“保护远程连接”:) +1禁用certif.service!