尝试在https:// *前缀URL上发送任何请求时出错

时间:2019-05-27 10:23:35

标签: c# asp.net ssl-certificate

当我尝试获取HttpWebRequest的响应时,显示的主要错误如下。使用ASP.NET Core 2.2,也已尝试使用2.1。

 - Win32Exception: An unknown error occurred while processing the
   certificate
 - AuthenticationException: Authentication failed, see inner exception. 
   System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken
   message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo
   exception)
 - HttpRequestException: The SSL connection could not be established, see 
   inner exception.
 - WebException: The SSL connection could not be established, see inner 
   exception.

我尝试访问的HTTPS URL属于第三方,我们根据请求创建了证书签名请求,我们从该第三方获得了必需的证书。成功获得证书后,我们尝试绑定给定的URL,同时绑定手动提供的证书。 一种。通过将证书保存在同一目录中并导入 b。首先将其导入证书存储区,然后从那里读取

我已确保已在调试模式下正确读取证书。它甚至与请求一起附加;我也确信这一点。

我也尝试了其他几种选择;所有这些都包括以一种或另一种方式发送请求。更具体地说,我仅尝试使用WebRequest(在代码示例中)HttpWebRequest,HttpClient等。

        string host = "https://*********************";            
        string cert = @"D:\*******.pfx";
        string passKey = @"************";

        X509Certificate2Collection certificates = new 
        X509Certificate2Collection();
        certificates.Import(cert, passKey, 
        X509KeyStorageFlags.MachineKeySet | 
        X509KeyStorageFlags.PersistKeySet);

        ServicePointManager.ServerCertificateValidationCallback = (a, b, 
        c, d) => true;

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host);
        request.Headers.Add("X-API-ApplicationId", "************");
        request.Headers.Add("X-API-Version", "************");
        request.AllowAutoRedirect = true;
        request.ClientCertificates = certificates;
        request.Method = "POST";


        WebResponse response = request.GetResponse();

        Stream stream = response.GetResponseStream();
        using (StreamReader reader = new StreamReader(stream))
        {
            string line = reader.ReadLine();
            while (line != null)
            {
                Console.WriteLine(line);
                line = reader.ReadLine();
            }
        }
        stream.Close();

AuthenticationException: Authentication failed, see inner exception.
System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception)
System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
System.Net.Security.SslState.StartSendBlob(byte[] incoming, int count, AsyncProtocolRequest asyncRequest)
System.Net.Security.SslState.ProcessReceivedBlob(byte[] buffer, int count, AsyncProtocolRequest asyncRequest)
System.Net.Security.SslState.StartReadFrame(byte[] buffer, int readBytes, AsyncProtocolRequest asyncRequest)
System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest)
System.Net.Security.SslState.ThrowIfExceptional()
System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult)
System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result)
System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult)
System.Net.Security.SslStream+<>c.<AuthenticateAsClientAsync>b__47_1(IAsyncResult iar)
System.Threading.Tasks.TaskFactory<TResult>.FromAsyncCoreLogic(IAsyncResult iar, Func<IAsyncResult, TResult> endFunction, Action<IAsyncResult> endAction, Task<TResult> promise, bool requiresSynchronization)
System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)

HttpRequestException: The SSL connection could not be established, see inner exception.
System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)
System.Threading.Tasks.ValueTask<TResult>.get_Result()
System.Net.Http.HttpConnectionPool.CreateConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
System.Threading.Tasks.ValueTask<TResult>.get_Result()
System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync(ValueTask<ValueTuple<HttpConnection, HttpResponseMessage>> creationTask)
System.Threading.Tasks.ValueTask<TResult>.get_Result()
System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, bool doRequestAuth, CancellationToken cancellationToken)
System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(Task<HttpResponseMessage> sendTask, HttpRequestMessage request, CancellationTokenSource cts, bool disposeCts)
System.Net.HttpWebRequest.SendRequest()
System.Net.HttpWebRequest.GetResponse()

WebException: The SSL connection could not be established, see inner exception. Authentication failed, see inner exception.
System.Net.HttpWebRequest.GetResponse()
WebApplication1.httpsSendRequest.TryHttpsConn() in httpsSendRequest.cs
+
            WebResponse response = request.GetResponse();
WebApplication1.Controllers.ValuesController.GetTestHttps() in ValuesController.cs
+
            return await httpsSendRequest.TryHttpsConn();
lambda_method(Closure , object )
Microsoft.Extensions.Internal.ObjectMethodExecutorAwaitable+Awaiter.GetResult()
Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor+AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, object controller, object[] arguments)
System.Threading.Tasks.ValueTask<TResult>.get_Result()
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync()
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()
Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

以下是我尝试使用安装了证书的google chrome访问URL时遇到的错误。 该网站无法提供安全的连接***********。com不接受您的登录证书,或者可能没有提供该证书。 尝试联系系统管理员。 ERR_BAD_SSL_CLIENT_AUTH_CERT

在保持SSL握手有效的情况下进行任何变通。

0 个答案:

没有答案