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


73

我正在从Visual Studio 2015发布我的ASP.NET 5 MVC6项目。我已经从服务器导入了发布配置文件。连接成功验证,但是在发布项目时出现以下错误:

ERROR_CERTIFICATE_VALIDATION_FAILED

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

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


请清洁并验证连接,然后重试。如果之前已经可以使用,它将可以正常工作

Answers:


107

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

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

在撰写本文时,生成的powershell脚本忽略了AllowUntrustedCertificate可能是错误的属性,因此需要将其设置为False

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

作为附带说明,您还可以通过在本地“信任”服务器的证书来解决此问题。


1
谢谢你,先生。它解决了我原来的问题,但现在又出现另一个错误:ERROR_USER_UNAUTHORIZED。“ Web部署任务失败。(已使用Web管理服务连接到远程计算机(XXXX),但无法授权。”凭据正确,我认为这是权限问题。能否给我一些解决方法的见解?新错误?
koryakinp

用户是服务器的管理员吗?
Dealdiane

是。用户是服务器的管理员。
koryakinp

恐怕变量太多,很难将其缩小到特定的范围。通常,如果用户是管理员,则“它正常工作”。我建议您再提出一个问题。请提供尽可能多的详细信息,也许更熟悉该错误的人可以帮助您更好地进行工作。也检查一下。向下滚动到底部,并确保您不要错过以下部分:“
麻烦解决

您可以链接到一些有关在本地“信任”服务器的信息吗?
塞吉·萨根

36

对于dot net core 1.0,您必须添加标签

 <AllowUntrustedCertificate>True</AllowUntrustedCertificate>

在.pubxml文件中发布配置文件


17

我有,<UsePowerShell>True</UsePowerShell>但是仍然由于证书错误而失败。

  • 我在设置对话框中重新输入了密码,但仍然失败
  • 单击验证连接后,它便开始工作。

发布设置对话框

注意

  • VS 2017(15.2)
  • 我的密码最近更改了
  • 作为测试,输入了错误的密码后,我得到了证书错误,因此该证书错误显然不只是不受信任的证书。

2
刚来这里发布相同的解决方案。打开发布设置对话框,通过单击“验证连接”重新验证连接,重新保存配置文件,然后再次单击部署-这使我每次都通过了证书颁发,但是每次重新启动VS时都必须这样做-可能是错误。
Levi Fuller

当然感觉像是个虫子!感谢您的来信@LeviFuller
spottedmahn

1
辉煌!这也对我有用。是的,它似乎是一个错误:developercommunity.visualstudio.com/content/problem/64779/…–
pcdev

据说这已在VS 2017 Update 3中修复。感谢链接@pcdev
spottedmahn 17/08/23

第二次开发社区问题报告:发布Web应用程序->无法验证服务器的证书。他们说它在15.5中已修复,但在16.1.0 Preview 3中仍然存在问题。
spottedmahn '19

13

对我来说,该解决方案在发布配置文件xml中花了4行。

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

UseMsDeployExe改变了错误忽略证书,但无法验证用户,因此需要用户,并通过(机器要部署到)

在Powershell脚本中无需更改。


1
经过数千次搜索和尝试后,该版本才对我有用。
艾琳娜

1
在VS 2017.2中,这是唯一对我有用的东西。
迪伦

1
使用这里面的作品后,我找到一种方式来获得它不存储在XML配置文件明文密码的工作,请参阅:stackoverflow.com/questions/33659696/...
ArieKanarie

使用Web api2。无需在profile.xml中存储密码。UseMsDeployExe是关键。我更喜欢在发布时在窗口提示中键入它。谢谢。
胡安R

1
我花了几天时间解决这个问题,这是我发现解决该问题的唯一方法。
ccoutinho

1

更新资料

稍加观察,在VS2015或VS2017社区上将.net核心应用程序部署到远程IIS服务器时,请使用此方法

<UsePowerShell>True</UsePowerShell> 

<UsePowerShell>False</UsePowerShell>

发现部署已成功完成,但是没有文件复制到服务器,直到将标记更改为true为止。

我希望这可以帮助别人。


1
这里似乎有矛盾。您首先说要将该标志设置为true,然后说什么都不会复制,除非该标志为false。你能澄清一下吗?
crthompson

感谢您的观察@paqogomez。请使用<UsePowerShell> True </ UsePowerShell>。我的评论中的最后一句话是错字。再次感谢
Daniel Adigun


0

另一个解决方案

我在远程IIS上创建了发布设置,并将其导入了Visual Studio 2017(15.2)中。在此之后,我改变了URL指定站点名称作为IIS用户只能访问特定的网站(感谢这个答案的SO)。我已经通过UI输入了凭据,因此无需在配置文件中存储密码。

我的个人资料如下:

<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> 由于我的计算机上不信任自签名证书,因此需要。

使用此配置文件,将根据IIS中的设置进行备份,该过程完成后,将更新站点并在我的浏览器中打开它:-)

尽管这里的所有其他答案也可以使它起作用,但我认为最好以这种方式共享,因为它只涉及一些更改(AllowUntrustedCertificate)并且不存储普通密码。


0

也是另一种解决方案

在VS2019中部署Azure Web作业时遇到了相同的问题。在这里查看我的答案以获取更多详细信息。


0

对于VS 2019中的dotnet 3.1.0,只需转到“编辑”配置文件->验证连接->接受证书并完成


是的,但这似乎不是永久性的解决方案。它仅适用于当前会话。
Bozhidar Stoyneff,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.