安装 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。

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值