Chrome将于5月底升级至第51版,届时大部分用户将不能使用HTTP/2

早在去年8月,Chromium项目已经决定开始废弃NPN协商协议(一个传输层安全协议扩展协议)。即将在5月31日发布的Chrome 51稳定版本中,NPN协商协议将被正式废除,仅支持ALPN协商协议。也就是说,所有目前基于NPN协商协议的HTTP/2协议都将无法使用,并被降级到HTTP/1.1。

\\

这对于客户端来说没有太大影响,但是对于希望使用HTTP/2协议的服务端,将NPN升级到ALPN,并不是一件容易的事情,OpenSSL至少需要升级到1.0.2版本才可以支持ALPN。

\\

下表是常见服务器操作系统版本中自带的OpenSSL版本:

\\
操作系统OpenSSL版本
CentOS 50.9.8e
CentOS 61.0.1e
CentOS 71.0.1e
Ubuntu 14.04 LTS1.0.1f
Ubuntu 16.04 LTS1.0.2g
Debian 7 (Wheezy)1.0.1e
Debian 8 (Jessie)1.0.1k

从上表可以看出,目前常用的服务器版本中,默认OpenSSL为1.0.2的只有Ubuntu 16.04 LTS。其他版本如果要升级OpenSSL版本,成本非常高,因为有很多包依赖OpenSSL,这些包都需要重新打包并进行测试。另一方面,OpenSSL 1.0.1的支持到2016年12月31日就将结束

\\

在一个传统搭建LAMP(Linux、Apache、MySQL、PHP)服务器上,通常会依赖OpenSSL库的软件有:

\\
$ lsof | grep libssl | awk '{print $1}' | sort | uniq\anvil\fail2ban\gdbus\gmain\httpd\postfix\mysqld\NetworkManager\nginx\php-fpm\puppet\sshd\sudo\tuned\zabbix_agent
\\

也就是说,如果系统的OpenSSL版本升级,这些包都需要重新打包,如果有API不兼容的地方,升级成本将会更高。

\\

在Chrome 51稳定版之前,以下示例的协商结果会使用HTTP/2协议:

\\
coolex ~ # nghttp -v -n https://ma.ttias.be\[  0.252] Connected\[  0.507][NPN] server offers:\          * h2\          * http/1.1\The negotiated protocol: h2
\\

但是升级之后,由于NPN协商逻辑已经废弃,Chrome将无法协商获取服务器支持HTTP/2协议,进而降级成HTTP/1.1协议。

\\

对于该问题,目前来看最简单的方式,是将应用运行到诸如Docker等的容器中。

\\

感谢刘振涛对本文的审校。

\\

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值