Łuk*_*ski 1 c# ubuntu openssl dotnet-httpclient .net-core
我想问一下是否有办法绕过 Ubuntu 的安全检查,以便我能够在我的 .NET Core 客户端应用程序中使用一个小密钥来获取网站?我得到了error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small例外。
问题是在 Ubuntu 20.04 中,openSSL 的安全级别设置为2和(目前,希望有人能回答我关于 Ask Ubuntu 的问题)我不知道如何将其设置为较低的值。
使用curlunless--ciphers 'DEFAULT:!DH'参数会发生同样的错误,所以我假设问题的根本原因在于操作系统本身。
我不控制网站的服务器,因此更改其安全设置是不行的。
到目前为止我从 C# 方面尝试过的:
serviceCollection.AddHttpClient<IInterface, IImplementation>()
.ConfigureHttpMessageHandlerBuilder(messageHandlerBuilder =>
{
messageHandlerBuilder.PrimaryHandler = new HttpClientHandler
{
ServerCertificateCustomValidationCallback = (m, c, ch, e) => true
};
});
Run Code Online (Sandbox Code Playgroud)
和
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);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,安全性不是什么大问题,所以我可以在这里使用任何肮脏的黑客。
任何帮助将非常感激。
感谢在 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
Run Code Online (Sandbox Code Playgroud)
OPENSSL_CONF环境变量设置为修改后的配置文件的路径| 归档时间: |
|
| 查看次数: |
3889 次 |
| 最近记录: |