TLS 1.3(Transport Layer Security 1.3)是最新版本的传输层安全协议,用于加密互联网上的数据传输。它在许多方面比其前身TLS 1.2更安全、更高效。TLS 1.3 引入了一些重大变更,以提高安全性、减少连接延迟,并简化协议的实现。

TLS(传输层安全协议)是一种用于加密网络通信的协议,它的版本经历了多个演变和改进。以下是主要的 TLS 版本和它们的变化:

1. SSL 3.0(安全套接字层 3.0)

虽然 SSL(Secure Sockets Layer)并非严格意义上的 TLS 版本,但它是 TLS 的前身。TLS 最初就是对 SSL 协议的改进。

  • 发布年份:1996年
  • 特点:SSL 3.0 是 SSL 的最后一个版本,最初被设计用于保护HTTP协议的安全。尽管 SSL 3.0 被认为比 SSL 2.0 更安全,但它仍然包含了一些漏洞,因此在后来的版本中被淘汰。

在 Windows 操作系统中,SSL 3.0 已经被认为是不安全的协议,并且许多现代操作系统和应用程序已经禁用了 SSL 3.0,以避免与 POODLE 攻击(Padding Oracle On Downgraded Legacy Encryption)相关的安全风险。然而,有时可能出于兼容性原因需要查询或启用 SSL 3.0。

 

POODLE(Padding Oracle On Downgraded Legacy Encryption)攻击是一种针对 SSL 3.0 协议的安全漏洞攻击。这个漏洞是由 Google 的研究人员在 2014 年发现的,攻击的目标是破坏加密连接的安全性,并从中窃取敏感信息(如登录凭证、cookie 等)。

1. POODLE 攻击原理

POODLE 攻击利用了 SSL 3.0 在填充(Padding)机制中的一个缺陷。SSL/TLS 协议通常通过对称加密来保护传输数据,这种加密方式需要特定的填充(Padding)以确保数据长度是加密块大小的整数倍。然而,在 SSL 3.0 协议中,填充的检查机制存在漏洞,攻击者可以利用这个漏洞,通过精心构造的请求来推测密文的内容。

具体来说,攻击者通过在中间人攻击(Man-in-the-Middle,MITM)情境下拦截加密流量,逐步尝试不同的填充模式,进而解密传输的数据。虽然这种攻击通常需要多次请求,但它能成功绕过 SSL 3.0 的加密保护。

2. 攻击流程

POODLE 攻击的具体步骤大致如下:

  • 攻击者位于中间人位置:攻击者位于客户端与服务器之间,可以拦截并修改双方传输的数据。
  • 劫持 SSL 3.0 协议连接:如果客户端和服务器仍然使用过时的 SSL 3.0 协议,而不是更新的 TLS 版本,攻击者可以强制将连接降级到 SSL 3.0。
  • 利用填充错误:攻击者通过巧妙构造恶意数据包并发送给客户端,迫使服务器返回包含加密数据的响应,进而通过逐步的尝试和错误解码内容。

这个攻击方法最初是在使用 CBC(Cipher Block Chaining)模式 加密的 SSL 3.0 中发现的,攻击者可以利用该模式中的填充错误来推测密文中的内容。

3. POODLE 攻击的影响

POODLE 攻击的最大影响是能够解密 HTTPS 或其他 SSL 3.0 加密流量。通过这种方式,攻击者可以获取到敏感信息,如:

  • 登录凭证(用户名、密码等)
  • 会话 cookie
  • 其他传输中的敏感数据

虽然 POODLE 攻击并不容易实现,且攻击速度较慢,但一旦成功,它能够显著威胁到数据的机密性和完整性。

4. 如何防范 POODLE 攻击

为了防范 POODLE 攻击,最重要的措施是禁用 SSL 3.0 协议,并强制使用更安全的加密协议(如 TLS)。具体的防范方法包括:

  • 禁用 SSL 3.0:通过禁用 SSL 3.0,阻止客户端和服务器使用该协议进行通信。现代浏览器和服务器都已经支持并推荐使用 TLS 1.2 或更高版本。

  • 强制使用 TLS 1.2 或 TLS 1.3:确保客户端和服务器都启用了 TLS 1.2 或 TLS 1.3,这些版本的协议修复了 SSL 3.0 中的安全问题。

  • 升级软件和库:保持操作系统、Web 服务器和客户端软件的更新,避免使用过时和不安全的加密协议。

5. POODLE 攻击的历史影响

POODLE 攻击的发现促使许多网站和服务供应商采取了更严格的加密措施,尤其是禁用了 SSL 3.0 并升级到 TLS 1.2 或更高版本。大多数现代浏览器(如 Chrome、Firefox、Safari 等)已经默认禁用了 SSL 3.0,并且推荐使用 TLS 1.2 或 TLS 1.3。

因此,POODLE 攻击的出现标志着互联网安全协议演进的重要一环,也提醒了我们要及时更新并修复加密协议中的安全漏洞。

POODLE 攻击是针对过时的 SSL 3.0 协议的一个严重漏洞,它利用了 SSL 3.0 中不安全的填充机制,能够解密敏感信息。为了避免此类攻击,建议禁用 SSL 3.0 并启用更新、更安全的加密协议(如 TLS 1.2 和 TLS 1.3)。

以下是在 Windows 中启用 SSL 3.0 或查询 SSL 3.0 状态的方法:

1. 查询 SSL 3.0 是否启用

SSL 3.0 的启用状态可以通过修改注册表来进行管理。默认情况下,许多版本的 Windows 已禁用 SSL 3.0,但你可以检查并修改其状态。

使用注册表编辑器检查或修改 SSL 3.0 状态:

  1. Windows + R 打开运行窗口,输入 regedit 并按 Enter 键,打开注册表编辑器。

  2. 导航到以下路径:

    Copy Code
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
  3. Protocols 下,你应该能找到 SSL 3.0 相关的子键(如 SSL 3.0)。

    • 如果找不到 SSL 3.0 子键,则可能默认没有启用此协议。
    • 如果已经存在,点击进入并查看其中的键值。

    在此路径下,应该有类似以下内容的注册表键:

    Copy Code
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server

    Copy Code
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client

    在这些项下,查看是否存在 Enabled 键:

    • 如果 Enabled 键的值为 0,则表示 SSL 3.0 已禁用。
    • 如果 Enabled 键的值为 1,则表示 SSL 3.0 已启用。

