0

I've upgraded solution from 2.2 to 3.1. It consists of several projects (APIs). They all use Kestrel and HTTPS. After the upgrade I cannot call one service from another (by using HttpClient) and I cannot reroute them by using Ocelot, when i run things locally on localhost. In both cases I'm getting the same error:

Failed to authenticate HTTPS connection.
System.IO.IOException: Authentication failed because the remote party has closed the transport stream.
   at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslStream.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslStream.ProcessAuthentication(LazyAsyncResult lazyResult, CancellationToken cancellationToken)
   at System.Net.Security.SslStream.BeginAuthenticateAsServer(SslServerAuthenticationOptions sslServerAuthenticationOptions, CancellationToken cancellationToken, AsyncCallback asyncCallback, Object asyncState)
   at System.Net.Security.SslStream.<>c.<AuthenticateAsServerAsync>b__69_0(SslServerAuthenticationOptions arg1, CancellationToken arg2, AsyncCallback callback, Object state)
   at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl[TArg1,TArg2](Func`5 beginMethod, Func`2 endFunction, Action`1 endAction, TArg1 arg1, TArg2 arg2, Object state, TaskCreationOptions creationOptions)
   at System.Threading.Tasks.TaskFactory.FromAsync[TArg1,TArg2](Func`5 beginMethod, Action`1 endMethod, TArg1 arg1, TArg2 arg2, Object state, TaskCreationOptions creationOptions)
   at System.Threading.Tasks.TaskFactory.FromAsync[TArg1,TArg2](Func`5 beginMethod, Action`1 endMethod, TArg1 arg1, TArg2 arg2, Object state)
   at System.Net.Security.SslStream.AuthenticateAsServerAsync(SslServerAuthenticationOptions sslServerAuthenticationOptions, CancellationToken cancellationToken)
   at Microsoft.AspNetCore.Server.Kestrel.Https.Internal.HttpsConnectionMiddleware.InnerOnConnectionAsync(ConnectionContext context)

When I call each API from postman, it is working. Furthermore when I set verything to HTTP I'm getting the same error.

Sample code(returns 403 Forbidden):

HttpClient client = new HttpClient();
HttpResponseMessage response = await client.GetAsync("https://localhost:5004/version");
if (response.IsSuccessStatusCode)
{
      serviceVersion = await response.Content.ReadAsStringAsync();
}
draxtor
  • 104
  • 6
  • Possibly a TLS 1.2 issue, as per https://stackoverflow.com/a/53056328/1538039? Worth double checking. – Dylan Morley Aug 17 '20 at 16:38
  • I've checked that first, no luck. What's unusual when I create new projects using 3.1 it is working. It is not working only for migrated projects from 2.2. I saw that there were issues for MacOS after upgrade from 2.2 with same error but that didn't help me. – draxtor Aug 17 '20 at 19:03

0 Answers0