最近一直也在面试的过程中,可能由于各个方面的问题,导致没有时间抽出更新博客,今天开始陆续更新!!!以后自己的博客,会向React Native,swift ,以及H5延展,成为一个全栈的技术人员。本篇将讲述HTTP与HTTPS的主要区别以及HTTPS里面到底如何操作的,大约需要15-20分钟左右。

一、HTTP

HTTP:超文本传输协议(HyperText Transfer Protocol)是一种用于分布式、协作式的应用层协议。最初的HTTP用于提供一种发布和接收html页面的方法,是一种明文传输,端口是80。

二、HTTPS与HTTP的区别

1. HTTP的URL以http://”开始,并且默认端口号为80;而HTTPS的URL以“https://”开始,并且默认端口为443。

2. HTTP协议运行在TCP之上,所有的传输内容都是明文,客户端和服务端都不需要对方的身份;HTTPS是运行在SSL/TLS之上的HTTP,所有的传输内容都会经过加密,加密采用的是对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。

1)对称加密:密钥是只有一个,加密解密也为同一个密码,并且加解密速度快,我们使用典型的对称加密算法有DES、AES等;

2)非对称加密: 首先密钥是成对出现(公钥无法推算出私钥,私钥也无法推出公钥),加密解密使用不同的密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密而言速度较慢,我们使用典型的非对称加密算法有RSA、DSA等

三、HTTPS

1.为什么HTTPS采用混合加密机制?

为什么不单独采取非对称加密?因为非对称加密要比对称加密的方式更复杂,所以应该充分利用两者的优势。用非对称的方式来安全传输对称加密的密钥,而建立通信交换报文阶段就使用对称加密的方式。

2.HTTPS验证流程

(1)客户端发起HTTPS的请求,把自身支持的SSL的指定版本,通过加密算法发送服务端;

(2)服务端收到后会与自身支持的做对比,如果不支持则连接就会断开,反之则会从中选中一种加密算法和哈希算法以证书的形式返回客户端,证书中就包含了公钥、颁发机构,失效日期和网址等等;

(3)客户端收到服务器响应后做以下的几件事:

  • 验证证书合法性

  颁发证书的机构是否过期和合法,以及网址是否与正在访问地址一致等,证书验证通过后,浏览器地址栏中会加上小锁

  • 生成随机密码

  如果证书通过验证(或者用户接受了不授信的证书)这时浏览器会生成一串随机数,然后用证书中的公钥进行加密。

  • Hash握手信息

  用最开始约定的Hash方式,把握手消息进行取Hash值,然后通过随机数加密“握手消息+握手消息Hash值(签名)",最后一起发送给服务器

(4)服务器得到客户端传来的密文,用自己的私钥来解密握手信息取出随机数密码,然后再用随机数密码来解密握手消息与Hash值,并与传过来的Hash值进行对比确认是否一致。然后用随机密码加密一段握手消息发给客户端。

(5)客户端用随机数解密并且计算握手消息的Hash,如果与服务器发来的Hash一致,此时握手的过程就会结束。之后所有的通信数据都会由于先前的浏览器生成的随机密码并用对称加密算法进行加密(因为密码只有客户端和服务端知道,即使被拦截也是没有办法解密数据的,保证了通信的安全)

四、HTTPS总结

HTTPS要通信过程得到安全保证,必须使用对称加密算法,但是协商对称加密加密算法时,需要采用非对称加密算法来保证安全,然后直接使用非对称加密的过程本身也不是很安全,因为可能会有中间人篡改公钥的可能性,所以客户端和服务器不直接使用公钥,采取的是数字证书签发机构颁发的证书来保证非对称加密过程的安全。从而保证了通信的安全问题。

