You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows Server 2019环境下IIS 10无法启用TLS 1.3的问题求助

解决Windows Server 2019上IIS 10启用TLS 1.3的问题

我之前在Windows Server 2019环境里折腾过一模一样的问题——明明系统本身支持TLS 1.3,Schannel注册表也按要求配置了,但IIS握手时最高还是只认TLS 1.2。后来试了几个方法终于搞定,分享给你:

1. 先仔细核对Schannel注册表配置(别漏了重启!)

很多时候不是配置错了,而是没重启整个服务器(仅重启IIS服务完全没用)。确保你的注册表项完全符合要求:

  • 定位路径:HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server
    • 创建DWORD值 Enabled,设置为 1
    • 创建DWORD值 DisabledByDefault,设置为 0
  • 同时检查密码套件优先级:在HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Cipher Suites中,把TLS 1.3的套件(比如TLS_AES_256_GCM_SHA384TLS_CHACHA20_POLY1305_SHA256)移到最前面,确保优先级高于TLS 1.2的套件。

改完一定要重启服务器,让Schannel的配置彻底生效。

2. 用ARR反向代理中转TLS 1.3握手

IIS 10本身对TLS 1.3的原生支持确实有限,但Windows Server 2019的Http.sys组件是支持TLS 1.3的。我们可以用ARR(Application Request Routing)做反向代理,让ARR处理前端的TLS 1.3握手,再转发到后端的IIS应用:

  • 通过服务器管理器的Web平台安装程序,安装ARR和URL Rewrite模块
  • 在ARR中配置反向代理规则,指向你的目标IIS应用
  • 在ARR的服务器级别SSL设置里,启用TLS 1.3并绑定对应的证书
  • 后端IIS应用可以保持原有配置,因为ARR已经完成了TLS 1.3的握手环节

这个方法我亲测有效,而且不需要修改太多现有应用的配置。

3. 借助第三方工具简化配置

有个叫IIS Crypto的可视化工具可以帮你一键管理Schannel的TLS配置,它能自动生成正确的注册表项、调整密码套件顺序,直接勾选开启TLS 1.3就行。不过要注意,用工具配置后还是必须重启服务器才能生效。

另外补充一句:你提到Caddy能正常启用TLS 1.3,是因为Caddy用的是Go语言自带的TLS库,不依赖Windows的Schannel,所以不受IIS的限制。

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

火山引擎 最新活动