来自 电脑系统 2019-09-19 12:05 的文章
当前位置: 金沙澳门官网网址 > 电脑系统 > 正文

深入浅出,利用https实现站点的访问

本文适合对 HTTP 传输原理有一定了解,并有意进一步了解 HTTPS 传输原理的人。

简介

关于 HTTP 原理的了解,建议阮一峰老师的文章 HTTP 协议入门

      它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的安 全套接字层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是像HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用 40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。

HTTPS 不是一个新鲜的协议,它仍然是基于 HTTP 协议,可以把 HTTPS 协议看成是穿着防弹衣的 HTTP 协议,协议层对比如下图:

也就是说它的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

图片 1HTTP 和 HTTPS 协议层对比

 

基于 HTTP 协议的网络传输是明文的,对响应的内容也不加验证,这意味着只要传输内容被黑客截获,黑客就能知道传输内容,甚至能够返回一段修改后的内容给用户。这就是常说的 HTTP 劫持,一些运营商会使用这种手段往用户的网页里注入广告。

HTTPS和HTTP的区别

连接不安全 WiFi 后被窃取个人信息,以及被一些运营商注入广告是 HTTP 劫持的两种常见场景。所以棍子哥提醒您:不要随意连接使用陌生 WiFi 哦~

一、https协议需要到ca申请证书,一般免费证书很少,需要交费。

图片 2HTTP 劫持示意图

二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。

讲解 HTTPS 传输原理前,让我们来先了解几个故事轻松一下(已了解对称加密和非对称加密的朋友可以跳过这个段落)

三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

  1. HTTP 的故事

四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

小马读小学的时候就开始给小燕写情书,每次都是把折好的情书交给小明,由小明转交给小燕,最后小燕读到小马的情书。

 

这其实就是 HTTP 传输原理最简单的描述。小马代表浏览器,小明代表网络传输过程,小燕代表服务器。从这个故事很容易看出,小明可以轻而易举地偷看小马的情书。

HTTPS 传输协议原理介绍

  1. HTTPS 的故事

      我们常常在使用网上银行时看到的连接都是以“ https” 开始的,那么这个 https 是什么呢?

很快,小马和小燕读初中了,他们也开始意识到情书可能会被小明偷看,于是小马想了一个办法。小马和小燕私下里协商好一套文字映射表,比如用 A 代表“我”,用 B 代表“爱”,用 C 代表“你”。当小马想在情书里写“我爱你”的时候,小马就写“ABC”,当小燕收到情书后就拿出文字映射表,把“ABC”翻译成“我爱你”。这样,即使小明偷看情书,小明也只知道情书的内容是“ABC”,并不知道真实的内容。

这其实是表示目前连接使用了 SSL 进行加密,能保证客户端到服务器端的通信都在被保护起

这就是 HTTPS 的基本原理,但过程会稍微复杂一点,接下来我们再了解几个概念做知识储备。

来,那么浏览器是如果实现的呢?下面我们介绍一下 SSL 的基本实现方法。

对称加密

加密和解密使用同样秘钥的加密算法称之为对称加密。像上述小马和小燕之间使用同样的文字映射表进行的加密方式就属于对称加密。对称加密算法的优点是执行快,缺点是安全性较低,如果秘钥被第三方知道的话就泄密了。

 

非对称加密(又称为公开秘钥加密)

加密和解密使用不同秘钥的加密算法称之为非对称加密。非对称加密有两个秘钥——公开秘钥和私有秘钥(下文简称公钥和私钥),公钥用来加密,私钥用来解密,以公钥加密的内容只能使用私钥解密。这样的话,私钥只会让自己知道,公钥的话可以让任何人知道,保证了安全。但非对称加密的的缺点是执行慢

非对称加密的原理异常复杂,非三言两语能够解释清楚,这里大家只需要知道公钥加密只有私钥能够解密就足够了。如果有求知欲特别强的朋友硬要了解非对称加密的原理,棍子哥个建议阅读阮一峰老师的 RSA 算法原理

