3、命令行客户端nghttp
另外HTTP/2的服务器推送,需要nginx配置才能有效利用
通过http2_push指令配置
文章插图
这种情况下,demo.html需要用到的资源style.css、image1.jpg和image2.jpg被推送到客户端 。资源少的情况下,我们可以这么使用,但是资源多的情况下这种方式就不太现实 。
自动将资源推送给客户端
nginx支持拦截link预加载头的约定,推送这写头中标识的资源,需要在配置中启动预加载,配置http2_push_preload on
文章插图
这里也有一个问题,一般的静态资源,我们都会设置缓存有效期 。当客户端资源在缓存有效期内的时候,我们强制推送静态资源,只会增加服务器带宽的压力,所以我们需要指定客户端是否需要这些资源,并且不太可能已经缓存过,可能的方法,就是客户端在首次访问时服务端推送,并在随后的访问请求中包含cookie,服务端通过cookie去判断是否进行推送,就是有选择的向客户端推送资源,配置方法如下:
文章插图
测试如下:
文章插图
TLS 1.3TLS(Transport Layer Security Protocol,传输层安全协议)主要目的是提供隐私和数据亮哥通信应用之间的完整性 。该协议由两层组成:TLS记录协议(TLS Record)和TLS握手协议(TLS Handshake) 。
TLS协议经过很多次版本的更新,目前低版本的TLS,如SSL 3.0/TLS 1.0等,存在许多严重漏洞,目前受到主流支持的TLS协议版本是1.1和1.2,但也都已经落后于时代的需求 。在2018年8月份,IETF终于宣布TLS 1.3规范正式发布了,标准规范定义在rfc8446 。
相较于之前的版本TLS优化内容有:
- 相比过去的的版本,引入了新的密钥协商机制 — PSK
- 支持 0-RTT 数据传输,在建立连接时节省了往返时间
- 废弃了 3DES、RC4、AES-CBC 等加密组件,废弃了 SHA1、MD5 等哈希算法
- ServerHello 之后的所有握手消息采取了加密操作,可见明文大大减少
- 不再允许对加密报文进行压缩、不再允许双方发起重协商
- DSA 证书不再允许在 TLS 1.3 中使用
TLS 1.3需要openssl 1.1.1支持,在nginx上,需要nginx 1.13+支持 。
在编译nginx的时候,需要添加编译参数--with-openssl-opt=enable-tls1_3来开启TLS 1.3支持,并在配置中ssl_protocols中添加TLSv1.3,对应的TLS1.3引入了新的算法,所以ssl_ciphers也需要添加新算法
ssl_ciphers [TLS13+AESGCM+AES128|TLS13+AESGCM+AES256|TLS13+CHACHA20]:[EECDH+ECDSA+AESGCM+AES128|EECDH+ECDSA+CHACHA20]:EECDH+ECDSA+AESGCM+AES256:EECDH+ECDSA+AES128+SHA:EECDH+ECDSA+AES256+SHA:[EECDH+aRSA+AESGCM+AES128|EECDH+aRSA+CHACHA20]:EECDH+aRSA+AESGCM+AES256:EECDH+aRSA+AES128+SHA:EECDH+aRSA+AES256+SHA:RSA+AES128+SHA:RSA+AES256+SHA:RSA+3DES;
默认情况下nginx因为安全原因,没有开启TLS 1.3的 0-RTT,可以通过指令ssl_early_data on来开启 。
ECCECC(Elliptic curve cryptography,椭圆曲线密码学),一种建立公开密钥的算法,基于椭圆曲线数学 。
内置ECDSA公钥的证书一般称为ECC证书,内置RSA公钥的证书一般称为RSA证书 。
ECC算法的数学理论非常深奥和复杂,在工程应用中比较难于实现,但它的单位安全强度相对较高,它的破译或求解难度基本上是指数级的,黑客很难用通常使用的暴力破解的方法来破解 。RSA算法的特点之一是数学原理相对简单,在工程应用中比较易于实现,但它的单位安全强度相对较低 。因此,ECC算法的可以用较少的计算能力提供比RSA加密算法更高的安全强度,有效地解决了“提高安全强度必须增加密钥长度”的工程实现问题 。
与RSA算法相比,ECC算法拥有一下优势:
- 更适合于移动互联网:ECC加密算法的密钥长度很短(256位),意味着占用更少的存储空间,更低的CPU开销和占用更少的带宽 。随着越来越多的用户使用移动设备来完成各种网上活动,ECC加密算法为移动互联网安全提供更好的客户体验 。
- 更好的安全性:ECC加密算法提供更强的保护,比目前的其他加密算法能更好的防止攻击,使你的网站和基础设施比用传统的加密方法更安全,为移动互联网安全提供更好的保障 。
推荐阅读
- 免费申请 HTTPS 证书,开启全站 HTTPS
- Linux性能实时监测工具 Netdata
- 如何给域名配置https证书
- 图文教程 阿里云申请免费SSL证书实现网站HTTPS化
- MySQL中,索引,主键对数据库的性能有什么影响
- 小程序性能优化总结
- mysql优化实战:千万级数据表如何进行分页查询?
- Python密码系统速查表
- 一份SEO优化操作方案具体讲解
- JS全局变量是如何工作的?