用户启用HTTP/2和HTTP/3对SSL证书配置有不同要求,其核心区别我在下面写一下:
特性 HTTP/1.1 HTTP/2 HTTP/3 (基于QUIC)
SSL/TLS要求 可选,但强烈建议使用 必须启用 (主流浏览器强制要求) 必须启用 (加密集成在QUIC协议中)
底层传输协议 TCP TCP UDP
密钥套件要求 无特殊要求 建议支持前向保密(PFS)套件 需支持TLS 1.3及现代加密套件
协议协商方式 无 TLS握手时通过 ALPN扩展 协商 独立于TLS,在QUIC层协商或通过DNS/Alt-Svc发现
一、SSL/TLS 配置的核心要点
要正确支持HTTP/2和HTTP/3,你的SSL/TLS配置需要满足以下条件:
有效的TLS证书
这是最基础的先决条件。无论是HTTP/2还是HTTP/3,你都需要在服务器上部署一个由可信证书颁发机构(CA)签发的有效TLS证书。自签名证书通常不被浏览器信任,会导致连接失败。
启用TLS 1.2或更高版本
出于安全性和兼容性考虑,应禁用老旧、不安全的SSL/TLS协议(如SSL 2.0/3.0, TLS 1.0/1.1),并启用TLS 1.2或TLS 1.3。HTTP/3尤其需要TLS 1.3的支持,因为其加密握手与QUIC协议深度集成。
配置应用层协议协商
这是启用HTTP/2的关键步骤。你需要在服务器的TLS配置中正确启用 ALPN扩展,并在其中声明支持 h2 协议。这样,在TLS握手时,客户端和服务器就能协商使用HTTP/2。
为HTTP/3配置QUIC支持
启用HTTP/3更为复杂,因为它基于UDP的QUIC协议。除了标准的TLS配置,你还需要:
确保服务器软件支持并开启了QUIC(例如,Nginx 1.25.0以上版本有实验性支持)。
在服务器响应头中设置 Alt-Svc(替代服务)头,告知客户端该服务在另一个UDP端口上支持HTTP/3。例如:Alt-Svc: h3=":443"; ma=86400。
开放UDP端口(通常是443端口)以允许QUIC流量通过。
二、检查与验证工具
配置后,你可以使用以下工具进行验证:
浏览器开发者工具:在“网络”标签页中,查看请求的“协议”列,确认显示为 h2 或 h3。
在线测试工具:访问类似 SSL Labs Server Test 的网站,输入你的域名。在测试结果中,它不仅会评估SSL/TLS配置安全性,通常也会显示是否支持HTTP/2。
命令行工具:使用 curl 命令,例如 curl -I --http2 https://你的域名,观察返回头信息。
三、补充建议与资料
性能与安全:除了启用新协议,建议在SSL/TLS配置中启用OCSP装订以减少握手延迟,并仅使用支持前向保密的加密套件。
推荐学习:想更深入理解HTTP/2、HTTP/3与TLS握手的关系,可以阅读技术社区中关于完整握手流程的解读文章。
平台差异:如果你的网站使用了CDN或云平台(如Cloudflare),这些服务通常会默认或一键提供HTTP/2/3支持,并自动处理SSL证书。具体的启用方法需要查阅对应平台的文档。
总的来说,为HTTP/2/3配置SSL证书,关键在于拥有有效的TLS证书、使用安全的TLS版本,并确保服务器能通过ALPN或QUIC正确地宣告对新协议的支持。
我们知道用户使用的是哪种服务器软件(例如 Nginx、Apache),我们可以提供更具体的配置例子。