修改启用 SSL 3.0

如果需要启用 SSL 3.0,可以手动修改注册表:

  1. 在 Server 和 Client 子项下,右键点击空白区域,选择 新建 > 字符串值
  2. 将新字符串命名为 Enabled,并将其值设为 1
  3. 关闭注册表编辑器,然后重新启动计算机,使更改生效。

2. 通过 Internet Explorer 设置启用或禁用 SSL 3.0

如果你使用的是较旧版本的 Internet Explorer,或者某些应用程序(如 SQL Server 或 IIS)依赖于 Internet Explorer 的设置,你可以通过该浏览器的设置界面启用或禁用 SSL 3.0。

  1. 打开 Internet Explorer(或 Microsoft Edge)。
  2. 转到 设置 > Internet 选项
  3. 在 高级 选项卡中,滚动到 安全 部分。
  4. 你会看到一个名为 使用 SSL 3.0 的选项。勾选此选项以启用 SSL 3.0,取消勾选则禁用它。
  5. 点击 应用,然后 确定,最后重启浏览器。

3. 使用 PowerShell 查询 SSL 3.0 支持情况

PowerShell 提供了一些命令可以用来检查 SSL 3.0 协议是否被启用。你可以运行以下脚本来查看系统中启用的 SSL/TLS 协议:

powershellCopy Code
# 查看启用的协议
Get-TlsCipherSuite | Format-Table Name, HashAlgorithm, KeyExchangeAlgorithm, Protocol

4. 禁用 SSL 3.0

如果你想禁用 SSL 3.0(这是安全建议),你可以在注册表中将 Enabled 键的值更改为 0,或者在 Internet Explorer 设置中取消选中 "使用 SSL 3.0"。

注意事项:

  • SSL 3.0 已被弃用,它存在多个已知的安全漏洞,强烈建议你禁用 SSL 3.0,改用更现代的协议(如 TLS 1.2 或 TLS 1.3)。
  • 如果你的环境中必须启用 SSL 3.0,请确保只在最小化风险的情况下使用它,并避免在生产环境中长时间使用过时的协议。

通过上述步骤,你应该能够查询并启用/禁用 SSL 3.0。如果可能,建议使用 TLS 1.2 或更高版本,以提高系统的安全性。

批处理文件(.bat)禁用 SSL 3.0,你可以修改注册表来禁用 SSL 3.0。以下是禁用 SSL 3.0 的批处理命令:

1. 创建批处理文件禁用 SSL 3.0

以下批处理脚本会修改 Windows 注册表项,禁用 SSL 3.0 协议:

Copy Code
@echo off
:: 禁用 SSL 3.0 协议
echo Disabling SSL 3.0...

:: 禁用 SSL 3.0 协议 - Server
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server" /v "Enabled" /t REG_DWORD /d 0 /f

:: 禁用 SSL 3.0 协议 - Client
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client" /v "Enabled" /t REG_DWORD /d 0 /f

echo SSL 3.0 has been disabled.
pause

2. 说明:

  • reg add 命令用于向 Windows 注册表中添加或修改键值。
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server 和 Client 路径分别对应禁用服务器端和客户端 SSL 3.0 协议。
  • /v "Enabled" 是要添加或修改的值名称,/t REG_DWORD 指定值类型为 DWORD(32 位整型),/d 0 表示将值设置为 0,表示禁用该协议,/f 强制执行,无需确认。

3. 步骤:

  1. 将上述批处理内容复制到一个文本文件中。
  2. 将文件保存为 .bat 格式,例如 disable_ssl3.bat
  3. 右键点击 .bat 文件,选择 以管理员身份运行,以确保能够修改注册表。

4. 重启计算机

完成批处理后,建议重新启动计算机,确保设置生效。

5. 验证是否禁用 SSL 3.0

你可以通过检查注册表来确认 SSL 3.0 已被禁用。具体操作方法参考我之前提供的手动修改注册表的方法,确认 Enabled 键的值为 0

注意事项:

  • 禁用 SSL 3.0 后,某些老旧的应用程序可能无法与服务器建立连接,因为它们仍可能依赖于 SSL 3.0。
  • 强烈建议使用现代的加密协议(如 TLS 1.2 或 TLS 1.3)以确保安全性。

禁用 SSL 3.0 协议的 PowerShell 脚本,它将修改 Windows 注册表来禁用 SSL 3.0 协议:

PowerShell 脚本禁用 SSL 3.0

powershellCopy Code
# 禁用 SSL 3.0 协议
Write-Host "Disabling SSL 3.0..."

# 禁用 SSL 3.0 - Server 设置
$serverKeyPath = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server"
If (-Not (Test-Path $serverKeyPath)) {
    New-Item -Path $serverKeyPath -Force
}
New-ItemProperty -Path $serverKeyPath -Name "Enabled" -Value 0 -PropertyType DWord -Force

# 禁用 SSL 3.0 - Client 设置
$clientKeyPath = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client"
If (-Not (Test-Path $clientKeyPath)) {
    New-Item -Path $clientKeyPath -Force
}
New-ItemProperty -Path $clientKeyPath -Name "Enabled" -Value 0 -PropertyType DWord -Force

Write-Host "SSL 3.0 has been disabled."

脚本说明

  • $serverKeyPath 和 $clientKeyPath 分别表示注册表路径,用于禁用 SSL 3.0 协议在服务器和客户端的支持。
  • Test-Path 检查注册表路径是否存在,如果不存在,则创建新的注册表项。
  • New-ItemProperty 用于在指定的路径下创建或修改注册表项。-Value 0 表示禁用 SSL 3.0,-PropertyType DWord 确保数据类型是 DWORD。

执行步骤

  1. 将上述 PowerShell 脚本内容复制并粘贴到一个新的 PowerShell 脚本文件中,例如命名为 Disable-SSL3.ps1
  2. 右键点击该文件,选择 以管理员身份运行
  3. PowerShell 会自动禁用 SSL 3.0 协议。

