由于无效证书,无法安装Microsoft Visual Studio 2017安装程序项目。

6

我一直在尝试安装Microsoft Visual Studio 2017 Installer Projects以供使用VS 2017 Professional,但一直未能成功。首先,我尝试通过VS2017中的“扩展和更新”向导进行安装。它可以正确下载,但当我关闭VS以启动安装时,它立即失败,并显示以下错误:

VSIX Error

我随后从Visual Studio Marketplace中获取了VSIX,并尝试通过以下命令行安装它: VSIXInstaller InstallerProjects.vsix 这似乎让我更进一步,但也提示了证书是问题所在。注意它说“数字签名:无效证书”。

Digital Signature: Invalid Certificate

在继续安装后点击后,它失败了并允许我查看日志:

VSIX Command Line Install Fail

日志似乎在这里回显了证书问题:

10/17/2017 1:11:21 PM - Signature Details...
10/17/2017 1:11:21 PM -     Extension is signed with an invalid certificate
10/17/2017 1:11:21 PM -         (PartialChain)      : A certificate chain could not be built to a trusted root authority.
10/17/2017 1:11:21 PM -         (RevocationStatusUnknown): The revocation function was unable to check revocation for the certificate.
10/17/2017 1:11:21 PM -         (OfflineRevocation) : The revocation function was unable to check revocation because the revocation server was offline.

这里:

10/17/2017 1:15:30 PM - Certificate is invalid: InstallerProjects.vsix
10/17/2017 1:15:36 PM - Skipping Install of 'VSInstallerProjects,version=0.8.4' since downloading it failed.
10/17/2017 1:15:36 PM - Skipping cache of package 'VSInstallerProjects,version=0.8.4' since the package or a parent package had a vital failure.
10/17/2017 1:15:36 PM - Skipping cache of package 'Component.VSInstallerProjects,version=0.8.4' since the package or a parent package had a vital failure.
10/17/2017 1:15:47 PM - Install Error : Microsoft.VisualStudio.Setup.PackageFailureException: Package 'VSInstallerProjects' failed to download
   at Microsoft.VisualStudio.Setup.InstallOperation.Run(CancellationToken token)
   at Microsoft.VisualStudio.Setup.Engine.RunOperation(InstallOperation installOperation, CancellationToken token, ExecuteAction action, ITelemetryOperation telemetryOperation)
   at Microsoft.VisualStudio.Setup.Engine.RunCoreOperation(InstallOperation coreOperation, ExecuteAction action, ITelemetryOperation telemetryOperation, CancellationToken token)
   at Microsoft.VisualStudio.Setup.Engine.Install(Product product, String destination, CancellationToken token)
   at Microsoft.VisualStudio.ExtensionManager.ExtensionEngineImpl.PerformSetupEngineInstall(InstallableExtensionImpl extension, Boolean installPerMachine, Boolean isPackComponent, IDictionary`2 extensionsInstalledSoFar, List`1 extensionsUninstalledSoFar, IInstalledExtensionList modifiedInstalledExtensionsList, IProgress`1 progress, InstallFlags installFlags, AsyncOperation asyncOp, Version targetedVsVersion, IInstalledExtension& newExtension)
   at Microsoft.VisualStudio.ExtensionManager.ExtensionEngineImpl.InstallInternal(InstallableExtensionImpl extension, InstallFlags installFlags, IDictionary`2 extensionsInstalledSoFar, List`1 extensionsUninstalledSoFar, IInstalledExtensionList modifiedInstalledExtensionsList, AsyncOperation asyncOp, IProgress`1 progress, Version targetedVsVersion)
   at Microsoft.VisualStudio.ExtensionManager.ExtensionEngineImpl.BeginInstall(IInstallableExtension installableExtension, InstallFlags installFlags, AsyncOperation asyncOp, Version targetedVsVersion)
   at Microsoft.VisualStudio.ExtensionManager.ExtensionEngineImpl.InstallWorker(IInstallableExtension extension, InstallFlags installFlags, AsyncOperation asyncOp)

任何想法关于可能正在发生的事情?

在日志中,您有: 10/17/2017 1:11:21 PM - (RevocationStatusUnknown):撤销功能无法检查证书的吊销状态。 10/17/2017 1:11:21 PM - (OfflineRevocation):由于吊销服务器离线,撤销功能无法检查吊销状态。这不会暗示防火墙、代理或其他手段已经阻止安装程序验证证书,因此它可能具有一些内部指令来停止安装吗? - Alan Warden
这是非常可能的,因为我的工作有一些相当严格的代理/防火墙规则... 问题在于,我安装VS2017的Windows 7机器似乎没有这个问题。只有在Windows 10机器上构建时才会出现这个问题。是否有任何组策略级别/Windows构建级别的东西也可能会对此有所贡献? - Hershizer33
这个有帮助吗?https://dev59.com/no_ea4cB1Zd3GeqPKCLm? - Tarun Lalwani
4个回答

