http与https的区别与联系_http状态码

http与https的区别与联系_http状态码HTTP与HTTPS握手的那些事

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

[转自:http://www.cnblogs.com/lovesong/p/5186200.html]

HTTP与HTTPS握手的那些事

今天我总结了什么是HTTP三次握手,还有HTTPS握手的过程以及为什么HTTPS是安全的。

前提

在讲述这两个握手时候,有一些东西需要提前说明。

HTTP与TCP/IP区别?

TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。WEB使用HTTP协议作应用层协议,以封装HTTP 文本信息,然后使用TCP/IP做传输层协议将它发到网络上。

下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI(Open System Interconnect)模型中的位置:
这里写图片描述

PS:表格来自网上资料

CA证书是什么?

CA(Certificate Authority)是负责管理和签发证书的第三方权威机构,是所有行业和公众都信任的、认可的。

CA证书,就是CA颁发的证书,可用于验证网站是否可信(针对HTTPS)、验证某文件是否可信(是否被篡改)等,也可以用一个证书来证明另一个证书是真实可信,最顶级的证书称为根证书。除了根证书(自己证明自己是可靠),其它证书都要依靠上一级的证书,来证明自己。

HTTP三次握手

HTTP(HyperText Transfer Protocol)超文本传输协议是互联网上应用最为广泛的一种网络协议。由于信息是明文传输,所以被认为是不安全的。而关于HTTP的三次握手,其实就是使用三次TCP握手确认建立一个HTTP连接。

如下图所示,SYN(synchronous)是TCP/IP建立连接时使用的握手信号、Sequence number(序列号)、Acknowledge number(确认号码),三个箭头指向就代表三次握手,完成三次握手,客户端与服务器开始传送数据。
这里写图片描述

PS:图片来自网上资料

第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

HTTPS握手过程

HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。具体是如何进行加密,解密,验证的,且看下图,下面的称为一次握手。
这里写图片描述

PS:图片以下描述摘自:http://zhuqil.cnblogs.com

  1. 客户端发起HTTPS请求

  2. 服务端的配置

    采用HTTPS协议的服务器必须要有一套数字证书,可以是自己制作或者CA证书。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用CA证书则不会弹出提示页面。这套证书其实就是一对公钥和私钥。公钥给别人加密使用,私钥给自己解密使用。

  3. 传送证书

    这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等。

  4. 客户端解析证书

    这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随即值,然后用证书对该随机值进行加密。

  5. 传送加密信息

    这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

  6. 服务段解密信息

    服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

  7. 传输加密后的信息

    这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。

  8. 客户端解密信息

    客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容。

PS: 整个握手过程第三方即使监听到了数据,也束手无策。

总结

为什么HTTPS是安全的?

在HTTPS握手的第四步中,如果站点的证书是不受信任的,会显示出现下面确认界面,确认了网站的真实性。另外第六和八步,使用客户端私钥加密解密,保证了数据传输的安全。

HTTPS和HTTP的区别

  1. https协议需要到ca申请证书或自制证书。

  2. http的信息是明文传输,https则是具有安全性的ssl加密。

  3. http是直接与TCP进行数据传输,而https是经过一层SSL(OSI表示层),用的端口也不一样,前者是80(需要国内备案),后者是443。

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

注意https加密是在传输层

https报文在被包装成tcp报文的时候完成加密的过程,无论是https的header域也好,body域也罢都是会被加密的。

当使用tcpdump或者wireshark之类的tcp层工具抓包,获取是加密的内容,而如果用应用层抓包,使用Charels(Mac)、Fildder(Windows)抓包工具,那当然看到是明文的。

PS:HTTPS本身就是为了网络的传输安全。

例子,使用wireshark抓包:

http,可以看到抓到是明文的:

https,可以看到抓到是密文的:

附录

HTTPS一般使用的加密与HASH算法如下:

非对称加密算法:RSA,DSA/DSS

对称加密算法:AES,RC4,3DES

HASH算法:MD5,SHA1,SHA256

[转自: 伯乐在线 ]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/186565.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SessionA和pplication网上聊天室的网络范例

    SessionA和pplication网上聊天室的网络范例

    2022年1月2日
    54
  • matlab中wavedec2函数,小波滤波器–wavedec2函数[通俗易懂]

    matlab中wavedec2函数,小波滤波器–wavedec2函数[通俗易懂]wavedec2函数:1.功能:实现图像(即二维信号)的多层分解.多层,即多尺度.2.格式:[c,s]=wavedec2(X,N,’wname’)[c,s]=wavedec2(X,N,Lo_D,Hi_D)(我不讨论它)3.参数说明:对图像X用wname小波基函数实现N层分解,这里的小波基函数应该根据实际情况选择,具体办法可以:db1、db2、……db45、haar.输出为c,s.c为各层分…

    2022年6月28日
    41
  • 邮件编辑指南

    邮件编辑指南

    2021年7月3日
    69
  • BigDecimal加减乘除计算

    前阵子做题遇到了大数的精确计算,再次认识了bigdecimal关于Bigdecimal意外的有许多小知识点和坑,这里特此整理一下为方便以后学习,希望能帮助到其他的萌新BigDecimal的运算——加减乘除首先是bigdecimal的初始化这里对比了两种形式,第一种直接value写数字的值,第二种用string来表示BigDecimalnum1=new…

    2022年4月7日
    235
  • js定时器setinterval_nodejs定时器

    js定时器setinterval_nodejs定时器最近帮公司的APP前端做RN,要求是用typescript,然后就掉进坑里了,别的不说,先说说setInterval()这个定时器函数,因为typescript是强类型语言,定义setInterval()必须定义其返回值,但是你无论用百度或者谷歌搜中文也好英文也罢,都告诉你setInterval()的返回值类型是number,但是真的是这样么?让我们看看如果你将setInterval()定…

    2022年9月27日
    0
  • 迭代法求行列式(线性代数公式)

    线性代数行列式计算之迭代法声明与简介线性代数行列式计算之迭代法是利用行列式逐阶展开式会发现或总结出n阶和n-1阶、n-2阶以及剩余阶的关系式,进而推算出整个行列式的最终结果。比如可以由或反过来(),总之能找出一个逐级演变的推导关系式。迭代法又称之为递推法。迭代法正向迭代根据给的行列式可以直观的找出n阶和n-1阶的关系式,这种方法叫做直接迭代法。详见如下示例:计算n阶行列式:#1思路Step1先观察行列式的特点,再整理思路Step2如果我们对第…

    2022年4月11日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号