wx8849 2024-05-27 10:57 采纳率: 0%
浏览 5

https tlsv1.3

https 请求tls v1.3 的api接口错误
win11、.net core 3.1+.framework4.8
//ServicePointManager.ServerCertificateValidationCallback = delegate
            //{
            //    return true;
            //};
            //ServicePointManager.SecurityProtocol =  (SecurityProtocolType)12288;

            //System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls13;
  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-27 10:57
    关注

    引自免费微信小程序:皆我百晓生

    在C#中,要启用TLS 1.3,你需要确保.NET Framework版本支持它。TLS 1.3在.NET Framework 4.8及更高版本中是可用的。如果你使用的是.NET Core,则从3.0版本开始支持。

    首先,确认你的项目正在使用正确的框架版本。然后,你可以按照以下步骤设置并启用TLS 1.3:

    1. 引入所需的命名空间:
    using System.Net;
    
    1. 在你的代码中,设置ServicePointManager.SecurityProtocol为TLS 1.3的枚举值。这一步可以确保所有HTTP请求默认使用TLS 1.3。注意,这个设置会应用到整个应用程序域(AppDomain):
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls13;
    

    如果你的代码运行在不支持TLS 1.3的.NET Framework版本上,上述代码可能会抛出异常。为了防止这种情况,你可以检查.NET Framework版本并根据情况选择合适的SSL/TLS协议:

    if (Environment.Version.Major >= 4 && Environment.Version.Minor >= 8)
    {
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls13;
    }
    else
    {
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Default; // 或者其他支持的最高协议版本,例如 Tls12
    }
    

    这样,你的代码就会优先尝试使用TLS 1.3,如果不支持则降级到默认的SSL/TLS协议。

    完整的代码示例:

    using System;
    using System.Net;
    
    class Program
    {
        static void Main(string[] args)
        {
            if (Environment.Version.Major >= 4 && Environment.Version.Minor >= 8)
            {
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls13;
            }
            else
            {
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Default; // 或者其他支持的最高协议版本,例如 Tls12
            }
    
            // 这里添加你的网络请求代码
    
            Console.WriteLine("TLS 1.3 设置成功。");
            Console.ReadLine();
        }
    }
    

    这段代码将尝试设置TLS 1.3,并在控制台输出一条消息表示设置成功。请确保你的环境支持TLS 1.3,否则可能不会实际使用TLS 1.3进行连接。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月27日

悬赏问题

  • ¥15 TeleScan不能修改bar
  • ¥100 请问我基于逐飞库写的这个有关于mp u6050传感器的函数,为什么输出的值是固定的?
  • ¥15 hadoop中启动hive报错如下怎么解决
  • ¥15 如何优化QWebEngineView 加载url的速度
  • ¥15 关于#hadoop#的问题,请各位专家解答!
  • ¥15 如何批量抓取网站信息
  • ¥15 Spring Boot离线人脸识别
  • ¥15 使用Ant Design Pro vue的时候,使用环境变量的时候,构建报错是什么原因
  • ¥15 NRF24L01能发送但是不能接收
  • ¥15 想问一下这种情况怎么解决呢(关键词-file)