You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# HttpClient如何配置指定TLS密码套件访问Riot API

C# HttpClient 配置等效JS TLS密码套件方案

参考JS配置说明

对接Riot REST API的JS脚本TLS配置如下,核心规则共3项:

const ciphers = [
'TLS_CHACHA20_POLY1305_SHA256',
'TLS_AES_128_GCM_SHA256',
'TLS_AES_256_GCM_SHA384',
'TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256' ];
const agent = new Agent({ ciphers: ciphers.join(':'), honorCipherOrder: true, minVersion: 'TLSv1.2' });
  • 仅允许列表内4个密码套件,优先级按数组顺序从高到低
  • 强制使用客户端指定的套件优先级,不采用系统默认排序
  • 最低支持TLS版本为1.2,兼容更高版本
    API强制校验上述规则后,未做对应配置的C# HttpClient会直接返回403 Forbidden。

可行实现方案

.NET 5+ (含.NET 6/7/8/9,官方原生支持)

直接通过SocketsHttpHandler配置SSL选项即可完全对齐JS逻辑,代码如下:

using System.Net.Http;
using System.Net.Security;
using System.Security.Authentication;

// 严格按照JS顺序排列密码套件,保证优先级一致
var cipherPolicy = new CipherSuitesPolicy(new []
{
    TlsCipherSuite.TLS_CHACHA20_POLY1305_SHA256,
    TlsCipherSuite.TLS_AES_128_GCM_SHA256,
    TlsCipherSuite.TLS_AES_256_GCM_SHA384,
    TlsCipherSuite.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
});

var clientHandler = new SocketsHttpHandler
{
    SslOptions = new SslClientAuthenticationOptions
    {
        // 对应honorCipherOrder: true,严格遵循配置的套件顺序
        CipherSuitesPolicy = cipherPolicy,
        // 对应minVersion: 'TLSv1.2',仅允许TLS1.2、TLS1.3
        EnabledSslProtocols = SslProtocols.Tls12 | SslProtocols.Tls13
    }
};

// 用配置好的Handler初始化HttpClient即可正常发起请求
var httpClient = new HttpClient(clientHandler);

注意事项

  • 旧版Windows系统(Windows 10 21H1以前、Windows Server 2022以前)系统层不支持CHACHA20系列密码套件,即使代码中正确配置,TLS握手时也不会携带对应套件,依然会被API拦截。这种情况要么升级Windows版本,要么切换到Linux环境运行程序。
  • 不要额外修改ServicePointManager.SecurityProtocol属性,该全局配置会和Handler内的SSL配置产生冲突,保持默认值即可。

.NET Framework、.NET Core 3.1及更低版本

这类老版本框架没有提供自定义TLS密码套件列表和顺序的官方API,优先选择升级框架到.NET 5+。如果无法升级,可以通过引入libcurl依赖、使用CurlHandler替换默认请求Handler的方式,在libcurl配置中写死对应密码套件规则实现,但配置复杂度高,兼容性不如原生方案稳定。

内容的提问来源于stack exchange,提问作者Dartz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 09:06:26