时序图真的是个好东西,让我们先以时序图的方式瞧一瞧 HTTPS 的整体流程,然后再一一做解释:

如果你能完全看懂时序图,那么恭喜你,可以不用浪费时间往下看了,如果你对时序图心存疑问,那么我们就来一一了解时序图中的每一个步骤。

图片 3图3-1 HTTPS 传输时序图

细心的朋友可能会问:服务器的公钥、私钥从何而来?浏览器如何校验公钥的正确性?如果你有这样的疑问,说明你对 HTTP 的传输过程还是很了解的。

对应如图的红框①区域,浏览器在整个通信的最开始会请求服务器的公钥(其实是证书,下文会说明),这里的公钥就是我们常说的 SSL 证书的一部分了。关于 SSL 证书,一般是由专门机构颁发,其实也就是颁发几个文件,其中有包含私钥信息的文件和包含公钥信息的文件,私钥文件一直秘密地保存在服务器,不会公布出去,公钥文件会在这次请求中下发给浏览器。

公钥文件除了包含有公钥信息外,还有其他信息比如域名、颁发机构、有效期等等。具体大家在 Chrome 上点击任意带有绿色锁图标的网站的绿色锁图标,然后展开细节查看。

图片 4谷歌 SSL 证书示例

对应图 3-1 的绿色框区域②。图中为了简单易懂,说服务器返回的是公钥,这并不准确,服务器其实是返回了包含公钥的证书。每一个证书都包含域名信息,操作系统也维护了一个可信的证书列表。当浏览器获得服务器返回的证书后,提取证书里的域名、办法机构等信息,然后根据本地的可信证书列表判断该证书是否可信,然后才提取证书里的公钥并接着和服务器通信,否则给出警告。以 Chrome 为例,当证书不可信时,Chrome 会提示如下图所示的界面,并且在地址栏显示红色的不安全警告,当用户点击“高级

  • 继续前往 xxx ”后才可以打开该网页。

图片 5不被信任的 HTTPS 网页示例

一般来说,高质量的 SSL 证书需要购买,而且价格不菲。如果对站点的要求没有那么高,也可以在一些网站上申请免费证书,比如SSL证书选购

  • 腾讯云、SSL For Free。

对应图 3-1 的蓝色框部分③。当浏览器信任证书并提取证书里的公钥后,会随机再生成一条临时公钥。然后浏览器用证书的公钥加密临时公钥并发送给服务器,服务器收到后用证书里私钥解密内容得到临时公钥。这这里开始进入第④步后,浏览器和服务器都知道了临时公钥的值,之后的通信,浏览器和服务器都将使用该临时公钥对传出内容进行对称加解密。

临时公钥的用途是为了加解密之后真正的传输内容,它在每次 HTTPS 的传输过程都不同,而证书里的公钥是始终保持不变的。

对应图 3-1 的黄色框部分④。以上三步其实都处于握手阶段,到这一步 HTTPS 才真正进入内容传输阶段。这之前,浏览器和服务器已经通过非对称加密的方式交换了一个临时公钥,保证没有第三方知道这个临时公钥,之后进行内容传输的时候浏览器和服务器双方都将使用该临时公钥对称加密。之所以到传输阶段选择使用对称加密的方式是因为对称加密的方式执行快。

这就是 HTTPS 的基本原理啦,如果对您有帮助的话请动动手指转发给更多有需要的人。如果有说错的地方,还请评论留言,大家一起改进。

下期预告:webpack 实战教程

     首先我们有两种基本的加解密算法类型:对称加密,非对称加密(公私钥加密),现在

介绍一下这两种加密算法的特点:

     对称加密:密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密

算法有 DES 、 AES 等,示意图如下:

 

本文由金沙澳门官网网址发布于电脑系统,转载请注明出处:深入浅出,利用https实现站点的访问

关键词: