相关疑难解决方法(0)

C#忽略证书错误?

在对远程Web服务的Web服务请求期间,我收到以下错误:

无法为SSL/TLS安全通道建立信任关系.---> System.Security.Authentication.AuthenticationException:根据验证程序,远程证书无效.

反正有没有忽略这个错误,并继续?

似乎远程证书没有签名.

我连接的网站是www.czebox.cz- 所以随时访问该网站,并注意甚至浏览器抛出安全例外.

.net c# ssl

147
推荐指数
8
解决办法
18万
查看次数

允许使用HttpClient的不受信任的SSL证书

我很难让我的Windows 8应用程序通过SSL与我的测试Web API进行通信.

似乎HttpClient/HttpClientHandler没有提供和选项来忽略WebRequest之类的不受信任的证书使你(尽管以"hacky"方式ServerCertificateValidationCallback).

任何帮助将非常感激!

.net c# windows-8 windows-runtime

95
推荐指数
10
解决办法
12万
查看次数

忽略错误的证书 - .NET CORE

我正在编写一个.NET Core应用程序来轮询远程服务器并在显示时传输数据.这在PHP中非常有效,因为PHP忽略了证书(这在浏览器中也是一个问题)但是我们想将它移到C#.NET CORE,因为这是系统中唯一剩下的PHP.

我们知道服务器很好,但由于各种原因,证书不会/不会很快更新.

请求使用HttpClient:

        HttpClient httpClient = new HttpClient();
        try
        {
            string url = "https://URLGoesHere.php";
            MyData md = new MyData();  // this is some data we need to pass as a json
            string postBody = JsonConvert.SerializeObject(md);
            httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));                
            HttpResponseMessage wcfResponse = await httpClient.PostAsync(url, new StringContent(postBody, Encoding.UTF8, "application/json"));
            Console.WriteLine(wcfResponse.Content);
        }
        catch (HttpRequestException hre)
        {
        // This exception is being triggered
        }
Run Code Online (Sandbox Code Playgroud)

研究过这个似乎普遍的建议是使用ServicePointManager,但这在.NET Core中不可用,而且我无法找到推荐的替代品.

有没有一种简单或更好的方法在.NET Core中执行此操作?

.net c# ignore ssl-certificate .net-core

15
推荐指数
3
解决办法
1万
查看次数

ASP.NET Core中的ServicePointManager

我正在尝试将现有的类库代码转换为.NET Core类库.在static构造函数中的代码中,我有以下内容:

ServicePointManager.DefaultConnectionLimit = 100;
ServicePointManager.Expect100Continue = false;
Run Code Online (Sandbox Code Playgroud)

我做了一些搜索,ServicePointManager在.NET Core中不再可用,WinHttpHandler现在应该使用(.net core中的ServicePointManager.DefaultConnectionLimit?).

我的问题是究竟是什么ServicePointManager以及正在设置的属性是什么?

WinHttpHandlerstatic作为ServicePointManager,所以我不得不创建一个实例来设置这些属性?我是否需要更改所有的http调用才能使用该实例?

.net-core asp.net-core asp.net-core-1.0

14
推荐指数
2
解决办法
9429
查看次数

无法建立SSL连接

