无法在WebApp和WebApi(Asp Core 3.1)之间建立SSL连接

问题描述 投票:1回答:1

我编写了一个ASP.NET Core 3.1 MVC Web应用程序。这是一个前端,它调用Web API后端。

该应用程序在开发和登台时均能完美运行。

我无法在生产环境中使用它:Web API似乎不错,我可以从浏览器或邮递员中调用它。

但是我无法通过网络应用程序访问它。这是尝试拨打电话时日志中的错误:

信息:System.Net.Http.HttpClient.IApiClient.ClientHandler [100]正在发送HTTP请求GET https://webapi。****。it / inetApi / api / links

失败:Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware [1]

执行请求时发生未处理的异常。

System.Net.Http.HttpRequestException:无法建立SSL连接,请参阅内部异常。

System.IO.IOException:无法从传输连接中读取数据:现有连接已被远程主机强行关闭。

System.Net.Sockets.SocketException(10054):现有连接被远程主机强行关闭。

-内部异常堆栈跟踪的结尾---

登台和生产都是带有IIS10 Web服务器的Windows Server 2019计算机。

分期有一个网站,Web API和Web应用程序均作为应用程序运行:

Web-t.****.it/inetApi
Web-t.****.it/inetW

Production VM有两个网站,一个应该用于内部Web应用程序,另一个应该用于API:

webapi.****.it/inetApi
intranet.****.it/inetW

我们从头开始制作了这个虚拟机,它是新的,上面没有任何其他应用程序或网站。

我已经尝试将Web API应用程序移至该Web应用程序的同一网站,以查看是否可能是问题所在,但不是。

我试图在我的startup.cs中强制Web应用使用TLS作为安全协议,]:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;

但是它只会改变错误:

信息:System.Net.Http.HttpClient.IApiClient.ClientHandler [100]正在发送HTTP请求GET https://webapi。****。it / inetApi / api / links

失败:Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware [1]

执行请求时发生未处理的异常。

System.Net.Http.HttpRequestException:发送请求时发生错误。

System.Net.Http.WinHttpException(80072EFF,12030):调用WINHTTP_CALLBACK_STATUS_REQUEST_ERROR的错误12030,'与服务器的连接异常终止'。

在System.Threading.Tasks.RendezvousAwaitable`1.GetResult()在System.Net.Http.WinHttpHandler.StartRequestAsync(WinHttpRequestState状态)---内部异常堆栈跟踪的结尾---

因此,我尝试在暂存或开发过程中从Web应用程序调用生产Web API,并且可以正常工作。

然后,我尝试使用带有暂存Web API的Production上的Web应用程序,它也可以使用!

这真让我发疯。

就像生产中的所有东西都是单独工作,而不是一起工作。

我有拨款来完成我在VM上需要做的所有事情……但是我是一名开发人员(并且不太擅长处理系统),并且我不能向sysadmin寻求太多帮助,因为在这方面他们不堪重负。期。

有什么想法吗?

我编写了一个ASP.NET Core 3.1 MVC Web应用程序。这是一个前端,它调用Web API后端。该应用程序可以完美地在开发和登台上运行。我无法在生产环境中使用它:Web ...

ssl asp.net-web-api httpclient asp.net-core-3.1 iis-10
1个回答
0
投票

根据传输安全最佳实践,在建立SSL连接期间,尽可能不指定SSL版本。只需让操作系统决定SSL协议版本即可。https://docs.microsoft.com/en-us/dotnet/framework/network-programming/tls服务器端安装的SSL证书的验证过程可能有问题。如您所知,SSL通信需要客户端和服务器端之间的信任关系,因此,我想知道如何为WebAPI项目指定证书。您在客户端和服务器端之间建立了信任关系吗?即在客户端安装服务证书。为了解释它在开发和登台环境中如何正常工作,Http Get请求不代表某些内容,请尝试使用Http Post请求。此外,SSL协议需要DotNet框架/操作系统支持,请尝试安装高版本的DotNet框架。之后,如果有新消息,请随时告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.