Nginx上部署HTTPS + HTTP2

本文详细介绍了如何在Nginx上部署HTTPS和HTTP2,包括生成自签发证书的过程,配置文件的修改,以及HTTP2的新特性如二进制协议、头部压缩、多路复用等。同时提到了私钥保护和证书链的部署,并提供了Nginx的相关SSL和HTTP2配置指令说明。
摘要由CSDN通过智能技术生成
Nginx上部署HTTPS依赖OpenSSL库和包含文件,即须先安装好libssl-dev(或者OpenSSL),且ln -s /usr/lib/x86_64-linux-gnu/libssl.so  /usr/lib/,然后在编译配置Nginx时要指定--with-http_ssl_module和--with-http_v2_module。另外,若要在本地运行openssl命令,要安装OpenSSL包,本人用的OpenSSL-1.0.2g。注:本文采用Ubuntu 16.04上的操作实例

  下图展示了数字证书(HTTPS中使用的由CA签名的公钥证书)的签名和验证原理:

 

 

 

  • TLS保障信息传输安全:对于每一次新的对话(连接握手阶段。这里讲的对话不是HTTP中涉及的应用层对话,而是TLS对话),客户端和服务端都会协商一个对话密钥和对称加密算法(了解更多可参考“加密套件”“四次握手”相关内容)用来加减密信息,这样就避免非对称加减密耗时过长,运算速度更快;而Public/Private密钥对只用于"pre-master key"的加解密。特别地,在连接断开后,旧对话的恢复(两种实现方法:session ID和session ticket)不属于建立新的对话,无需协商一个新的对话密钥和对称加密算法。

 

  • HTTP2:HTTP2 基于SPDY设计,支持HTTPS。但HTTP2与SPDY不同的是,不强制使用 HTTPS,但目前还没有浏览器支持;HTTP2 消息头的压缩算法采用 HPACK ,而非 SPDY 采用的 DELEFT。HTTP2基本兼容HTTP1.x的语义,只是改变了HTTP1.x的传输方式,在连接中是否使用HTTP2是通过协议协商(NPN、ALPN或Upgrade头)来决定的。HTTP2拥有许多新特性:
  1. 二进制协议:HTTP2.0协议采用二进制格式,实现方便且健壮;HTTP1.x采用的是文本格式
  2. 头部压缩:HTTP/1.x 每次请求,都会携带大量冗余头信息,浪费了很多带宽资源,头压缩能够很好的解决该问题
  3. 多路复用:多个请求和响应通过一个 TCP 连接并发完成,还支持请求优先级划分和流控制
  4. Server Push:服务端可以主动把 JS 和 CSS 文件推送给客户端,而不需要客户端先解析 HTML 再发送这些请求。当客户端需要的时候,它们已经在客户端了

  下图是HTTP2 Frame 格式:RFC7540 - Hypertext Transfer Protocol Version 2 (HTTP/2)

  

  

 

  • Nginx上部署HTTPS + HTTP2
  1. 自签发证书:开发测试环境下可以在其他机器上去生成证书&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值