我在ASP.NET核心应用程序中使用了第三方库(Splunk c#SDK)。我正在尝试通过此SDK连接到我的localhost Splunk服务,但出现异常消息:

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

内部异常说:

根据验证过程,远程证书无效。

该SDK在后台使用HTTP客户端,但是我无权访问此对象来配置HttpClientHandler。

我在Google上进行的所有搜索最终都使用ServicePointManager绕过了SSL验证,但是该解决方案在Asp.Net核心中不起作用。

ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
Run Code Online (Sandbox Code Playgroud)

有什么方法可以绕过ASP.NET Core中的验证吗?

c# httpclient .net-core asp.net-core splunk-sdk

6
推荐指数
8
解决办法
1万
查看次数

使用 signalR Core Client 忽略 SSL 错误

我正在制作一个应用程序,它涉及本地主机上的网站,作为带有 Asp.net Core 和 SignalR Core 的用户界面。

我的问题是在启动连接时出现身份验证异常。我知道这是因为我没有跑dotnet dev-certs https --trust。但我不能指望普通用户运行此命令或安装 dotnet SDK。

我试过使用

ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;
Run Code Online (Sandbox Code Playgroud)

在我的 Startup.cs(和其他地方,但我知道这是一个全局设置。无论如何它是在 HubConnection 之前执行的)无济于事。我也尝试设置一个新的 HttpMessageHandlerFactory,但文档告诉我这不会影响 Websockets。

我不相信是一个解决方案,因为我不能使用不同的 HttpClient(除非我弄错了)

如您所见,我根本没有连接到 https:

connection = new HubConnectionBuilder().WithUrl("http://localhost:5000/MiniLyokoHub" ).Build();
Run Code Online (Sandbox Code Playgroud)

所以我不明白为什么它甚至试图获得证书。

这是完整的错误:https : //pastebin.com/1ELbeWtc

我怎样才能解决这个问题?我不需要证书,因为用户将连接到他们自己的本地主机。还是我不应该使用 websockets?

c# signalr.client asp.net-core

6
推荐指数
1
解决办法
4630
查看次数

通过 IHttpClientFactory 忽略 SSL 连接错误

我在从我的 asp.net core 2.2 项目连接到像那里这样的 https 站点时遇到问题。我使用 IHttpClientFactory 在 Startup.cs 中创建类型化的 HttpClient

services.AddHttpClient<ICustomService, MyCustomService>();
Run Code Online (Sandbox Code Playgroud)

我不明白,如何在不像这样手动创建 HttpClient 的情况下忽略 SSL 连接问题

using (var customHandler = new HttpClientHandler())
{
    customHandler.ServerCertificateCustomValidationCallback  = (m, c, ch, e) => { return true; };
    using (var customClient = new HttpClient(customHandler)
    {
        // my code
    }
}
Run Code Online (Sandbox Code Playgroud)

c# ssl httpclient asp.net-core

6
推荐指数
1
解决办法
1391
查看次数

如何在.net core 2.1中忽略SSL验证

我正在尝试调用部署在 Linux 服务器上的 Web 服务,该服务器具有来自在 .net core 中开发并部署在 IIS 服务器(Windows server 2012)上的应用程序的自签名证书。

\n\n

但是当我尝试调用端点时,会引发下一个错误:

\n\n
\n

"Message": "无法建立 SSL 连接,请参阅内部\n 异常。",\n "Description": "InnerError : System.Security.Authentication.AuthenticationException: 身份验证\n 失败,请参阅内部异常。 --- >\n System.ComponentModel.Win32Exception: Mensaje recibido inesperado, o\n bien su 格式不正确\r\n --- 内部异常堆栈\n 跟踪结束 ---\r\n at\n System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken\n 消息,AsyncProtocolRequest asyncRequest,ExceptionDispatchInfo\n 异常)\\r\\n at\n System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken\n 消息,AsyncProtocolRequest asyncRequest) \\r\\n 位于\n System.Net.Security.SslState.StartSendBlob(Byte[] 传入,Int32\n 计数,AsyncProtocolRequest asyncRequest)\\r\\n 位于\n System.Net.Security.SslState.ProcessReceivedBlob (Byte[] 缓冲区,Int32\n 计数,AsyncProtocolRequest asyncRequest)\\r\\n at\n System.Net.Security.SslState.StartReadFrame(Byte[] 缓冲区,Int32\n readBytes,AsyncProtocolRequest asyncRequest)\\r\ \n at\n System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest\n asyncRequest)\\r\\n--- 抛出异常的上一个位置的堆栈跟踪结尾 ---\\r\\ n at\n System.Net.Security.SslState.ThrowIfExceptional()\\r\\n at\n System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult\n lazyResult)\\r\\n at\n …

.net c# ssl

2
推荐指数
1
解决办法
2万
查看次数

在默认注入的 IHttpClientFactory 中禁用 SSL 证书验证

在 Startup.cs 中我注入一个IHttpClientFactory服务:

services.AddHttpClient();
Run Code Online (Sandbox Code Playgroud)

然后我可以创建一个新的HttpClient通过

public MyClass(IHttpClientFactory httpClientFactory, IOptions<MyClassOptions> options)
{
    _httpClient = httpClientFactory.CreateClient();
    // ...
}
Run Code Online (Sandbox Code Playgroud)

MyClass进行一些 API 访问;基本 URL 在对象中传递options

为了进行测试,我设置了 API 的虚拟实例,它使用自签名 SSL 证书。不幸的是,该证书被(正确地)识别为无效:

System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.
 ---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.
Run Code Online (Sandbox Code Playgroud)

如何在工厂层(即直接在ConfigureServices方法中)禁用证书验证?

我发现了这个问题,但它似乎使用了一些自定义HttpClient实现(?),而我想针对默认实现。以下不起作用(DI 选择了错误的构造函数并随后失败):

services.AddHttpClient<IMyClass, MyClass>();
Run Code Online (Sandbox Code Playgroud)

这个答案建议为配置提供一个名称HttpClient,但它传递了一些魔术字符串,我想避免这种情况(MyClass位于设计为也可供其他人使用的类库中)。不传递名称也不起作用,因为AddHttpClient那样只会返回一个IServiceCollection对象。

c# dependency-injection dotnet-httpclient asp.net-core

1
推荐指数
1
解决办法
6037
查看次数