.NET Core配置TLS Cipher(套件)的详细过程
TLS Cipher 是一种加密套件,用于保护网络通信的安全性。在 .NET Core 中,可以配置 TLS Cipher 套件来提高应用程序的安全性。本攻略将详细介绍如何配置 TLS Cipher 套件。
配置 TLS Cipher 套件
在 .NET Core 中,可以使用以下代码配置 TLS Cipher 套件:
```csharp
using System.Security.Authentication;
using System.Security.Cryptography.X509Certificates;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Server.Kestrel.Https;
using Microsoft.Extensions.Hosting;
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.ConfigureKestrel(options =>
{
options.ListenAnyIP(5000, listenOptions =>
{
listenOptions.UseHttps(new HttpsConnectionAdapterOptions
{
SslProtocols = SslProtocols.Tls12,
ServerCertificate = new X509Certificate2("certificate.pfx", "password"),
CipherSuitesPolicy = new CipherSuitesPolicy
{
// 配置 TLS Cipher 套件
// 可以根据需要添加或删除套件
// 这里只列出了一些常用的套件
// 更多套件可以参考 https://docs.microsoft.com/en-us/dotnet/api/system.security.authentication.sslprotocols?view=netcore-3.1
// 注意:不推荐使用 RC4 和 3DES 等弱加密套件
// 推荐使用 AES 和 ChaCha20 等强加密套件
// 以下是一些常用的强加密套件
// CipherSuitesPolicy.Best = TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_AES_128_GCM_SHA256
// CipherSuitesPolicy.BestHttp2 = TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_AES_128_GCM_SHA256
// CipherSuitesPolicy.Default = TLS_AES_256_GCM_SHA384, TLS_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
// CipherSuitesPolicy.DefaultSsl3 = TLS_AES_256_GCM_SHA384, TLS_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_3DES_EDE_CBC_SHA
// CipherSuitesPolicy.SystemDefault = 系统默认的 TLS Cipher 套件
// CipherSuitesPolicy.None = 不使用 TLS Cipher 套件
// CipherSuitesPolicy.UnsafeLegacy = 使用不安全的 TLS Cipher 套件
// CipherSuitesPolicy.NoNull = 不允许使用空加密套件
// CipherSuitesPolicy.NoNullNoEncryption = 不允许使用空加密套件和无加密套件
// CipherSuitesPolicy.NoEncryption = 不允许使用无加密套件
// CipherSuitesPolicy.CustomPolicy = 自定义 TLS Cipher 套件
// CipherSuitesPolicy.PredefinedPolicy = 预定义的 TLS Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyBasic = 预定义的基本 TLS Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyIntermediate = 预定义的中级 TLS Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyStrict = 预定义的严格 TLS Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyLegacy = 预定义的遗留 TLS Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyFips = 预定义的 FIPS TLS Cipher 套件
// CipherSuitesPolicy.PredefinedPolicySystem = 预定义的系统 TLS Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyTls13 = 预定义的 TLS 1.3 Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyTls13Basic = 预定义的基本 TLS 1.3 Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyTls13Intermediate = 预定义的中级 TLS 1.3 Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyTls13Strict = 预定义的严格 TLS 1.3 Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyTls13Legacy = 预定义的遗留 TLS 1.3 Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyTls13Fips = 预定义的 FIPS TLS 1.3 Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyTls13System = 预定义的系统 TLS 1.3 Cipher 套件
// 以下是一个示例,使用 TLS_AES_256_GCM_SHA384 和 TLS_AES_128_GCM_SHA256 两个强加密套件
// 更多套件可以参考 https://docs.microsoft.com/en-us/dotnet/api/system.security.authentication.sslprotocols?view=netcore-3.1
// 注意:不推荐使用 RC4 和 3DES 等弱加密套件
// 推荐使用 AES 和 ChaCha20 等强加密套件
// 以下是一些常用的强加密套件
// CipherSuitesPolicy.Best = TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_AES_128_GCM_SHA256
// CipherSuitesPolicy.BestHttp2 = TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_AES_128_GCM_SHA256
// CipherSuitesPolicy.Default = TLS_AES_256_GCM_SHA384, TLS_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
// CipherSuitesPolicy.DefaultSsl3 = TLS_AES_256_GCM_SHA384, TLS_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_3DES_EDE_CBC_SHA
// CipherSuitesPolicy.SystemDefault = 系统默认的 TLS Cipher 套件
// CipherSuitesPolicy.None = 不使用 TLS Cipher 套件
// CipherSuitesPolicy.UnsafeLegacy = 使用不安全的 TLS Cipher 套件
// CipherSuitesPolicy.NoNull = 不允许使用空加密套件
// CipherSuitesPolicy.NoNullNoEncryption = 不允许使用空加密套件和无加密套件
// CipherSuitesPolicy.NoEncryption = 不允许使用无加密套件
// CipherSuitesPolicy.CustomPolicy = 自定义 TLS Cipher 套件
// CipherSuitesPolicy.PredefinedPolicy = 预定义的 TLS Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyBasic = 预定义的基本 TLS Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyIntermediate = 预定义的中级 TLS Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyStrict = 预定义的严格 TLS Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyLegacy = 预定义的遗留 TLS Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyFips = 预定义的 FIPS TLS Cipher 套件
// CipherSuitesPolicy.PredefinedPolicySystem = 预定义的系统 TLS Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyTls13 = 预定义的 TLS 1.3 Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyTls13Basic = 预定义的基本 TLS 1.3 Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyTls13Intermediate = 预定义的中级 TLS 1.3 Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyTls13Strict = 预定义的严格 TLS 1.3 Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyTls13Legacy = 预定义的遗留 TLS 1.3 Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyTls13Fips = 预定义的 FIPS TLS 1.3 Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyTls13System = 预定义的系统 TLS 1.3 Cipher 套件
// 以下是一个示例,使用 TLS_AES_256_GCM_SHA384 和 TLS_AES_128_GCM_SHA256 两个强加密套件
// 更多套件可以参考 https://docs.microsoft.com/en-us/dotnet/api/system.security.authentication.sslprotocols?view=netcore-3.1
// 注意:不推荐使用 RC4 和 3DES 等弱加密套件
// 推荐使用 AES 和 ChaCha20 等强加密套件
// 以下是一些常用的强加密套件
// CipherSuitesPolicy.Best = TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_AES_128_GCM_SHA256
// CipherSuitesPolicy.BestHttp2 = TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_AES_128_GCM_SHA256
// CipherSuitesPolicy.Default = TLS_AES_256_GCM_SHA384, TLS_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
// CipherSuitesPolicy.DefaultSsl3 = TLS_AES_256_GCM_SHA384, TLS_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_3DES_EDE_CBC_SHA
// CipherSuitesPolicy.SystemDefault = 系统默认的 TLS Cipher 套件
// CipherSuitesPolicy.None = 不使用 TLS Cipher 套件
// CipherSuitesPolicy.UnsafeLegacy = 使用不安全的 TLS Cipher 套件
// CipherSuitesPolicy.NoNull = 不允许使用空加密套件
// CipherSuitesPolicy.NoNullNoEncryption = 不允许使用空加密套件和无加密套件
// CipherSuitesPolicy.NoEncryption = 不允许使用无加密套件
// CipherSuitesPolicy.CustomPolicy = 自定义 TLS Cipher 套件
// CipherSuitesPolicy.PredefinedPolicy = 预定义的 TLS Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyBasic = 预定义的基本 TLS Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyIntermediate = 预定义的中级 TLS Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyStrict = 预定义的严格 TLS Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyLegacy = 预定义的遗留 TLS Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyFips = 预定义的 FIPS TLS Cipher 套件
// CipherSuitesPolicy.PredefinedPolicySystem = 预定义的系统 TLS Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyTls13 = 预定义的 TLS 1.3 Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyTls13Basic = 预定义的基本 TLS 1.3 Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyTls13Intermediate = 预定义的中级 TLS 1.3 Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyTls13Strict = 预定义的严格 TLS 1.3 Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyTls13Legacy = 预定义的遗留 TLS 1.3 Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyTls13Fips = 预定义的 FIPS TLS 1.3 Cipher 套件
// CipherSuitesPolicy.PredefinedPolicyTls13System = 预定义的系统 TLS 1.3 Cipher 套件
// 以下是一个示例,使用 TLS_AES_256_GCM_SHA384 和 TLS_AES_128_GCM_SHA256 两个强加密套件
// 更多套件可以参考 https://docs.microsoft.com/en-us/dotnet/api/system.security.authentication.sslprotocols?view=netcore-3.1
// 注意:不推荐使用 RC4 和 3DES 等弱加密套件
// 推荐使用 AES 和 ChaCha20 等强加密套件
// 以下是一些常用的强加密套件
// CipherSuitesPolicy.Best = TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_AES_128_GCM_SHA256
// CipherSuitesPolicy.BestHttp2 = TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_AES_128_GCM_SHA256
// CipherSuitesPolicy.Default = TLS_AES_256_GCM_SHA384, TLS_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
// CipherSuitesPolicy.DefaultSsl3 = TLS_AES_256_GCM_SHA384, TLS_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:.NET Core配置TLS Cipher(套件)的详细过程 - Python技术站