gpt4 book ai didi

linux - 在 Linux 上使用 SslStream 进行身份验证时 RemoteCertificateNameMismatch

转载 作者:可可西里 更新时间:2023-11-01 02:53:17 27 4
gpt4 key购买 nike

在 linux 环境中运行我的 dotnet-core 应用程序时,我遇到了 dotnet SslStream 的一些奇怪行为。

代码如下:

TcpClient cl = new TcpClient();
cl.Connect("52.209.63.190", 443);
var ssl = new SslStream(cl.GetStream());
ssl.AuthenticateAsClient("api.bitfinex.com");

在 Windows 上运行时,验证结果是成功的。但是在 linux 下,相同的代码以身份验证错误 (RemoteCertificateNameMismatch) 结束。

网络--信息:

.NET 命令行工具 (2.1.4)

产品信息: 版本:2.1.4 提交 SHA-1 哈希:5e8add2190

运行时环境: 操作系统名称:fedora 操作系统版本:27 操作系统平台:Linux RID:linux-x64 基本路径:/usr/share/dotnet/sdk/2.1.4/

Microsoft .NET Core 共享框架宿主

版本:2.0.5 构建:17373eb129b3b05aa18ece963f8795d65ef8ea54

为什么 Linux 上的代码行为如此不同?我该如何处理它并通过 ssl 身份验证?

提前致谢

最佳答案

因此,您可以使用

连接到该主机
TcpClient cl = new TcpClient();
cl.Connect("api.bitfinex.com", 443);
var ssl = new SslStream(cl.GetStream());
ssl.AuthenticateAsClient("api.bitfinex.com");

我不知道你是怎么得到api.bitfinex.com的IP地址的,但它在cloudflare下,可能你不需要用他的真实IP地址连接bitfinex。

但是如果需要连接那个特殊的IP地址,你可以在你做任何连接之前覆盖验证回调

System.Net.ServicePointManager.ServerCertificateValidationCallback =
(sender, certificate, chain, errors) => true;

关于linux - 在 Linux 上使用 SslStream 进行身份验证时 RemoteCertificateNameMismatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51285454/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com