4
因为吊销服务器离线了。
它并没有离线,而是无法联系上。在证书能够被信任之前,安装程序必须先联系CRL服务器。该服务器由证书颁发机构维护,这也是你自己购买证书时支付的服务之一。证书吊销列表服务器会保留一份被证明是伪造的证书列表。但现在出现了问题,这是一个非常严重的问题,长期来看可能会危及计算机的安全。而且在第一次联系时就失败了,VSIX安装程序会恰当地拒绝安装。
这里有一篇TechNet文章,提供故障排除提示(链接)。IT工作人员需要知道他们正在维护不安全的机器,并且很可能是导致此问题的责任方。

这很有帮助,但超出了我的专业知识范围,所以我希望您不介意我问几个问题。这是在操作系统级别控制的吗?我之所以问,是因为我们的Win7版本没有这些问题,因为VS 2017安装程序项目扩展可以在那里正常安装。我们的Win10版本是新的,还没有投入生产(我是测试用户)。我能向他们询问Win10版本中可能与Win7版本不同导致此问题的内容吗? - Hershizer33
1
防止应用程序联系互联网URL是反恶意软件、防火墙和代理服务器的领域。 "尚未投入生产"是一个警示信号,IT工作人员可能需要做一些不可言说的事情来设置机器以与公司的基础设施配合工作。比如配置适当的代理服务器。请问他们而不是我,他们知道事实。 - Hans Passant
1
抱歉,我并不是想暗示您可能已经了解了我们的设置,我只是想问一下您是否知道应该检查哪个URL被阻止了。此外,如果这是代理/防火墙问题,我不确定这能解释为什么它在Win7版本上可以工作但在Win10上不能,因为它们都使用相同的防火墙。 - Hershizer33
1
SysInternals的TcpView实用程序提供了洞察力,您将看到安装程序试图联系CRL服务器。这只是一种诊断方法,它并不能解决任何问题。一个长期存在的Win7机器能够正常工作并不神秘。 - Hans Passant
好的,使用TcpView后,似乎问题与一个月前他们修补的关于VS2017安装程序不尊重代理的已知问题类似(https://developercommunity.visualstudio.com/content/problem/8157/visual-studio-installer-update-fails-behind-proxy.html)。 VSIX安装程序是否存在相同的问题? TcpViewer显示a23-75-215-142.deploy.static.akamaitechnologies.coma23-72-136-66.deploy.static.akamaitechnologies.com都尝试直接连接并且没有遵守代理,因此被代理阻止了。 - Hershizer33

2
经过许多努力解决这个问题后,我们在联网的计算机上安装了这个软件包以查看安装了什么。无论如何,请按照以下文章https://learn.microsoft.com/en-us/visualstudio/install/install-certificates-for-visual-studio-offline进行操作以安装所需的证书。这样做后,我们意识到还缺少一个证书!Microsoft Code Signing PCA 2010。安装完所有证书后,请导出它们并在离线计算机上安装。这个解决方案对我们起作用了。

0
在Windows 10中,我相信有应用程序设置来决定是否可以安装由未知签名等签署的应用程序。您是否检查过这些设置,以确保它们没有被锁定只允许从Microsoft应用商店安装?我认为这适用于此情况:

https://technet.microsoft.com/en-us/library/ee619754%28v=ws.10%29.aspx

我也遇到过一些问题,其中一个特定的AD用户上有旧的证书链卡住了,通过清除一些证书并重试,我成功地解决了这些问题。

我还建议在安装时禁用任何防病毒软件等。

这个线程似乎很相关,但我不会首先使用禁用CRLF revcheck的第一个建议,而是尝试一些后面的评论。

https://social.technet.microsoft.com/Forums/windowsserver/en-US/348a9b8d-8583-488c-9a96-42b892c4ae77/revocation-server-offline?forum=winserversecurity


0

如果在使用Visual Studio时遇到证书验证问题,可能是证书已过期。

以下是如何使用Windows Update和certutil将您的证书与Windows 10同步的方法。这些命令需要在Powershell中运行。

mkdir c:\certs #temporary folder where the certificates will be installed/updated
cd c:\certs 
certutil.exe -generateSSTFromWU roots.sst
$sstStore = ( Get-ChildItem -Path C:\certs\roots.sst )
$sstStore | Import-Certificate -CertStoreLocation Cert:\LocalMachine\Root

我在安装Votive(Windows Installer XML / Wix Visual Studio扩展)时遇到了崩溃,因为证书在我的计算机上未经验证。原因是一个证书已经过期了。如果您只想安装单个证书,可以在MMC中打开SST文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接