验证禁用是否生效

  • 你可以通过打开注册表编辑器 (regedit) 并检查以下注册表项:
    • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server
    • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client

确保 Enabled 键的值为 0,这表示禁用了 SSL 3.0。

重启计算机

完成这些更改后,建议重新启动计算机以确保设置生效。

注意事项

  • 禁用 SSL 3.0 后,某些老旧的应用程序或设备可能无法与服务器建立连接,因为它们依赖于 SSL 3.0 协议。
  • 为了提高系统安全性,建议使用 TLS 1.2 或 TLS 1.3 协议,而非 SSL 3.0。

这个 PowerShell 脚本将帮助你在 Windows 系统中安全地禁用 SSL 3.0 协议。

2. TLS 1.0

  • 发布年份:1999年
  • 特点
    • 继承自 SSL 3.0:TLS 1.0 在 SSL 3.0 的基础上进行了改进,主要是修复了一些 SSL 3.0 中的安全问题。
    • 使用加密算法:如对称加密算法(AES、RC4)和公钥算法(RSA)。
    • 修复漏洞:例如,改进了对攻击(如“SSL降级攻击”)的防御。
    • 广泛应用:TLS 1.0 曾是最常用的加密协议版本,直到后来更高版本的发布。

3. TLS 1.1

  • 发布年份:2006年
  • 特点
    • 改进的安全性:TLS 1.1 引入了对防止“分包攻击”(例如,CBC(Cipher Block Chaining)模式的攻击)的增强,增加了防护。
    • 对 SSL 3.0 的修正:进一步强化了密码套件和加密算法的安全性,改进了数据完整性验证和消息认证。
    • 不太常用:尽管比 TLS 1.0 更安全,TLS 1.1 并没有像 TLS 1.2 那样广泛部署。

4. TLS 1.2

  • 发布年份:2008年
  • 特点
    • 更强的加密和算法:TLS 1.2 引入了对 SHA-256、AES-GCM(Galois/Counter Mode)等更强加密算法的支持,提升了加密强度。
    • 提升的安全性:修复了许多已知的漏洞(例如,固定加密算法和协议缺陷),并提供了更为灵活的算法协商机制。
    • 广泛应用:TLS 1.2 是目前使用最广泛的 TLS 版本。许多 Web 服务器和浏览器都默认支持 TLS 1.2。

5. TLS 1.3

  • 发布年份:2018年
  • 特点
    • 重大改进:TLS 1.3 对协议进行了大幅简化,减少了握手过程中的消息交换次数,提高了性能。
    • 更强的安全性:TLS 1.3 强制使用前向保密性(Perfect Forward Secrecy,PFS),并移除了已知不安全的加密算法(如 RC4、SHA-1 等)。
    • 减少连接延迟:TLS 1.3 减少了握手过程中的往返次数,特别是支持零 RTT(Zero Round Trip Time)会话恢复,从而减少连接延迟。
    • 更简洁的协议:移除了一些不必要的功能和加密套件,使协议更加简单、安全。
    • 广泛支持:许多现代浏览器和服务器已开始逐步推广和支持 TLS 1.3。

6. TLS 1.3 与 TLS 1.2 的对比

特性 TLS 1.2 TLS 1.3
协议简化 较复杂,支持多个加密算法和密钥交换方法 进行了大幅简化,减少了协议选项
支持的加密算法 支持多种算法,如 RC4、3DES、SHA-1、SHA-2 等 移除不安全算法,仅支持 AES-GCM、ChaCha20 等
握手消息交换次数 需要多个往返消息 使用 1-2 次消息,零 RTT 连接恢复
前向保密性(PFS) 可选 强制要求,默认启用
支持的加密套件 较为灵活,但包含一些过时的加密算法 精简至支持较少但更安全的加密套件
连接恢复 依赖会话ID或会话票证进行恢复 支持零 RTT 连接恢复

总结:

  • TLS 1.0TLS 1.1 和 TLS 1.2 是逐步发展的加密协议版本,解决了各自版本的漏洞和不足。
  • TLS 1.3 是目前最安全且高效的协议,建议在可能的情况下尽早过渡到 TLS 1.3。

如今,TLS 1.2TLS 1.3 是主流的安全协议。随着对 TLS 1.0 和 1.1 的逐步弃用,许多现代的浏览器和服务器都推荐和支持 TLS 1.2 或更高版本。


Microsoft Edge 浏览器中启用 TLS 1.3(如果尚未启用),请按照以下步骤操作:

  1. 打开 Microsoft Edge 浏览器

  2. 在地址栏中输入 edge://flags,并按下 Enter 键。这将打开 Edge 浏览器的实验性功能页面。

  3. 在页面顶部的搜索框中,输入 TLSTLS 1.3

  4. 查找名为 "TLS 1.3" 或类似描述的选项。确保它处于 "启用" 状态。如果没有找到相关设置,可能意味着你的浏览器版本已经默认启用了 TLS 1.3。

  5. 启用后,点击页面底部的 "重新启动" 按钮,以重新启动浏览器,使设置生效。

检查是否启用了 TLS 1.3

启用 TLS 1.3 后,你可以通过访问支持 TLS 1.3 的网站(如 Google 或其他现代网站),使用开发者工具查看连接的协议版本。

  1. 打开 Edge 浏览器,按 F12 打开开发者工具。
  2. 切换到 "Network" 标签页。
  3. 刷新页面,查看 HTTPS 请求的协议版本,确认是否显示为 TLS 1.3

如果你的 Edge 浏览器已经是最新版本,TLS 1.3 很可能已经是默认启用的,因此无需手动更改设置。

 

TLS 1.3 Early Data

This option enables TLS 1.3 Early Data, allowing GET requests to be sent during the handshake when resuming a connection to a compatible TLS 1.3 server. – Mac, Windows, Linux, Android

 
 

TLS 1.3 post-quantum key agreement

This option enables a post-quantum key agreement in TLS 1.3. The #use-ml-kem flag controls whether ML-KEM or Kyber is used. – Mac, Windows, Linux, Android

 
 

TLS 1.3 早期数据

此选项启用 TLS 1.3 早期数据,允许在恢复与兼容的 TLS 1.3 服务器的连接时,在握手期间发送 GET 请求。— Mac、Windows、Linux、Android

