# Windows TLS 加固：Schannel、密码套件与可回滚

> 用 TLS 1.2/1.3、克制的密码套件、注册表备份和客户端测试加固 IIS/Nginx，再禁用旧协议。

**测试环境**

- 版本号: 26100.33650
- 版本: Standard / Datacenter
- 架构: x64
- 证据: E1
- 核验日期: 2026-10-29

## 一句话结论

Windows TLS 是 **Schannel**；IIS/HTTP.sys 和许多服务都用它。加固要克制：

1. 盘点客户端和协议。
2. 开 TLS 1.2/1.3；客户端测试后再关 1.0/1.1。
3. 去掉已知弱套件；优先 ECDHE + AES-GCM/ChaCha20。
4. 改前备份注册表。
5. 用 `openssl s_client` 和真实客户端矩阵测。

不要把网上的“完美 TLS”注册表直接粘到生产。

## 看当前提供什么

```powershell
Get-TlsCipherSuite | Select-Object Name,Protocol
openssl s_client -connect lab.example:443 -servername lab.example -tls1_2
openssl s_client -connect lab.example:443 -servername lab.example -tls1_3
```

`openssl` 显示协商协议/套件。外部视角用 TLS 扫描器；不要只看浏览器小锁。

## 协议

注册表路径（机器策略）：

```text
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server
```

典型加固：旧协议 `Enabled=0`、`DisabledByDefault=1`；1.2/1.3 `Enabled=1`、`DisabledByDefault=0`。Schannel 改动通常要重启。

先备份：

```powershell
reg export "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL" C:\backup\schannel.reg
```

## 密码套件

```powershell
Get-TlsCipherSuite | Sort-Object Name
Disable-TlsCipherSuite -Name 'TLS_RSA_WITH_3DES_EDE_CBC_SHA'
```

优先 ECDHE + AES-GCM/ChaCha20。旧客户端还需要某 CBC 套件时不要全禁；记录例外。旧客户端可能受套件顺序影响。

## IIS 与 Nginx

- IIS 用 Schannel；站点绑定只选证书。
- Nginx 用 OpenSSL，不走 Schannel。Windows Nginx TLS 由 `ssl_protocols`/`ssl_ciphers` 决定，不是注册表。
- 同一台机器两者都有，分开加固。

> **警告: TLS 改动会把管理工具锁在外面**
>
> 禁用协议可能打挂旧 RDP/管理工具、业务客户端或监控。保留带外控制台和注册表回滚文件。

## 前后验证

```powershell
# before
openssl s_client -connect lab.example:443 -servername lab.example -tls1_2 </dev/null
# after
curl.exe -I https://lab.example/
```

至少测：当前 Chrome/Edge、移动端、API 客户端、必须支持的旧设备。

## 实验室边界

E1。实验室 WAC 用自签名证书，没有改 Schannel。注册表/套件步骤是 Server 2025 上待验证的加固计划。

## 来源

- [Microsoft Learn — TLS 注册表设置](https://learn.microsoft.com/zh-cn/windows-server/security/tls/tls-registry-settings)
- [Microsoft Learn — TLS 密码套件](https://learn.microsoft.com/zh-cn/windows/win32/secauthn/cipher-suites-in-windows-server-2022)
- [Microsoft Learn — Schannel](https://learn.microsoft.com/zh-cn/windows/win32/secauthn/schannel-credentials)

---

来源页面: https://winbook.fyi/zh/server/tls/schannel/
