文章内容
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中配置一些选项:
- 在Windows Server上启用 TLS 1.3(用于使用QUIC和HTTP/3);
- 为TLS连接添加 TLS_CHACHA20_POLY1305_SHA256 密码套件;
- 在IIS网站的HTTP标头中添加HTTP/3响应代码;
- 编辑一些注册表选项以在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协议)。
- 在浏览器中打开IIS网站的一个网页(我使用内置的Microsoft Edge浏览器),启用检查模式,进入网络选项卡;
- 添加“Protocol”列并刷新页面(按 F5);
- 确保在“Protocol”列中指定了 H3。这意味着使用 HTTP/3 连接到网站。
文章来源:Enable HTTP/3 Support for IIS on Windows Server 2022
其它相关推荐:
评论列表