#enable-tls13-early-data

默认

TLS 1.3 后量子密钥协商

此选项启用 TLS 1.3 中的后量子密钥协商。#use-ml-kem 标志控制是否使用 ML-KEM 或 Kyber。— Mac、Windows、Linux、Android

#enable-tls13-kyber

 


PowerShell 中禁用 TLS 1.0、1.1 和 1.2,且仅启用 TLS 1.3,您可以使用以下命令来进行配置。这样,您只会使用 TLS 1.3 进行安全连接。

设置仅启用 TLS 1.3

powershellCopy Code
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls13

禁用 TLS 1.0、1.1 和 1.2

PowerShell 中的 SecurityProtocol 并不直接提供禁用特定版本的功能,而是通过设置 SecurityProtocol 来指定哪些协议可用。在此情况下,如果您希望只启用 TLS 1.3,您只需设置 SecurityProtocolTls13,这样系统将只使用 TLS 1.3,其他较旧版本的协议(如 TLS 1.0、1.1 和 1.2)将不会被使用。

示例:完全启用 TLS 1.3,禁用其他版本

powershellCopy Code
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls13

注意事项

  1. TLS 1.3 目前仅在较新的操作系统和应用程序中得到支持。如果您使用的操作系统或 .NET 版本不支持 TLS 1.3,该配置可能无法生效,或者连接可能会失败。
  2. 您可以通过运行 openssl s_client 或其他 SSL/TLS 工具来检查您的连接是否确实使用 TLS 1.3。

其他解决方案:编辑注册表(针对 Windows 系统)

如果您希望全局禁用 TLS 1.0、1.1 和 1.2,只启用 TLS 1.3,您还可以通过修改 Windows 注册表来实现。以下步骤适用于 Windows 系统:

  1. 打开注册表编辑器(regedit)。
  2. 导航到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
  3. 在该位置,您可以分别为 TLS 1.0TLS 1.1TLS 1.2 创建子键,并禁用这些协议:
    • 为每个协议创建 Server 和 Client 子键。
    • 在每个 Server 和 Client 子键中创建一个名为 Enabled 的 DWORD 值,并将其设置为 0,表示禁用。

例如:

plaintextCopy Code
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client
Enabled = 0
  1. 重新启动系统使更改生效。

通过这种方式,您可以全局禁用 TLS 1.0、1.1 和 1.2,并且仅启用 TLS 1.3。

总结

  • 在 PowerShell 中,通过设置 [Net.ServicePointManager]::SecurityProtocol 为 Tls13 可以启用仅 TLS 1.3。
  • 如果需要禁用旧版本协议(如 TLS 1.0、1.1 和 1.2),可以通过注册表设置或操作系统配置来实现。

在 Windows 系统中,您可以使用几种不同的方法来查询已启用的 TLS 版本。下面是几种常见的查看方法:

1. 使用注册表查看启用的 TLS 版本

Windows 使用注册表来控制启用的 TLS 版本。您可以通过查看注册表项来检查启用的 TLS 版本。具体步骤如下:

步骤:

  1. Win + R,打开 运行 窗口。

  2. 输入 regedit 并按回车,打开注册表编辑器。

  3. 导航到以下路径:

    Copy Code
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
  4. 在这个位置,您将看到有关不同协议(如 TLS 1.0、TLS 1.1、TLS 1.2 和 TLS 1.3)下的子项。检查每个协议下是否存在“Client” 和 “Server” 子项,并查看其值。启用或禁用这些协议取决于这些值的设置。

    • 如果 Enabled 值为 0,则该协议被禁用。
    • 如果 Enabled 值为 1,则该协议被启用。

示例:

  • TLS 1.2 启用的路径
    Copy Code
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client

2. 使用 PowerShell 查看 TLS 版本

PowerShell 可以帮助您查看当前系统中启用的 TLS 版本。具体来说,您可以使用以下 PowerShell 命令来查看哪些版本的 TLS 正在被使用。

步骤:

  1. 按 Win + X,选择 Windows PowerShell (管理员) 以管理员权限运行 PowerShell。
  2. 运行以下命令来查看启用的 TLS 版本:
    powershellCopy Code
    [Net.ServicePointManager]::SecurityProtocol
    该命令将返回当前启用的安全协议,通常是一个组合值,可能包括 TlsTls11Tls12 等。

