文章内容

2023/6/8 1:03:59,作 者: 黄兵

Windows Server 2022 IIS 10 开启 HTTP/3

最近将博客的服务器操作系统升级到 Windows Server 2022,默认使用的是 IIS 10,同时没有开启 HTTP/3,为了加快网站加载速度,需要开启 HTTP/3,下面是 Windows Server 2022 IIS 10 开启 HTTP/3 的一些操作步骤。

Windows Server 2022 引入了对 HTTP/3 协议的原生支持,这使得 IIS 网站页面的加载速度更快,同时提高了安全性。HTTP/3 的最重要特性是它基于 QUIC(Quick UDP Internet Connections)传输协议,通过 UDP 进行工作。在网络连接较慢和不稳定的情况下,使用 HTTP/3 能够带来最大的收益。接下来我们来看看如何在运行在 Windows Server 2022 上的Internet Information Service(IIS 10.0.20348+)网站中启用HTTP/3支持。

要在IIS中启用HTTP/3支持,您需要在Windows中配置一些选项:

  1. 在Windows Server上启用 TLS 1.3(用于使用QUIC和HTTP/3);
  2. 为TLS连接添加 TLS_CHACHA20_POLY1305_SHA256 密码套件;
  3. 在IIS网站的HTTP标头中添加HTTP/3响应代码;
  4. 编辑一些注册表选项以在Windows Server上启用TLS 1.3支持(在本例中,我们启用TLS 1.3的客户端和服务器支持)。

在 CMD 中输入如下面命令:

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client" /v DisabledByDefault /t REG_DWORD /d 0 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client" /v Enabled /t REG_DWORD /d 1 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server" /v DisabledByDefault /t REG_DWORD /d 0 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server" /v Enabled /t REG_DWORD /d 1 /f


IIS 支持 HTTP/3 执行如下命令:

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters" /v EnableHttp3 /t REG_DWORD /d 1 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters" /v EnableAltSvc /t REG_DWORD /d 1 /f

然后使用PowerShell命令启用特殊的TLS密码套件:

Enable-TlsCipherSuite -Name TLS_CHACHA20_POLY1305_SHA256 -Position 0

确保密码套件已经启用:

(Get-TlsCipherSuite).Name | Select-String CHACHA


然后在您的网站的响应标头中添加HTTP/3。在 IIS 中创建一个简单的网站(您可以使用默认网站进行测试),将SSL证书绑定到网站(您可以使用自签名的Windows证书,但您的客户端必须信任它),并将网站绑定到端口443(从“编辑绑定”菜单中进行)。

请注意,在IIS的网站绑定表单中出现了一些额外选项(禁用QUIC,禁用TCP上的TLS 1.3,禁用旧版TLS)。


然后打开IIS网站设置中的"HTTP响应标头"部分,并将以下选项添加到HTTP响应列表中:

名称:alt-svc 值:h3=":443"; ma=86400; persist=1


您可以使用PowerShell添加此HTTP标头选项:

Import-Module WebAdministration
$siteName ="Default Web Site"
$headerName="alt-svc"
$headerValue='h3=":443"; ma=86400; persist=1'
Add-WebConfigurationProperty -Filter "system.webServer/httpProtocol/customHeaders" -PSPath IIS:\Sites\$siteName -Name . -AtElement @{name=$headerName}-Value @{name=$headerName;value=$headerValue}

确保在Microsoft Defender防火墙中允许QUIC(端口443/UDP)流量:

Get-NetFirewallRule | ?{ $_.DisplayName -eq "World Wide Web Services (QUIC Traffic-In)" }|select name,enabled, status


如果该规则处于非活动状态,请使用PowerShell启用Windows Defender防火墙规则:

Get-NetFirewallRule IIS-WebServerRole-QUIC-In-UDP|enable-netfirewallrule

此PowerShell命令启用名为"IIS-WebServerRole-QUIC-In-UDP"的Windows Defender防火墙规则。

请重新启动Windows Server。在重启后,请确保IIS网站通过HTTP/3响应(所有现代浏览器默认支持HTTP/3协议)。

  1. 在浏览器中打开IIS网站的一个网页(我使用内置的Microsoft Edge浏览器),启用检查模式,进入网络选项卡;
  2. 添加“Protocol”列并刷新页面(按 F5);
  3. 确保在“Protocol”列中指定了 H3。这意味着使用 HTTP/3 连接到网站。



文章来源:Enable HTTP/3 Support for IIS on Windows Server 2022


其它相关推荐:

1、IIS UrlRewrite添加规则

2、IIS 对webp的支持

3、iis 无法处理MIME的解决方案

4、Enable HTTP/3 Support for IIS on Windows Server 2022

5、iis 7.5 ftp 用户无法登陆

分享到:

发表评论

评论列表