如何在 IIS 上启用 HTTP/3?

Dav*_*e L 3 iis windows-server http3

新的 HTTP/3 协议应该比 HTTP/2 更快、更安全。如何在运行 IIS 网站的 Windows Server 上启用它?

Dav*_*e L 5

截至撰写本文时,HTTP/3 仅在 Windows Server 2022 上受支持。如果您使用的是任何以前的版本,恐怕您就不走运了。

假设您使用的是 Windows Server 2022,以下是启用它的方法。

步骤 1:更新 Windows 注册表

将以下文本复制并粘贴到新的 .reg 文件中。您可以将其命名为“enable-http-3.reg”

Windows Registry Editor Version 5.00

[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

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters]
"EnableHttp3"=dword:00000001
"EnableAltSvc"=dword:00000001
Run Code Online (Sandbox Code Playgroud)

记事本中的reg文件 保存后,通过双击或使用 reg.exe 在 Windows Server 2022 上执行它。

第 2 步:启用 TLS 密码

注意:根据其他用户的反馈,此步骤可能是可选的。但是,我需要在我的安装中启用它。

以管理员身份打开 PowerShell 以启用TLS_CHACHA20_POLY1305_SHA256密码套件。在 PowerShell 中执行以下命令: Enable-TlsCipherSuite -Name TLS_CHACHA20_POLY1305_SHA256 -Position 0 Powershell 截图

步骤 3:允许端口 443 上的 UDP 连接

HTTP/3 使用 QUIC 协议,该协议使用端口 443 上的传入 UDP 连接。如果您使用防火墙,则需要允许连接。该规则在 Windows 防火墙中的外观如下: 防火墙规则详细信息1 防火墙规则详细信息2

步骤 4:将 HTTP/3 响应标头添加到 IIS

HTTP/3 需要 IIS 中的一些特殊响应标头。选择网站或 IIS 中的计算机,然后选择“HTTP 响应标头”。

使用名称alt-svc和值创建一个新的响应标头h3=":443"; ma=86400; persist=1

IIS 显示 HTTP 响应标头的位置 响应头编辑器

就是这样!现在测试以确保 HTTP/3 在您的浏览器中正常工作。许多现代浏览器都支持 HTTP/3,因此您不需要更改任何配置。但是,需要注意的一件事是 HTTP/3仅适用于 HTTPS 连接,因此如果您使用 HTTP 加载网站,它将不起作用。确保在 IIS 中将网站配置为使用 HTTPS 协议。 IIS 站点绑定

您将通过浏览器的开发工具知道 HTTP/3 何时运行。打开开发人员工具,单击网络选项卡并记下该protocol列。Chrome 108.0.5359.94 截图: 在此输入图像描述

火狐107.0.1截图: 火狐截图

故障排除技巧

  • 重新启动 Windows 2022 服务器
  • 确保网站是通过 HTTPS 加载的!您在浏览器中看到锁图标了吗?
  • 在加载网站之前完全关闭浏览器(所有选项卡)并重新启动
  • 测试时通过浏览器开发者工具禁用浏览器缓存
  • 完全清除浏览器缓存并重新启动客户端计算机。

更多资源和参考: