首页 > 解决方案 > 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,但是您将如何处理这种情况,以及是否有其他选择

先感谢您!

标签: .netdockerasp.net-coressl.net-core

解决方案


推荐阅读