从Visual Studio 2015发布 – 允许不受信任的证书
我从Visual Studio 2015发布我的ASP.NET 5 MVC6项目。我从我的服务器导入发布configuration文件。 连接validation成功,但是当我发布我的项目时,我有以下错误:
ERROR_CERTIFICATE_VALIDATION_FAILED
使用指定的进程(“Webpipe理服务”)连接到远程计算机(“XXXXXXXXX”),但无法validation服务器的证书。 如果您信任该服务器,请再次连接并允许不受信任的证书。
在发布设置中没有允许不受信任的证书的选项。
当前工具中尚不支持允许不可信证书的选项。 希望这个很快就会更新。 但是,您可以手动设置。
- 在文本编辑器中打开/ Properties / PublishProfiles内的发布configuration文件(
.pubxml
) - 在
<PropertyGroup>
元素中,将AllowUntrustedCertificate设置为True(<AllowUntrustedCertificate>True</AllowUntrustedCertificate>
),如果不存在则添加 - 将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),并没有存储普通的密码。