当我尝试获取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握手有效的情况下进行任何变通。