【问题标题】:Publishing from Visual Studio 2015 - allow untrusted certificates从 Visual Studio 2015 发布 - 允许不受信任的证书
【发布时间】:2016-02-13 02:00:57
【问题描述】:

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

ERROR_CERTIFICATE_VALIDATION_FAILED

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

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

【问题讨论】:

  • 只需清理并验证连接,然后重试。如果它之前工作过,它会工作

标签: .net ssl visual-studio-2015 publish asp.net-core


【解决方案1】:

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

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

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

如果你在.ps1 文件中update the module version,你可以让powershell 工作。

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

【讨论】:

  • 谢谢先生。它解决了我最初的问题,但现在我有另一个错误:ERROR_USER_UNAUTHORIZED。 “Web部署任务失败。(使用Web管理服务连接到远程计算机(XXXX),但无法授权。”凭据正确,我认为是权限问题。你能给我一些关于如何解决的见解吗?新错误?
  • 用户是服务器的管理员吗?
  • 是的。用户是服务器的管理员。
  • 恐怕变量太多了,很难将其缩小到特定的范围。通常,如果用户是管理员,“它就可以工作”。我建议您创建另一个问题。提供尽可能多的细节,也许更熟悉该错误的人可以加入并更好地帮助您。检查this。向下滚动到底部,确保您不会错过以下部分:“疑难解答常见问题”
  • 你能链接到一些关于“信任”本地服务器的信息吗?
【解决方案2】:

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

 <AllowUntrustedCertificate>True</AllowUntrustedCertificate>

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

【讨论】:

    【解决方案3】:

    对我来说,解决方案在发布配置文件 xml 中占用了 4 行代码。

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

    UseMsDeployExe 将错误更改为忽略证书,但不对用户进行身份验证,因此需要用户并通过(您要部署到的机器)

    不需要对 powershell 脚本进行任何更改。

    【讨论】:

    • 经过数千次搜索和尝试后,这个版本对我有用。
    • 在 VS 2017.2 中,这是唯一对我有用的东西。
    • 在使用这个有效的方法后,我找到了一种方法来让它工作,而无需在配置文件 xml 中以纯文本形式存储密码,请参阅:stackoverflow.com/questions/33659696/…
    • 使用 web api 2. 无需在 profile.xml 中存储密码。 UseMsDeployExe 是关键。我更喜欢在发布时在窗口提示中键入它。谢谢。
    • 我花了几天时间解决这个问题,这是我找到解决问题的唯一方法。
    【解决方案4】:

    我有&lt;UsePowerShell&gt;True&lt;/UsePowerShell&gt;,但它仍然因证书错误而失败。

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

    注意

    • VS 2017 (15.2)
    • 我的密码最近更改了
    • 作为测试,输入了错误密码,我得到了证书错误,所以证书错误显然不仅仅是一个不受信任的证书

    【讨论】:

    • 刚刚来到这里发布相同的解决方案。打开发布设置对话框,通过单击“验证连接”重新验证连接,重新保存配置文件,然后再次单击部署 - 这让我每次都通过证书问题,但我每次重新启动 VS 时都必须这样做- 可能是一个错误。
    • 这确实感觉像是一个错误!感谢@LeviFuller 的留言
    • 太棒了!这也适用于我。是的,这似乎是一个错误:developercommunity.visualstudio.com/content/problem/64779/…
    • 据说这已在 VS 2017 Update 3 中修复。感谢@pcdev 的链接
    • 第二次开发社区问题报告:Publish Web App -> could not verify the server’s certificate。他们说它已在 15.5 中修复,但我在 16.1.0 预览版 3 中仍然存在问题?。
    【解决方案5】:

    更新

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

    <UsePowerShell>True</UsePowerShell> 
    

    不是

    <UsePowerShell>False</UsePowerShell>
    

    发现部署成功完成,但在我将标记更改为 true 之前,没有文件被复制到服务器。

    我希望这对某人有所帮助。

    【讨论】:

    • 这里似乎有矛盾。您说首先将标志设置为真,然后说除非标志为假,否则不会复制任何内容。你能澄清一下吗?
    • 感谢@paqogomez 的观察。请使用 True 。我评论中的最后一句话是一个错字。再次感谢
    【解决方案6】:

    将此行添加到您的发布配置文件中,该配置文件存在于附件图片中的路径中

    <AllowUntrustedCertificate>True</AllowUntrustedCertificate>
    

    【讨论】:

    • 感谢您的屏幕截图,我想知道属性在哪里
    【解决方案7】:

    另一种解决方案

    我在远程 IIS 上创建了发布设置,并将它们导入 Visual Studio 2017 (15.2)。 之后,我更改了 URL 以指定站点名称,因为 IIS 用户只能访问特定站点(感谢this 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>
    

    需要&lt;AllowUntrustedCertificate&gt;,因为自签名证书在我的机器上不受信任。

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

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

    【讨论】:

      【解决方案8】:

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

      【讨论】:

      • 是的,但这似乎不是一个永久的解决方案;它仅适用于当前会话。
      【解决方案9】:

      导入或创建配置文件后单击配置,然后验证连接。输入密码并完成设置。现在部署。

      【讨论】:

        【解决方案10】:

        另一种解决方案

        我在 VS2019 中部署 Azure Web Jobs 时遇到了同样的问题。查看我的回答here了解更多详情。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-10-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-13
          • 1970-01-01
          相关资源
          最近更新 更多