.NET Core - HTTPClient - Ubuntu 20.04 上的 dh 密钥太小
.NET Core - HTTPClient - dh key too small on Ubuntu 20.04
我想问问是否有办法绕过 Ubuntu 的安全检查,这样我就可以在我的 .NET Core 客户端应用程序中使用小密钥获取网站?我收到 error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small
异常。
问题是在 Ubuntu 20.04 中,openSSL 的安全级别设置为 2
并且(目前,希望有人会为 my question on Ask Ubuntu 提出答案)我不知道如何将其设置为较低的值。
除非提供 --ciphers 'DEFAULT:!DH'
参数,否则使用 curl
会出现相同的错误,因此我认为问题的根本原因在于操作系统本身。
我无法控制该网站的服务器,因此无法更改其安全设置。
到目前为止我在 C# 方面尝试过的内容:
serviceCollection.AddHttpClient<IInterface, IImplementation>()
.ConfigureHttpMessageHandlerBuilder(messageHandlerBuilder =>
{
messageHandlerBuilder.PrimaryHandler = new HttpClientHandler
{
ServerCertificateCustomValidationCallback = (m, c, ch, e) => true
};
});
和
using var httpClient = new HttpClient();
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
var websiteContent = await httpClient.GetStreamAsync(url);
在这种情况下,安全性不是什么大问题,所以我可以在这里使用任何肮脏的 hack。
如有任何帮助,我们将不胜感激。
感谢 answer received on Ask Ubuntu 我通过以下方式解决了这个问题:
- 复制
openssl.cnf
文件
- 在复制文件的顶部添加
openssl_conf = default_conf
- 最后添加:
[ default_conf ]
ssl_conf = ssl_sect
[ssl_sect]
system_default = ssl_default_sect
[ssl_default_sect]
MinProtocol = TLSv1.2
CipherString = DEFAULT:@SECLEVEL=1
- 运行 项目
OPENSSL_CONF
环境变量设置为更改配置文件的路径
我想问问是否有办法绕过 Ubuntu 的安全检查,这样我就可以在我的 .NET Core 客户端应用程序中使用小密钥获取网站?我收到 error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small
异常。
问题是在 Ubuntu 20.04 中,openSSL 的安全级别设置为 2
并且(目前,希望有人会为 my question on Ask Ubuntu 提出答案)我不知道如何将其设置为较低的值。
除非提供 --ciphers 'DEFAULT:!DH'
参数,否则使用 curl
会出现相同的错误,因此我认为问题的根本原因在于操作系统本身。
我无法控制该网站的服务器,因此无法更改其安全设置。
到目前为止我在 C# 方面尝试过的内容:
serviceCollection.AddHttpClient<IInterface, IImplementation>()
.ConfigureHttpMessageHandlerBuilder(messageHandlerBuilder =>
{
messageHandlerBuilder.PrimaryHandler = new HttpClientHandler
{
ServerCertificateCustomValidationCallback = (m, c, ch, e) => true
};
});
和
using var httpClient = new HttpClient();
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
var websiteContent = await httpClient.GetStreamAsync(url);
在这种情况下,安全性不是什么大问题,所以我可以在这里使用任何肮脏的 hack。
如有任何帮助,我们将不胜感激。
感谢 answer received on Ask Ubuntu 我通过以下方式解决了这个问题:
- 复制
openssl.cnf
文件 - 在复制文件的顶部添加
openssl_conf = default_conf
- 最后添加:
[ default_conf ]
ssl_conf = ssl_sect
[ssl_sect]
system_default = ssl_default_sect
[ssl_default_sect]
MinProtocol = TLSv1.2
CipherString = DEFAULT:@SECLEVEL=1
- 运行 项目
OPENSSL_CONF
环境变量设置为更改配置文件的路径