.net - TLS 1.3 问题,使用更高版本的 Docker 镜像 dotnet 或产生安全问题
问题描述
我有一个旧版 API dotnet 核心应用程序 Linux docker。
最近一些 HTTP 客户端调用抛出
System.Net.WebException:无法建立 SSL 连接,请参阅内部异常。根据验证程序,远程证书无效。
可爱的 SecurityProtocol 传奇,根本原因是 dotnet core 2.1 / 2.2 没有 TLS 1.3。 https://docs.microsoft.com/en-us/dotnet/api/system.net.securityprotocoltype?view=net-5.0
所以,我的问题是,你会从我得到的两个解决方案中选择什么解决方案?如果有更好的选择,则测试 1 和 2。
方案一、更高的dotnet core docker镜像(项目保持在2.1):
#replace FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base
方案二,通过 throw TLS 证书验证,(安全问题)
var handler = new HttpClientHandler
{
ServerCertificateCustomValidationCallback = (sender, certificate, chain, errors) =>
{
return true;
}
};
using (HttpClient client = new HttpClient(handler))
// or with named IHttpClientFactory
services.AddHttpClient("insecure_tls")
.ConfigurePrimaryHttpMessageHandler(_ => new HttpClientHandler
{
ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return true; }
});
using (HttpClient client = httpClientFactory.CreateClient("insecure_tls")
你明白了,有多种方法可以通过 tls 验证。
重复问题,在不更新项目版本的情况下,您会选择使用什么解决方案?出于安全考虑,我个人会选择 1,但是您将如何处理这种情况,以及是否有其他选择
先感谢您!
解决方案
推荐阅读
- javascript - 检查 nodejs 或 javascript 中的管理员或非管理员用户
- delphi - 查询 IConnectionPointContainer 会导致崩溃
- node.js - 如何配置 JSON Server 以支持特定的查询字符串参数?
- .net-core - .NET Core (v2) Azure 函数中的默认 HttpTriggerAttribute
- c# - 2个相同的绑定....一个有效,另一个无效
- c# - 创建对象时的 CS0426 - 如何理解错误
- javascript - _ 在这种情况下是什么意思
- css - CSS 选择器将元素与至少两个类实例匹配,不包括每个类的第一个实例
- arrays - 我的复选框未在 VB 中显示我的数组
- python - 装饰一个python类,使大多数方法在条件下引发异常