安装 VS2012/2013 完成时报错“无法建立到信任根颁发机构的证书链”

问题

  在没有接互联网的 Win7/2008 R2 系统上安装 VS2012/2013,安装完成时提示:

安装已完成。
但是,并非所有功能均已正确安装。

  下面列出错误都是类似这样:

Microsoft SQL Server 2012 管理对象(x64)
无法建立到信任根颁发机构的证书链。
……

分析

  经过 Google 之后,查到微软知识库文章 KB2746268 。它解释这个错误是因为 VS 的安装包中有些组件的数字签名所对应的根证书没有安装。
  
  微软现在自己的软件安装时都要强制检查数字签名的,数字签名验不过组件是装不上的(话说如果苹果也这么搞,就没有 XCodeGhost 了),所以之前安装的 VS 其实缺了很多组件。
  
  在 WinXP 时代,根证书更新是以安全更新的方式提供的,可以直接从 Windows Update Catelog 网站下载。但是 Vista 开始,微软选择了一种独立的自动更新证书列表(CTL)的方案,即使禁用了 Windows Updates,照样能够每天更新根证书和吊销列表。对于断网的计算机,微软知识库 KB931125 提供了部署 CTL 更新的方法。
    

解决过程

  这里只写个人版的解决方法,Server 版系统请自行参看 KB931125。

1、先在可以访问 Internet 的电脑上,安装证书管理工具:

  • 对于 Windows Server 2008 R2、Windows Server 2008、Windows 7 或 Windows Vista,请应用 Microsoft 知识库中文档 2677070 内列出的相应更新。
  • 对于 Windows Server 2012、Windows Server 2008 R2、Windows Server 2008、Windows 8、Windows 7 或 Windows Vista,请应用 Microsoft 知识库中文档 2813430 内列出的相应更新。

2、建一个文件夹用于存放证书更新(比如 D:\CTLUpdates),然后在命令行下执行:

Certutil -syncWithWU D:\CTLUpdates

等一会儿,证书就同步完成了。

3、把上面的证书列表文件夹打包拷贝到断网的计算机上,解压到 D:\CTLUpdates 目录。

4、创建新的管理模板。方法是把下面的内容保存为一个文本文件:

CLASS MACHINE
CATEGORY !!SystemCertificates
    KEYNAME"Software\Microsoft\SystemCertificates\AuthRoot\AutoUpdate"
    POLICY !!RootDirURL
       EXPLAIN !!RootDirURL_help
       PART !!RootDirURL EDITTEXT
             VALUENAME "RootDirURL"
       END PART
    END POLICY
END CATEGORY
[strings]
RootDirURL="URL address to be used instead of default ctldl.windowsupdate.com"
RootDirURL_help="Enter a FILE or HTTP URL to use as the download location of the CTL files."
SystemCertificates="Windows AutoUpdate Settings"

  将文件改名为 RootDirURL.adm。

5、按 Win+R,输入 gpedit.msc 回车,打开组策略编辑器。依次展开“计算机配置”->“策略”,右击“管理模板”,然后单击“添加/删除模板”。
  在“添加/删除模板”中单击“添加”。在“策略模板”对话框中,选择你前面保存的 .adm 模板。 单击“打开”,然后单击“关闭”。
  在导航窗格中,依次展开“管理模板”->“经典管理模板(ADM)”。
  单击“Windows AutoUpdate Settings”,然后在详细信息窗格中,双击“URL address to be used instead of default ctldl.windowsupdate.com”。
  选择“已启用”。 在“选项”部分中,输入前面包含 CTL 更新的路径(注意格式):file://D:\CTLUpdates(也可以是 HTTP 服务器或者 Windows 文件共享地址。例如 http://server1/CTL 或 file://\\server1\CTL) 。 单击“确定”。 关闭“组策略管理编辑器”。(其实组策略的确比直接修改注册表来得好用呢。)

6、重新启动。或者在命令行(管理员权限)下运行 gpupdate /force 应用组策略。

7、打开控制面板,在“程序与功能”里选择“Visual Studio 2012 xxxxx版”或者“Visual Studio 2013 xxxxx版”的条目,单击“修改”。然后选择“修复”以修复 VS。

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

辰岡墨竹

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值