首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏运维研习社

    Nginx优化之-ALPN

    Nginx主线新版本在11月2号又更新了,看了下这次的更新日志 其中第一个Change是,http2中,移除了NPN,目前HTTP/2只支持ALPN了,我们今天来说下什么是NPN与ALPN? 比NPN少了一个交互的步骤,所以ALPN是推荐的协议 所以,使用ALPN相对于NPN来说,在SSL/TLS交互握手的过程中,减少了一个TTL来回,性能相对有一定的提升 ALPN如何交互? Extension Length: 12 ALPN Protocol ALPN string length: 2 ALPN Next Protocol Extension字段中,使用了ALPN,并且列出了可以选择使用的两种ALPN Protocol:h2和http/1.1 对应的“server hello” 消息会选择出具体使用的ALPN protocol Extension Length: 3 ALPN Protocol ALPN string length: 2 ALPN Next Protocol

    1.4K30编辑于 2022-09-21
  • 来自专栏码农心语

    深入理解nginx的https alpn机制

    本文基于nginx,对alpn的实现原理进行深入的分析。 2.2 通过抓包看一下alpn的细节   下面通过TLS v1.2握手协议来查看alpn的细节,对于TLS v1.3协议,在ServerHello响应的时候由于alpn部分的信息被加密,所以查看起来比较会麻烦 ->ssl.ctx, ngx_http_ssl_alpn_select, NULL); #endif    没错,最以上源码的最后部分,nginx向openssl底层库设置了alpn的回调函数ngx_http_ssl_alpn_select 3.3 处理alpn协议回调    在握手期间,ssl底层逻辑会解析ClientHello数据报文,发现有alpn数据后,就回调前面设置好的ngx_http_ssl_alpn_select函数了。 NGX_HTTP_ALPN_PROTOS; srvlen = sizeof(NGX_HTTP_V2_ALPN_PROTO NGX_HTTP_ALPN_PROTOS) - 1;

    1.3K10编辑于 2024-04-09
  • 来自专栏程序那些事

    网络协议之:加密传输中的NPN和ALPN

    网络协议之:加密传输中的NPN和ALPN 文章目录 简介 SSL/TLS协议 NPN和ALPN 总结 简介 自从HTTP从1.1升级到了2,一切都变得不同了。 Extension Length: 12 ALPN Protocol ALPN string length: 2 ALPN Next Protocol Extension字段中,使用了ALPN,并且列出了可以选择使用的两种ALPN Protocol:h2和http/1.1。 Extension Length: 3 ALPN Protocol ALPN string length: 2 ALPN Next Protocol 总结 NPN和ALPN都是TLS的扩展,相较而言,ALPN更加好用。

    2.2K10发布于 2021-10-18
  • 来自专栏服务化进程

    grpc坑之Could not find TLS ALPN provider; no working netty-tcnative

    Initialization of bean failed; nestedexception is java.lang.IllegalStateException: Could not find TLS ALPN provider; no working netty-tcnative, Conscrypt, or Jetty NPN/ALPN available at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51) Caused by: java.lang.IllegalStateException: Could not find TLS ALPN provider; no working netty-tcnative, Conscrypt, or Jetty NPN/ALPN available at io.grpc.netty.GrpcSslContexts.defaultSslProvider

    3.2K30发布于 2020-03-19
  • 来自专栏程序那些事

    网络协议之:加密传输中的NPN和ALPN

    网络协议之:加密传输中的NPN和ALPN 文章目录 简介 SSL/TLS协议 NPN和ALPN 总结 简介 自从HTTP从1.1升级到了2,一切都变得不同了。 Extension Length: 12 ALPN Protocol ALPN string length: 2 ALPN Next Protocol Extension字段中,使用了ALPN,并且列出了可以选择使用的两种ALPN Protocol:h2和http/1.1。 Extension Length: 3 ALPN Protocol ALPN string length: 2 ALPN Next Protocol 总结 NPN和ALPN都是TLS的扩展,相较而言,ALPN更加好用。 本文已收录于 http://www.flydean.com/08-ssl-tls-npn-alpn/

    1.6K21发布于 2021-10-26
  • 来自专栏HHTjim'S 部落格

    lnmp1.3中配置Nginx启用HTTP2.0 + ALPN

    lnmp1.3中配置Nginx启用HTTP/2.0 + ALPN 作者:matrix 被围观: 4,323 次 发布时间:2017-04-17 分类:零零星星 | 无评论 » 这是一个创建于 服务器端OpenSSL库的版本要支持ALPN(1.0.2+ 目前最新为1.1.0e),之前是用SPDY,NPN,后来google只支持ALPN,也就是说未来就是HTTP/2 + ALPN 为什么我们应该尽快支持 ALPN

    81040编辑于 2022-09-26
  • 来自专栏程序那些事

    netty系列之:让TLS支持http2

    TLS的扩展协议NPN和ALPN HTTP2协议是从spdy协议发展而来的,无论是spdy还是http2都为了能在HTTPS的环境下工作,发展出来了TLS协议的扩展。 其中ALPN可以在客户端首次和服务器端进行握手的时候,就列出客户端支持的应用层数据协议,服务器端直接选择即可,因此可以比NPN少一个交互流程,更加优秀。 它提供了一个isAlpnSupported方法,根据传入provider的不同来判断,是否支持ALPN。 也就是说如果是用JDK作为默认的SSL provider的话,它是不支持ALPN的。必须升级到java9. protocol是TLS的扩展协议,像ALPN或者NPN等。

    93210发布于 2021-10-20
  • 来自专栏程序那些事

    netty系列之:让TLS支持http2

    TLS的扩展协议NPN和ALPN HTTP2协议是从spdy协议发展而来的,无论是spdy还是http2都为了能在HTTPS的环境下工作,发展出来了TLS协议的扩展。 其中ALPN可以在客户端首次和服务器端进行握手的时候,就列出客户端支持的应用层数据协议,服务器端直接选择即可,因此可以比NPN少一个交互流程,更加优秀。 它提供了一个isAlpnSupported方法,根据传入provider的不同来判断,是否支持ALPN。 也就是说如果是用JDK作为默认的SSL provider的话,它是不支持ALPN的。必须升级到java9. protocol是TLS的扩展协议,像ALPN或者NPN等。

    66420发布于 2021-10-26
  • 来自专栏IMWeb前端团队

    聊聊http/2

    rfc7540 如果要说 http/1.1 最大的改进,大概要算 长连接 吧,而 http/2 的改进则更多一点: 使用二进制传输,取代之前的文本传输 连接复用(多路复用),并行 协议握手改进(ALPN ) 重置(RST_STREAM) 优先级和依赖性 Header 压缩 服务器推 流量控制 另外,关于 ALPN 和 NPN 可以参考 https://zlb.me/2013/07/19/npn-and-alpn http://tools.ietf.org/html/rfc7301 http://caniuse.com/#feat=http2 https://zlb.me/2013/07/19/npn-and-alpn

    88770发布于 2018-01-08
  • 来自专栏与神兽党一起成长

    https的过程 (草稿)

    . * TCP_NODELAY set * Connected to baidu.com (39.156.69.79) port 443 (#0) * ALPN, offering h2 * ALPN, (IN), TLS handshake, Finished (20): * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256 * ALPN

    52420发布于 2019-11-08
  • 来自专栏仁扬笔记

    记一次 HTTPS 抓包分析和 SNI 的思考

    . * Connected to s-api.37.com.cn (106.53.109.63) port 443 (#0) * ALPN: offers h2 * ALPN: offers http/ (IN), TLS handshake, Finished (20): * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256 * ALPN 10.43.2.9/api/xxx' * Trying 10.43.2.9:443... * Connected to 10.43.2.9 (10.43.2.9) port 443 (#0) * ALPN : offers h2 * ALPN: offers http/1.1 * CAfile: /etc/ssl/cert.pem * CApath: none * (304) (OUT), TLS handshake

    1.3K00编辑于 2023-07-31
  • 来自专栏golang算法架构leetcode技术php

    golang源码分析:http代理和https代理

    . * Connected to 127.0.0.1 (127.0.0.1) port 8443 (#0) * ALPN, offering h2 * ALPN, offering http/1.1 * /127.0.0.1:8443/ * Trying 127.0.0.1:8443... * Connected to 127.0.0.1 (127.0.0.1) port 8443 (#0) * ALPN , offering h2 * ALPN, offering http/1.1 * successfully set certificate verify locations: * CAfile: / 304) (OUT), TLS handshake, Finished (20): * SSL connection using TLSv1.3 / AEAD-AES128-GCM-SHA256 * ALPN

    74610编辑于 2022-12-17
  • 来自专栏逮虾户

    Okhttp如何开启的Http2.0

    ALPN((Application Layer Protocol Negotiation)协议 ALPN (Application Layer Protocol Negotiation)是TLS的扩展 ALPN支持任意应用层协议的协商,目前应用最多是HTTP2的协商。当前主流浏览器,都只支持基于 HTTPS 部署的 HTTP/2,因为浏览器是基于ALPN协议来判断服务器是否支持HTTP2协议。 ALPN是TLS的扩展协议,而ALPN的作用就是告诉客户端,当前服务端支持的接口协议版本有哪些,当然这里会有很多种。所有上看的问题的答案基本呼之欲出,贴一张朋友吊打我的图。 Save the handshake and the ALPN protocol. // 成功之后,保存HandShake以及ALPN协议信息。 然后会通过Platform去从SSLSocket去获取ALPN的协议支持信息,当后端支持的协议内包含Http2.0时,则就会把请求升级到Http2.0阶段。

    6K40发布于 2020-10-15
  • 来自专栏IMWeb前端团队

    聊聊http/2

    rfc7540 如果要说 http/1.1 最大的改进,大概要算 长连接 吧,而 http/2 的改进则更多一点: 使用二进制传输,取代之前的文本传输 连接复用(多路复用),并行 协议握手改进(ALPN ) 重置(RST_STREAM) 优先级和依赖性 Header 压缩 服务器推 流量控制 另外,关于 ALPN 和 NPN 可以参考 https://zlb.me/2013/07/19/npn-and-alpn http://tools.ietf.org/html/rfc7301 http://caniuse.com/#feat=http2 https://zlb.me/2013/07/19/npn-and-alpn

    72820发布于 2019-12-03
  • 来自专栏owent

    接入letsencrypt+全面启用HTTP/2

    SPDY似乎是使用了NPN做协议头协商,但是新的标准化的应该使用ALPN。 但是按nginx的文档,ALPN只在openssl 1.0.2以上才支持。又然而CentOS自带的openssl版本是1.0.1。这就比较麻烦了,得自己重新编译nginx,否则没法开启ALPN。 最好在执行完lnmp_for_el7.sh后,在使用本脚本覆盖安装nginx,最好不要直接使用本脚本(直接使用的话我没有测试) # CentOS 7默认使用openssl 1.0.1,但是这个版本不支持ALPN en/docs/http/ngx_http_v2_module.html#issues # 但是nginx 1.10.0以后,只有HTTP/2模块,不再有spdy,并且除chrome外的浏览器都必须支持ALPN 我这里Firefox测试的时候还出了点小插曲,不知道那个鬼插件把我的安全设置里的security.tls.version.max设成1了,然后ALPN协商HTTP/2必须用TLSv1.2,然后一直Firefox

    64320发布于 2018-08-01
  • 来自专栏码农沉思录

    谈谈 HTTP/2 的协议协商机制

    ALPN 扩展 HTTP/2 协议本身并没有要求它必须基于 HTTPS(TLS)部署,但是出于以下三个原因,实际使用中,HTTP/2 和 HTTPS 几乎都是捆绑在一起: HTTP 数据明文传输,数据很容易被中间节点窥视或篡改 随着 SPDY 被 HTTP/2 取代,NPN 也被官方修订为 ALPN(Application Layer Protocol Negotiation,应用层协议协商)。 可以看到,客户端在建立 TLS 连接的 Client Hello 握手中,通过 ALPN 扩展列出了自己支持的各种应用层协议。其中,HTTP/2 协议名称是 h2。 ? 如果服务端支持 HTTP/2,在 Server Hello 中指定 ALPN 的结果为 h2 就可以了;如果服务端不支持 HTTP/2,从客户端的 ALPN 列表中选一个自己支持的即可。 并不是所有 HTTP/2 客户端都支持 ALPN,理论上建立 TLS 连接后,依然可以再通过 HTTP Upgrade 进行协议升级,只是这样会额外引入一次往返。

    2.9K20发布于 2019-05-04
  • 来自专栏技术博文

    测试UDP端口是否开放

    containing SSL ciphers to use --ssl-servername Request distinct server name (SNI) --ssl-alpn ALPN protocol list to use --version Display Ncat's version information

    2.5K10编辑于 2024-04-04
  • 来自专栏Technology Share

    HTTP/2 探索第一篇:概念

    HTTP/2.0 Over TLS版: 客户端向服务器端请求 TLS + ALPN(Application Layer Protocol Negotiation)/NPN 服务器端返回: TLS 握手 ALPN协商过程 参考TLS握手过程图,下面是增加ALPN协商的具体过程: 客户端添加一个ProtocolNameList字段,包含支持的HTTP协议到ClientHello消息中; 服务器端查看ProtocolNameList 字段后通过ServerHello消息返回ProtocolName字段,表明被选定的协议; 通过实现ALPN,不再需要单独请求一次服务器带上Upgrade: h2c。 False Start 通常情况下,使用ALPN会搭配使用False Start,客户端在完成TLS握手前提前发送加密后的应用数据,将两次RTT TLS握手减少为一次;不过需要同时支持ALPN(NPN已经很少用啦

    4K10发布于 2016-09-28
  • Java中如何通过代理实现对HTTP2网站的访问?

    其中,最流行的是Alpn-boot库,它可以在Java中启用对HTTP2的支持。使用隧道代理实现对HTTP2网站的高速访问在Java中,可以使用隧道代理来实现对HTTP2网站的高速访问。 下面是使用隧道代理的步骤:导入Alpn-boot库:首先,需要在Java项目中导入Alpn-boot库,以启用对HTTP2的支持。

    1.3K10编辑于 2024-05-09
  • 来自专栏程序猿 Damon 带你进阶全栈

    Hertz 0.5.0 发布: 支持 HTTP3 & 基于 IDL 的 client 代码生成

    此外,我们在此基础上还增加和完善了 "ALPN"(应用层协议协商)、"QUIC/TLS parallel monitoring"(QUIC/TLS并行监听)、"Alt-Svc"(备选服务) 等功能。 同时,我们也为 StreamConn设计了 ALPN 能力,以便于在 QUIC 内提供协议协商的能力。

    90220编辑于 2023-03-08
领券