从Visual Studio 2015发布 – 允许不受信任的证书

我从Visual Studio 2015发布我的ASP.NET 5 MVC6项目。我从我的服务器导入发布configuration文件。 连接validation成功,但是当我发布我的项目时,我有以下错误:

ERROR_CERTIFICATE_VALIDATION_FAILED

使用指定的进程(“Webpipe理服务”)连接到远程计算机(“XXXXXXXXX”),但无法validation服务器的证书。 如果您信任该服务器,请再次连接并允许不受信任的证书。

在发布设置中没有允许不受信任的证书的选项。

当前工具中尚不支持允许不可信证书的选项。 希望这个很快就会更新。 但是,您可以手动设置。

  1. 在文本编辑器中打开/ Properties / PublishProfiles内的发布configuration文件( .pubxml
  2. <PropertyGroup>元素中,将AllowUntrustedCertificate设置为True( <AllowUntrustedCertificate>True</AllowUntrustedCertificate> ),如果不存在则添加
  3. 将UsePowerShell设置为False( <UsePowerShell>False</UsePowerShell> )。

在写这篇文章的时候,生成的powershell脚本忽略了AllowUntrustedCertificate属性,这可能是一个bug,因此需要将其设置为False

如果更新 .ps1文件中的模块版本 ,则可以使PowerShell工作。

另外,还可以通过本地“信任”服务器证书来解决此问题。

对于networking核心1.0,你必须添加标签

  <AllowUntrustedCertificate>True</AllowUntrustedCertificate> 

在.pubxml文件中发布configuration文件

对我来说,该解决scheme在发布configuration文件xml中占用了4行。

 <AllowUntrustedCertificate>True</AllowUntrustedCertificate> <UseMsDeployExe>true</UseMsDeployExe> <UserName>myuser</UserName> <Password>mypass</Password> 

UseMsDeployExe更改错误以忽略证书,但不validation用户,因此需要用户和(您正在部署的计算机的)

在powershell脚本中不需要更改。

我有<UsePowerShell>True</UsePowerShell>但它仍然与证书错误失败。

  • 我在设置对话框中重新input密码,但仍然失败
  • 一旦我点击validation连接,它开始工作。

发布设置对话框

注意

  • VS 2017(15.2)
  • 我的密码最近改变了
  • 作为一个testing,input了错误的密码,我得到了证书错误,所以证书错误显然不只是一个不可信的证书

更新

稍微观察一下,在VS2015或VS2017社区上部署.net核心应用程序时,请使用此远程IIS服务器

 <UsePowerShell>True</UsePowerShell> 

 <UsePowerShell>False</UsePowerShell> 

发现部署完成成功,但没有文件被复制到服务器,直到我将标签更改为true

我希望这可以帮助别人。

又一个解决scheme

我在远程IIS上创build了发布设置,并在Visual Studio 2017(15.2)中导入了它们。 之后,我改变了URL来指定sitename,因为IIS用户只能访问特定的站点(感谢这个答案)。 我已经通过用户界面input了凭据,不需要在configuration文件中存储密码。

我的资料看起来像:

 <WebPublishMethod>MSDeploy</WebPublishMethod> <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration> <LastUsedPlatform>Any CPU</LastUsedPlatform> <SiteUrlToLaunchAfterPublish>https://some.site.com:443/</SiteUrlToLaunchAfterPublish> <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish> <ExcludeApp_Data>False</ExcludeApp_Data> <PublishFramework>netcoreapp1.1</PublishFramework> <ProjectGuid>eecf975e-f2e6-440f-bfd6-a0a63c25e3c3</ProjectGuid> <MSDeployServiceURL>https://url.toourserver.com:8172/msdeploy.axd?site=some.site.com</MSDeployServiceURL> <DeployIisAppPath>some.site.com</DeployIisAppPath> <RemoteSitePhysicalPath /> <SkipExtraFilesOnServer>True</SkipExtraFilesOnServer> <MSDeployPublishMethod>WMSVC</MSDeployPublishMethod> <EnableMSDeployBackup>True</EnableMSDeployBackup> <UserName>IISUserName</UserName> <AllowUntrustedCertificate>True</AllowUntrustedCertificate> <_SavePWD>True</_SavePWD> 

由于自签名证书在我的机器上不受信任,所以需要<AllowUntrustedCertificate>

使用此configuration文件根据IIS中的设置进行备份,当进程完成时,站点将更新并在浏览器中打开:-)

虽然所有其他的答案也使这个工作,我认为这将是很好的共享这种方式,因为它只涉及一些变化(AllowUntrustedCertificate),并没有存储普通的密码。