HTTP与HTTPS的理解的更多相关文章

  1. https 的理解

    前言: 本篇博文来记录下对http及https的理解.(会有点 杂,补缺补漏) 引用:https://blog.csdn.net/u011109589/article/details/80306479 ...

  2. 公钥与私钥对HTTPS的理解(数字证书的需要)

    本文转自某大牛链接 文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现所起的作用.接着对数字证书做一个详细的解释,并讨论一下window ...

  3. [安全] HTTPS的理解

    一.概述 在下面的章节,我们要搞明白以下几个问题: HTTP和HTTPS的区别,为什么要使用HTTPS HTTPS如何解决加密问题 HTTPS如何避免中间人攻击 CA证书是什么 CA证书是如何申请和颁 ...

  4. HTTPS深入理解

    HTTPS = HTTP + TLS

  5. 报文、http、https的理解

    一.何为报文?     报文是网络中交换与传输的数据单位,即站点一次性要发送的数据块.报文包含了将要发送的完整的数据信息,其长短不一致,长度不限且可变. 二.报文的作用     报文多是多个系统之间需 ...

  6. charles刷分微信跳一跳小程序对https的理解

    以前以为只要安装了https 客户端与服务端的数据会被加密就安全了 事实上 只要任意一款抓包工具 并伪造证书  就可以解密这个被所谓https加密的数据 如  可以下载charles的根证书  作为伪 ...

  7. 简单说一下你对http和https的理解

    http是一种超文本传输协议,传输的数据都是未加密的,也就是显示在明面上的,是现在互联网上应用最为广泛的一种网络协议,相对来说不太安全,但是所需成本很小.http一般的端口号为80. https则是具 ...

  8. HTTP 与HTTPS 简单理解

      HTTP协议,即超文本传输协议(Hypertext transfer protocol).是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因 ...

  9. 如果这样来理解HTTPS,一篇就够了!

    1.前言 可能有初学者会问,即时通讯应用的通信安全,不就是对Socket长连接进行SSL/TLS加密这些知识吗,干吗要理解HTTPS协议呢. 这其实是个误解:当今主流的移动端IM数据通信,总结下来无外 ...

随机推荐

  1. 配置maven和maven本地仓库

    l配置maven: 下载maven 网站: http://maven.apache.org/download.cgi 下载解压,在配置maven 右键本地电脑   选择 属性  在选择高级环境变量在选 ...

  2. go语言基础之字符串遍历

    Go的字符串遍历,有两种方式: utf-8遍历 unicode遍历 package main import "fmt" func main() { str := "Hel ...

  3. History of program (language).

    1 编程语言的发展历程及未来趋势 1.1 编程语言的发展 · 1946 Plankalkul     Konrad Zuse,一位德国工程师,他躲藏在巴伐利亚附近的阿尔卑斯山上时,独立开发了Plank ...

  4. 谈一谈从 Delphi 2009 之后就支援的重要功能 – 泛型 (Generic)

    前言 在C++的语言基础当中,除了物件导向.事件驱动的概念之外,模版设计(Template)也是非常重要的一环.然而,C++的开发人员能够善用模版设计的并不多.模版设计这个好物,一般还有一个名称,就是 ...

  5. [Swift]LeetCode328. 奇偶链表 | Odd Even Linked List

    Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...

  6. [Swift]LeetCode781. 森林中的兔子 | Rabbits in Forest

    In a forest, each rabbit has some color. Some subset of rabbits (possibly all of them) tell you how ...

  7. [Swift]LeetCode921.使括号有效的最少添加 | Minimum Add to Make Parentheses Valid

    Given a string S of '(' and ')' parentheses, we add the minimum number of parentheses ( '(' or ')', ...

  8. 微信小程序请求API接口PHPSESSID变化的解决方式

    微信小程序开发,请求服务器API的方法使用的是微信官方提供的wx.request()方法.在开发中发现,每一个请求都会生成一个独立的PHPSESSID,如下图示: 搜索后得知,这是由于wx.reque ...

  9. 页面的div中有滚动条,js实现刷新页面后回到记录时滚动条的位置

    当div中绑定数据,给它一个属性overflow-y: scroll,添加长度大小,使其能够出现滚动条:每次刷新的时候滚动条总是会出现在最上方,这使我很头疼,经过查阅网上资料,返现两种方法可行.如下: ...

  10. spring boot - 整合jpa多对对关系保存和查询示例

    pojo: package com.example.zs.springDataJpa; import org.hibernate.annotations.Proxy; import javax.per ...