随着互联网的飞速发展,我们的工作生活已经离不开互联网,HTTP虽然使用极为广泛, 但是存在不小的安全缺陷, 主要是其数据的明文传送和消息完整性检测的缺乏, 而这两点恰好是网络支付,网络交易等网站应用中安全方面最需要关注的。
谷歌、火狐、360等浏览器开始要求强制使用HTTPS网站,小程序开发也必须是HTTPS网站,企业、网站网页部署HTTPS加密似乎已经势不可挡,今天来讲解一下怎么通过Nginx快速把我们的http网站升级成https。
HTTPS介绍再此之前我们先简单了解一下HTTP和HTTPS;
什么是HTTPS???HTTPS是一种通过计算机网络进行安全通信的传输协议,经8*由HTTP进行通信,利用SSL/TLS建立全信道**,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。
特点内容加密:采用混合加密技术,中间者无法直接查看明文内容;
验证身份:通过证书认证客户端访问的是自己的服务器;
保护数据完整性:防止传输的内容被中间人冒充或者篡改。
总结: HTTPS牛X!
HTTP和HTTPS的原理HTTPS 主要由两部分组成:HTTP + SSL / TLS,也就是在 HTTP 上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过 TLS 进行加密,所以传输的数据都是加密后的数据。
HTTP 原理① 客户端的浏览器首先要通过网络与服务器建立连接,该连接是通过TCP来完成,一般 TCP 连接的端口号是80。 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和许可内容。
② 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是 MIME 信息包括服务器信息、实体信息和可能的内容。
HTTPS 原理① 客户端将它所支持的算法列表和一个用作产生密钥的随机数发送给服务器;
② 服务器从算法列表中选择一种加密算法,并将它和一份包含服务器公用密钥的证书发送给客户端;该证书还包含了用于认证目的的服务器标识,服务器同时还提供了一个用作产生密钥的随机数;
③ 客户端对服务器的证书进行验证(有关验证证书,可以参考数字签名),并抽取服务器的公用密钥;然后,再产生一个称作 pre_master_secret 的随机密码串,并使用服务器的公用密钥对其进行加密(参考非对称加 / 解密),并将加密后的信息发送给服务器;
④ 客户端与服务器端根据pre_master_secret以及客户端与服务器的随机数值独立计算出加密和 MAC密钥;
⑤ 客户端将所有握手消息的 MAC 值发送给服务器;
⑥ 服务器将所有握手消息的 MAC 值发送给客户端;
HTTPS优缺点人有悲欢离合,月有阴晴圆缺,世间万物皆不可称完美,HTTPS自然也有它的优缺点。
优点使用 HTTPS 协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;
HTTPS 协议是由 SSL+HTTP构建的可进行加密传输、身份认证的网络协议,要比 HTTP安全,可防止数据在传输过程中被窃取、改变,确保数据的完整性;
HTTPS 是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本;
缺点相同网络环境下,HTTPS 协议会使页面的加载时间延长近 50%,增加 10%到 20%的耗电。此外,HTTPS 协议还会影响缓存,增加数据开销和功耗;
成本增加。部署 HTTPS 后,因为 HTTPS 协议的工作要增加额外的计算资源消耗,例如 SSL 协议加密算法和 SSL 交互次数将占用一定的计算资源和服务器成本。
配置HTTPS在网络安全如此重要的今天,HTTPS的必要性还是毋庸置疑的,话不多说,冲冲冲!
需要准备的资源 一台可用的服务器首先需要有一台可用的服务器,后续用作域名解析。如果没有服务器可以先购买一台云服务器。
一个备案过的域名需要一个备过案的域名,用于解析服务器的IP地址。在对应购买的域名的服务商网站控制台可以完成备案。
SSL证书SSL证书有免费和收费两个渠道。
我们这边主要介绍腾讯云和阿里云(排名不分先后)两个免费申请SSL证书的方式,当然资金允许情况下也可以直接购买。
阿里云申请免费SSL证书阿里云免费证书规则:自2021年起,免费证书申请将切换到证书资源包下每个实名个人/企业主体在一个自然年内可以一次性领取20张免费证书,免费证书每张证书有效期一年。免费证书仅支持绑定一个单域名,不支持绑定通配符域名或者IP。
阿里云申请免费SSL证书文档:
腾讯云申请免费SSL证书