解释:

  • 如果输出中显示了 Tls12,则 TLS 1.2 被启用。
  • 如果显示了 Tls13,则表示 TLS 1.3 已启用。

    在 PowerShell 中,[Net.ServicePointManager]::SecurityProtocol 用于查看和设置当前系统中 .NET 应用程序使用的安全协议(即 TLS 协议版本)。从您提供的输出来看,当前的安全协议是 SystemDefault,这表示您的系统正在使用操作系统默认配置的安全协议。

    查看和设置安全协议

    查看当前协议:

    powershellCopy Code
    [Net.ServicePointManager]::SecurityProtocol

    此命令返回当前配置的安全协议。在您的输出中,SystemDefault 表示系统会根据操作系统的默认配置选择安全协议版本(例如,Windows 可能默认选择 TLS 1.2)。

    设置特定协议:

    您也可以手动设置使用的安全协议版本,比如将它设置为 TLS 1.2 或 TLS 1.3,具体取决于您的需求。以下是一些常见的配置:

    • 启用 TLS 1.2:

      powershellCopy Code
      [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    • 启用 TLS 1.3:

      powershellCopy Code
      [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls13
    • 启用 TLS 1.0 和 TLS 1.1(不推荐):

      powershellCopy Code
      [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls | [Net.SecurityProtocolType]::Tls11
    • 启用所有 TLS 协议(TLS 1.0, 1.1, 1.2):

      powershellCopy Code
      [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls | [Net.SecurityProtocolType]::Tls11 | [Net.SecurityProtocolType]::Tls12

    注意事项

    1. TLS 1.0 和 TLS 1.1 已经不推荐使用,因为它们存在已知的安全漏洞。最好将配置更新为 TLS 1.2 或更高版本。
    2. TLS 1.3 是最安全且效率更高的协议,支持在现代环境中更好的加密性能。如果您的系统和应用程序支持 TLS 1.3,建议优先使用它。
    3. 改变这些设置可能会影响到基于 .NET 的网络请求,例如 Web 请求和 API 调用,因此确保应用程序与配置的协议兼容。

    示例:设置 TLS 1.2

    如果您希望强制使用 TLS 1.2,可以执行以下命令:

    powershellCopy Code
    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

    之后,再次运行 [Net.ServicePointManager]::SecurityProtocol 命令将返回 Tls12,表示当前系统使用的是 TLS 1.2。

    总结

    [Net.ServicePointManager]::SecurityProtocol 允许您查看和设置 PowerShell 会话中的 TLS 协议。推荐使用最新的安全协议版本,如 TLS 1.2 或 TLS 1.3。

3. 使用 IIS(Internet Information Services)配置查看启用的 TLS 版本

如果您正在管理 Web 服务器,可以通过 IIS 的管理工具检查已启用的 TLS 版本。

步骤:

  1. 打开 IIS 管理器
  2. 选择服务器节点,双击 SSL 设置
  3. 在 SSL 设置 中,检查您是否有选择启用 TLS 1.2 或更高版本(具体选项取决于您所使用的 IIS 版本)。

4. 使用外部工具(例如 OpenSSL)测试 TLS 版本

如果您要查看特定服务器(而不是本地计算机)是否启用了某个 TLS 版本,可以使用 OpenSSL 等工具来进行测试。

步骤:

  1. 安装并配置 OpenSSL(如果尚未安装)。
  2. 运行以下命令来测试与目标服务器的 TLS 连接:
    bashCopy Code
    openssl s_client -connect <server>:443 -tls1_2
    这将测试服务器是否支持 TLS 1.2。您可以将 -tls1_2 更改为其他版本(如 -tls1_3)来测试不同的版本。

5. 使用浏览器查看 TLS 版本

许多现代浏览器(如 Chrome 和 Firefox)都提供开发者工具,可以查看当前网站使用的 TLS 版本。

步骤(以 Google Chrome 为例):

  1. 打开 Chrome 浏览器并访问一个使用 HTTPS 的网站。
  2. 右键点击页面并选择 检查,打开开发者工具。
  3. 转到 网络(Network) 选项卡,刷新页面。
  4. 选择任何一个请求,查看 安全性(Security) 选项卡。
  5. 在该选项卡中,您可以看到服务器与浏览器之间的加密连接信息,包括使用的 TLS 版本。

总结:

  • 注册表查看:直接查看系统启用的协议。
  • PowerShell:通过命令查看当前启用的 TLS 版本。
  • IIS 配置:查看 Web 服务器的 TLS 配置。
  • OpenSSL:测试外部服务器支持的 TLS 版本。
  • 浏览器开发者工具:查看当前网站使用的 TLS 版本。

通过这些方法,您可以在 Windows 系统上查询已启用的 TLS 版本,并根据需要进行调整。

深入探讨一下 TLS 版本及其管理。下面是对之前内容的延续,主要讲解如何启用/禁用特定的 TLS 版本,以及其他相关的配置和检查步骤。

启用/禁用 TLS 版本

1. 通过注册表启用或禁用 TLS 版本

在 Windows 系统中,您可以通过修改注册表来启用或禁用 TLS 版本。具体步骤如下:

启用或禁用 TLS 版本:
  1. Win + R 打开运行窗口,输入 regedit 并按回车,打开注册表编辑器。

  2. 导航到注册表路径:

    Copy Code
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
  3. 在该路径下,您可以找到与不同版本的 TLS 相关的子项,如 TLS 1.0TLS 1.1TLS 1.2TLS 1.3

启用 TLS 1.2 示例:

假设您希望启用 TLS 1.2 并禁用其他版本的 TLS。您需要确保如下设置:

  • 导航至 TLS 1.2 下的 Client 和 Server 目录。
  • 如果 Enabled 键不存在,则右键点击 New > DWORD (32-bit) Value 创建它。
  • 设置其值为 0(禁用)或 1(启用)。
  • 对于 Client 和 Server 均设置为 1,以启用 TLS 1.2。
禁用 TLS 1.0 和 TLS 1.1 示例:

为了增强安全性,您可能需要禁用 TLS 1.0 和 1.1:

  • 在 TLS 1.0 和 TLS 1.1 下的 Client 和 Server 子项中,创建或修改 Enabled 键,设置其值为 0 来禁用这两个版本。

注意: 修改注册表时,请小心操作,确保您不会意外删除或更改其他配置项。修改注册表后,通常需要重启计算机以使更改生效。

2. 使用 PowerShell 启用或禁用 TLS 版本

您可以通过 PowerShell 来启用或禁用 TLS 版本。可以使用以下命令修改系统的 SecurityProtocol 设置:

启用 TLS 1.2:
powershellCopy Code
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
启用多个 TLS 版本(例如 TLS 1.0, 1.1, 1.2):
powershellCopy Code
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls | [Net.SecurityProtocolType]::Tls11 | [Net.SecurityProtocolType]::Tls12
禁用 TLS 1.0 和 1.1,启用 1.2:
powershellCopy Code
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

注意: 修改 PowerShell 设置只会影响当前会话,如果您需要永久修改,可以将这些命令加入到启动脚本或通过注册表来实现。

3. 在 IIS 中启用/禁用 TLS 版本

如果您管理的是 Web 服务器(例如 IIS),可以在 IIS 配置中启用或禁用特定的 TLS 版本。这通常涉及在 IIS 配置管理器Windows 注册表 中调整设置。

启用 TLS 1.2 和禁用较旧版本:
  1. 打开 IIS 管理器
  2. 选择您的服务器节点,右键点击 高级设置
  3. 在 SSL 设置区域,您可以选择启用或禁用特定的加密协议。通常,管理员会选择禁用 TLS 1.0 和 1.1,确保启用 TLS 1.2 或 1.3 以提高安全性。

4. 确保使用的 Web 浏览器支持所选的 TLS 版本

在 Web 开发或日常浏览中,您可能需要确保浏览器和服务器支持特定版本的 TLS。例如,现代浏览器(如 Chrome 和 Firefox)已经默认支持 TLS 1.2 和 TLS 1.3,且通常会自动选择最高支持的协议。

查看浏览器中的 TLS 版本:
  1. Chrome:

    • 打开 Chrome 浏览器,访问一个启用了 HTTPS 的网站。
    • 右键点击页面并选择 检查(Inspect),打开开发者工具。
    • 转到 Security 选项卡,查看 Connection 部分,您可以看到当前使用的 TLS 版本。
  2. Firefox:

    • 右键点击页面并选择 查看页面信息(View Page Info)。
    • 转到 安全性(Security)标签页,您会看到 TLS 版本的信息。

5. 测试外部服务器的 TLS 版本支持

如果您需要检查外部服务器(如一个 Web 服务或 API)支持的 TLS 版本,可以使用命令行工具(如 OpenSSL)来进行测试。

使用 OpenSSL 检查 TLS 支持:
  1. 打开终端(Linux 或 MacOS)或 PowerShell(Windows)。

  2. 使用以下命令测试服务器对 TLS 1.2 和 TLS 1.3 的支持:

    bashCopy Code
    openssl s_client -connect <server>:443 -tls1_2
    openssl s_client -connect <server>:443 -tls1_3
  3. 如果服务器支持指定的版本,命令将成功建立连接,否则会提示错误信息。

总结:

  • 注册表方法:通过修改注册表启用或禁用 TLS 协议。
  • PowerShell 方法:修改 PowerShell 设置来控制 TLS 版本。
  • IIS 配置:针对 Web 服务器配置特定的 TLS 协议。
  • 浏览器和工具:检查和验证浏览器或外部服务器的 TLS 版本。

通过这些方法,您可以有效地管理系统上启用的 TLS 版本,确保使用强加密标准以提高安全性。如果您对 TLS 版本的兼容性或性能有任何疑问,建议定期检查相关的安全协议和最佳实践。

深入探讨一下关于 TLS 的配置和管理,特别是针对一些常见的应用场景,如何进一步优化 TLS 连接,增强安全性。

6. TLS 证书管理与验证

TLS 连接的安全性不仅仅依赖于协议版本,还与证书的配置和验证密切相关。以下是一些常见的 TLS 证书管理与验证的最佳实践:

6.1 使用强加密算法的证书

TLS 证书使用的加密算法和密钥长度对连接的安全性至关重要。现代的 TLS 证书应使用以下加密算法和密钥长度:

  • RSA:使用至少 2048 位的密钥。
  • ECC(椭圆曲线加密):使用至少 256 位的密钥,例如 P-256 曲线。
  • ECDSA:椭圆曲线数字签名算法,用于生成签名。

通过使用 RSA 2048ECC 256 以上标准的证书,您能够确保足够的安全性。尤其是在面对现代破解技术时,较短的密钥(如 1024 位 RSA)可能会很快被破解。

6.2 证书链的配置

确保 TLS 证书链完整,并且包括了 中间证书。许多证书颁发机构(CA)会提供中间证书,需要在服务器上正确配置,以便客户端能够完整验证证书链。错误的证书链配置会导致浏览器和客户端抛出 "不受信任的证书" 错误。

在 Apache、Nginx 或 IIS 等 Web 服务器上,您通常需要将中间证书与主证书一起配置,确保整个证书链的完整性。

示例(Nginx 配置):
nginxCopy Code
ssl_certificate /path/to/your/fullchain.pem;
ssl_certificate_key /path/to/your/private.key;

在这个配置中,fullchain.pem 包含了从根证书到中间证书的完整证书链。

6.3 证书自动更新与管理

建议使用像 Let's Encrypt 这样的自动化证书颁发机构,定期更新证书,以避免证书过期导致连接中断。通过 Certbot 等工具,可以自动化证书的申请和更新过程。

  • 安装 Certbot

    bashCopy Code
    sudo apt install certbot
  • 自动化证书更新: Certbot 可以自动配置您的 Web 服务器并定期更新证书。使用以下命令可以进行自动更新:

    bashCopy Code
    sudo certbot renew --quiet

通过定期自动更新证书,您可以避免因证书过期导致的安全问题。

6.4 证书透明度(Certificate Transparency)

证书透明度是一项旨在增强数字证书透明性的机制,特别是为了防止恶意或伪造的证书。在使用 ChromeFirefox 等浏览器时,支持证书透明度的证书会被公开记录在公开日志中,从而增强证书的信任度。确保您的证书支持透明度,可以提高用户对您的站点的信任度。

7. TLS 性能优化

尽管 TLS 提供了强大的加密保护,但加密和解密操作会带来一定的计算负担,影响性能。为了提高 TLS 连接的性能,您可以采取以下优化措施:

7.1 使用现代的 TLS 版本

TLS 1.3 相比 TLS 1.2 提供了显著的性能提升。TLS 1.3 减少了握手次数,简化了协议的加密算法,并且默认启用了 前向保密(Forward Secrecy),增强了隐私性和安全性。启用 TLS 1.3 可以减少握手延迟并提升整体性能。

7.2 启用会话复用(Session Resumption)

TLS 允许客户端和服务器在多个请求之间重用会话密钥,从而减少了加密操作的开销。这对于频繁的连接非常有利。

  • TLS 会话缓存:通过缓存会话密钥,客户端和服务器可以避免在每次请求时重新进行完整的握手。
  • TLS 会话票据:会话票据允许服务器将会话信息存储在客户端,并在后续连接时通过票据恢复会话。

7.3 启用 OCSP Stapling

OCSP (Online Certificate Status Protocol) 用于验证证书是否被撤销。启用 OCSP Stapling 后,Web 服务器将证书撤销状态信息直接嵌入到 TLS 握手中,从而避免客户端每次都需要查询证书颁发机构,减少延迟并提升性能。

示例(Nginx 配置):
nginxCopy Code
ssl_stapling on;
ssl_stapling_verify on;

7.4 启用 HTTP/2 或 HTTP/3

现代 Web 协议,如 HTTP/2HTTP/3,可以与 TLS 一起使用,并且对性能有显著提升。HTTP/2 引入了多路复用技术,可以减少延迟并提高并发性能。HTTP/3 基于 QUIC 协议,通过 UDP 进一步降低了连接延迟。

确保您的 Web 服务器支持 HTTP/2 或 HTTP/3,以便在 TLS 上获得更好的性能表现。

8. TLS 漏洞与攻击防护

虽然 TLS 本身是非常安全的,但依然存在一些攻击方法和漏洞,需要定期监控和防护。

8.1 防止 POODLE 攻击

POODLE(Padding Oracle On Downgraded Legacy Encryption)是针对 SSL 3.0 的一种攻击方式,能够通过降级攻击绕过加密安全。为防止此类攻击,应该禁用 SSL 3.0 并使用更安全的 TLS 版本(如 TLS 1.2 或 TLS 1.3)。

禁用 SSL 3.0(Nginx 配置):
nginxCopy Code
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;

8.2 防止 BEAST 攻击

BEAST(Browser Exploit Against SSL/TLS)是一种针对 TLS 1.0 的攻击,它能够通过利用 CBC(Cipher Block Chaining)模式的漏洞来解密加密数据。为避免 BEAST 攻击,建议禁用较老的加密套件,并启用支持更安全加密模式的 TLS 版本。

配置更安全的加密套件(Nginx 配置):
nginxCopy Code
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:...';

8.3 避免 RC4 加密

RC4 是一种不再安全的加密算法,应避免使用。大多数现代浏览器和服务器都已经禁用它,但仍需在服务器配置中确保禁用。

禁用 RC4(Nginx 配置):
nginxCopy Code
ssl_ciphers 'ALL:!RC4:!ADH:!LOW:!EXP:!MD5:!SSLv2:!SSLv3';

9. TLS 监控与日志

为了确保 TLS 配置的正确性并及时发现潜在问题,您应该定期监控 TLS 连接的日志。

9.1 启用访问日志

在 Web 服务器中启用访问日志,以便分析每个客户端连接的 TLS 版本、加密套件、证书等信息。这有助于发现使用过时加密或存在安全问题的客户端。

9.2 使用第三方工具进行安全扫描

  • Qualys SSL Labs:提供在线工具,可以扫描您服务器的 TLS 配置并生成安全评分,帮助您评估是否需要进一步的改进。
  • sslyze:一个强大的命令行工具,可以扫描服务器并报告 TLS 配置的安全性。

总结:

  • TLS 版本和证书管理:确保启用 TLS 1.2 或更高版本,使用强加密的证书,保持证书链的完整性,并定期更新证书。
  • 性能优化:启用 TLS 1.3、会话复用、OCSP Stapling 等优化技术,以提升连接的性能。
  • 防御常见攻击:禁用 SSL 3.0 和弱加密算法,避免已知漏洞攻击(如 POODLE、BEAST)。
  • 监控与日志:启用访问日志,并定期使用第三方工具扫描和评估 TLS 配置的安全性。

通过这些最佳实践,您可以确保系统的 TLS 配置安全、性能优化且符合最新的安全标准。


TLS 1.3(Transport Layer Security 1.3)是最新版本的传输层安全协议,用于加密互联网上的数据传输。它在许多方面比其前身TLS 1.2更安全、更高效。TLS 1.3 引入了一些重大变更,以提高安全性、减少连接延迟,并简化协议的实现。

让我们从“是什么”、“怎么样”和“为什么”这几个角度来深入了解 TLS 1.3。

1. 是什么?

TLS 1.3 是一种加密协议,用于保护网络通信中的数据,尤其是在 Web 浏览器和 Web 服务器之间的数据传输中。TLS 协议在网络上提供了数据加密、完整性检查和身份认证,广泛应用于 HTTPS、SMTP、IMAPS 等协议中。

TLS 1.3 是 TLS 协议的最新版本,它相较于之前的版本(如 TLS 1.2)进行了一些重要的改进。TLS 1.3 设计上重点加强了安全性,并减少了协议的复杂性和连接延迟。

2. 怎么样?(工作原理)

TLS 1.3 与前几个版本的工作原理相似,主要分为以下几个阶段:

(1) 握手阶段(Handshake)

TLS 握手是客户端与服务器建立安全连接的过程。在 TLS 1.3 中,握手过程比 TLS 1.2 更加简化,减少了不必要的步骤和复杂的协议选项。

TLS 1.3 握手流程

  1. ClientHello:客户端向服务器发送请求,包含支持的加密算法、扩展协议、以及生成的随机数等信息。

  2. ServerHello:服务器响应客户端的请求,选择加密套件并返回其数字证书,生成一个密钥交换的共享秘密(PreMasterSecret)。

  3. 密钥交换与身份认证

    • 在 TLS 1.3 中,使用了基于椭圆曲线 Diffie-Hellman(ECDHE)或类似机制进行密钥交换,生成会话密钥(Session Key)。
    • 在这个过程中,客户端和服务器都不会再传送任何证书链,只交换密钥信息来验证身份。
  4. Finished:双方确认协商的加密密钥已正确生成,并发送完成握手的消息。

  5. 加密通信:握手完成后,所有通信内容都通过对称加密(使用生成的会话密钥)进行加密,保证数据的机密性和完整性。

(2) 加密和数据传输

在握手完成之后,所有的通信都使用对称密钥进行加密,这个密钥只在客户端和服务器之间有效。

(3) 会话恢复

如果客户端和服务器之前有过一次握手并且使用了会话密钥,它们可以通过会话恢复机制快速恢复加密通信,而不需要重新进行完整的握手。这一机制减少了延迟。

3. 为什么?(改进与优势)

(1) 更高的安全性

  • 前向保密性(Forward Secrecy):TLS 1.3 强制要求使用前向保密机制(Perfect Forward Secrecy,PFS),这意味着即使服务器的私钥泄露,也无法解密过去的会话。TLS 1.3 采用了 Diffie-Hellman 密钥交换算法,确保每次会话的密钥交换是独立的,避免长期密钥泄露导致的风险。

  • 移除不安全的算法:TLS 1.3 删除了许多已知不安全或容易受到攻击的算法和特性,例如 RC4、MD5、SHA-1 等,加密算法的安全性得到了增强。

(2) 减少延迟

  • 零 RTT(Zero Round Trip Time):TLS 1.3 支持零 RTT会话恢复,意味着在某些情况下,客户端可以在第一次请求发送之前,就能通过缓存的会话密钥快速恢复加密连接,从而减少延迟。

  • 简化握手:与 TLS 1.2 相比,TLS 1.3 将握手流程中的步骤减少了,尤其是合并了多个消息(如证书验证、密钥交换等)并减少了往返次数(Round Trips),因此建立连接的时间大幅缩短。

(3) 简化协议

  • 减少了协议的复杂性:TLS 1.3 删除了一些不常用且容易导致漏洞的功能。例如,TLS 1.3 移除了“会话恢复”中的一些旧版本机制,简化了协议,减少了出错的机会。

  • 更简洁的加密套件:TLS 1.3 大幅减少了支持的加密套件(如 ciphersuites),并专注于使用更现代、更加安全的算法(如 AES-GCM 和 ChaCha20-Poly1305)。

(4) 增强隐私保护

  • 减少暴露的元数据:在 TLS 1.3 中,部分握手信息(如服务器证书)在一些加密流程中被进一步加密,从而提高了隐私性。例如,服务器证书和密钥交换信息会通过加密的连接进行传输,避免中间人窃取这些信息。

  • 隐藏会话信息:TLS 1.3 使用了加密的“应用数据”的协商密钥,不再显露明文的协议细节,防止第三方对握手过程进行分析。

(5) 兼容性和适应性

  • 与前版本兼容性:虽然 TLS 1.3 引入了许多新特性,但它依然保持与旧版协议的兼容性,因此许多客户端和服务器可以平滑地迁移到 TLS 1.3。

4. 为什么要升级到 TLS 1.3?

  1. 提高网站和应用的安全性:TLS 1.3 增强了对抗攻击(如中间人攻击、重放攻击)的能力,提供更强的加密保护,确保数据在传输过程中的隐私性和完整性。

  2. 降低延迟:对于需要频繁建立安全连接的应用(如在线银行、电子商务等),TLS 1.3 通过简化握手和支持零 RTT 恢复,可以显著提高响应速度,减少连接建立的延迟。

  3. 改进性能:TLS 1.3 只保留了最强的加密算法,这不仅提升了安全性,还能提高加密处理的性能,因为较旧的加密算法(如 RC4、MD5)被认为过于缓慢且不安全。

  4. 长远的兼容性:随着越来越多的浏览器和服务器开始强制使用 TLS 1.3,迁移到 TLS 1.3 将帮助确保你的应用在未来能够兼容最新的互联网安全标准。

 

TLS 1.3 是一种增强安全性、降低延迟、简化协议的现代加密协议。它通过强制前向保密性、移除过时的加密算法、简化握手过程以及加强隐私保护等方式,解决了 TLS 1.2 中的一些问题,提供了更高效、更安全的加密通信方案。随着全球互联网安全需求的提升,升级到 TLS 1.3 是增强 Web 应用安全性的重要步骤。


配置脚本通过修改注册表来禁用不安全的协议(如SSL 2.0, SSL 3.0, TLS 1.0, 和 TLS 1.1),并启用更为安全的协议(TLS 1.2 和 TLS 1.3)。以下是这段脚本的详细说明和备注:

注册表配置说明

  1. SSL 2.0 和 SSL 3.0 禁用

    • SSL 2.0 和 SSL 3.0 是较旧的协议,已经被认为不安全,容易受到各种攻击(如 POODLE 攻击)。所以这些协议在此脚本中被禁用。
    • 设置 "Enabled"=dword:00000000 以禁用,"DisabledByDefault"=dword:00000001 以确保默认情况下禁用。
    Copy Code
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0]
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Client]
    "DisabledByDefault"=dword:00000001
    "Enabled"=dword:00000000
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server]
    "Enabled"=dword:00000000
    "DisabledByDefault"=dword:00000001

    这段配置确保 SSL 2.0 无论在客户端还是服务器端都处于禁用状态。

  2. TLS 1.0 和 TLS 1.1 禁用

    • TLS 1.0 和 TLS 1.1 仍然被认为不够安全,尤其是在现代的攻击环境中。因此,它们也被禁用。
    • 设置 "Enabled"=dword:00000000 来禁用,"DisabledByDefault"=dword:00000001 确保这些协议默认被禁用。
    Copy Code
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0]
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client]
    "Enabled"=dword:00000000
    "DisabledByDefault"=dword:00000001
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server]
    "Enabled"=dword:00000000
    "DisabledByDefault"=dword:00000001

    同样,TLS 1.0 和 1.1 在客户端和服务器端都被禁用。

  3. TLS 1.2 启用

    • TLS 1.2 是当前广泛使用且被认为安全的协议版本。因此,它被启用。
    • 设置 "Enabled"=dword:00000001,确保 TLS 1.2 在客户端和服务器端都处于启用状态。
    Copy Code
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2]
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client]
    "Enabled"=dword:00000001
    "DisabledByDefault"=dword:00000000
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server]
    "Enabled"=dword:00000001
    "DisabledByDefault"=dword:00000000

    这段配置确保 TLS 1.2 在客户端和服务器端都被启用。

  4. TLS 1.3 启用

    • TLS 1.3 是最新且最安全的协议版本。虽然 Windows 7 SP1 后版本支持 TLS 1.3,但需要在启用时确保其系统版本号为 7601 及以上(Windows 7 SP1)。
    • 设置 "Enabled"=dword:00000001 来启用,"DisabledByDefault"=dword:00000000 确保它在默认情况下处于启用状态。
    Copy Code
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3]
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client]
    "DisabledByDefault"=dword:00000000
    "Enabled"=dword:00000001
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server]
    "DisabledByDefault"=dword:00000000
    "Enabled"=dword:00000001

    此配置确保 TLS 1.3 在客户端和服务器端都启用。

此脚本的目的是:

  • 禁用已知不安全的协议(SSL 2.0, SSL 3.0, TLS 1.0 和 TLS 1.1)。
  • 启用更安全的协议(TLS 1.2 和 TLS 1.3)。
  • 对于支持的 Windows 7 SP1 以上系统,启用 TLS 1.3。

确保应用此更改后,重启计算机以使配置生效,并确保所有应用程序支持启用的 TLS 版本。


 

posted @ 2024-11-07 11:56  suv789  阅读(826)  评论(0)    收藏  举报