1. 什么是HTTPS

在说HTTPS之前必须要先说一下HTTP。我们平常浏览网页用的就是HTTP协议,HTTP协议之间传输的数据都是明文,这样对于一些敏感信息传输其实是不安全的,很容易被恶意窃取。应于这样的需求,网景公司设计了SSL协议,用于对HTTP协议传输的数据进行加密,于是HTTPS就此诞生了。SSL的最后一个版本是3.0,之后IETF对SSL3.0进行了升级,于是有了TLS。实际上当前的HTTPS都是用的TLS协议,但SSL依旧被浏览器所支持。

2. HTTPS的工作原理

HTTPS在传输数据之前要求客户端与服务端之间完成一次握手过程,在这个过程中,确定以后数据传输所需要的密码信息。在整个握手过程中,主要用到了非对称加密算法、对称加密算法以及HASH算法。

以下介绍握手过程:

(1) 客户端(浏览器)将自己支持的一套加密算法发送给服务器;

(2) 服务器从中选出一组加密算法和HASH算法,并将自己的身份信息以证书的形式发送给浏览器,证书中包含了域名信息、证书颁发机构、加密公钥等等。

(3) 浏览器取得证书后,需要做下面几件事情

(a)验证证书的合法性,比如证书颁发机构是否可信任,证书中的域名与正在访问的域名是否一致等。如果证书是信任的,则在网址旁边出现一把锁(如图1),否则会给出证书不受信任的提示。

(b) 如果浏览器认为证书是受信任的或者用户接受了不信任的证书,浏览器会随机生成一个随机数,并用步骤(2)中返回的公钥进行加密;

(c) 使用约定好的HASH计算握手消息,并用上面生成的随机数进行加密,最后将生成的所有信息一起发给服务器。

  (4) 服务器接收到这些信息后需要做下面几件事情

(a) 使用自己的私钥将信息解密取出密码,然后再拿密码解密握手信息,查看HASH是否一致。

(b) 使用密码加密一段握手信息,发送给浏览器

(5) 浏览器解密并计算握手消息的HASH,如果与服务器发来的HASH一致,则握手结束。以后浏览器和客户端之间通信则通过之前浏览器生成的随机密码进行加密。

为什么要进行上面这一系列的操作呢?

  主要是为了确认双方都获得了相同的密码,并且可以成功地加密解密,为后续的数据传输做了一次测试。

3. 非对称加密算法、对称加密算法和HASH算法

非对称加密算法用于加密浏览器端生成的随机密码,因为这个密码是HTTPS数据传输的关键,所以使用了这种加密算法。非对称加密算法会生成公钥和私钥,公钥用于加密数据,因此可以随意传输。私钥用于解密数据,由服务端保管,不可泄露。

对称加密算法用于对真正传输的数据进行加密。

HASH加密算法用于验证数据的完整性。

本文内容参考http://www.guokr.com/post/114121/

【HTTPS】Https和SSL学习笔记(一)的更多相关文章

  1. 【HTTPS】Https和SSL学习笔记(二)

    此文讲述证书的相关信息,参考文章链接http://www.guokr.com/post/116169/ 一. 证书的类型 常用的几种证书如下: (1) SSL证书,用于加密HTTP (2) 代码签名证 ...

  2. SSL学习笔记

    /************************************数据类型***************************************//* Number(数值型),Bool ...

  3. 【HTTP】HTPP学习笔记

    1.了解web及网络基础 HTTP的诞生 TCP/IP协议族 应用层 FTP文件传输协议 HTTP超文本传输协议 DNS域名系统:IP地址<--->域名 传输层 TCP传输控制协议 三次握 ...

  4. https学习笔记三----OpenSSL生成root CA及签发证书

    在https学习笔记二,已经弄清了数字证书的概念,组成和在https连接过程中,客户端是如何验证服务器端的证书的.这一章,主要介绍下如何使用openssl库来创建key file,以及生成root C ...

  5. 大前端学习笔记整理【七】HTTP协议以及http与https的区别

    前言 还是老样子,新博客开始前总是想先啰嗦几句...HTTP协议其实在当初学习java时老师就有提过...但是...反正就那么过去了... 这段时间公司的项目正好要求做https的转换和迁移,然后自己 ...

  6. https 学习笔记

    参考 : http://www.cnblogs.com/JimmyZhang/archive/2008/10/02/Cryptograph.html https://blog.csdn.net/Jog ...

  7. nginx 学习笔记(9) 配置HTTPS服务器--转载

    HTTPS服务器优化SSL证书链合并HTTP/HTTPS主机基于名字的HTTPS主机带有多个主机名的SSL证书主机名指示兼容性 配置HTTPS主机,必须在server配置块中打开SSL协议,还需要指定 ...

  8. HTTP/HTTPS 学习笔记

    超文本传输协议(HyperText Transfer Protocol) 伴随着计算机网络和浏览器的诞生,HTTP1.0也随之而来,处于计算机网络中的应用层,HTTP是建立在TCP协议之上的. HTT ...

  9. 《图解http协议》之HTTPs学习笔记

    对于IP协议,并不陌生.TP协议是TCP/IP协议簇中的核心协议,也是TCP/IP的载体.所有的TCP,UDP,ICMP及IGMP数据都以IP数据报格式传输.IP提供不可靠的,无连接的数据传送服务.I ...

随机推荐

  1. SaltStack管理从这里开始

    Modules 1:查看所有module列表: salt 'jcfx-4' sys.list_modules jcfx-4: - acl - aliases - alternatives - apac ...

  2. ALM11需求类型

  3. 转载.Net MVC中Html.RenderPartial和Html.RenderAction 的应用与区别

    Html.Partial方法:是将视图内容直接生成一个字符串并返回, Html.RenderPartial方法是直接输出至当前HttpContext, 而Html.RenderAction还调用一下A ...

  4. 转载Entity Framework 5.0(EF first)中的添加,删除,修改,查询,状态跟踪操作

    转载原出处:http://www.cnblogs.com/kenshincui/p/3345586.html Entity Framework将概念模型中定义的实体和关系映射到数据源,利用实体框架可以 ...

  5. Qt学习笔记-1 开发环境建立

    关于Qt在这里不做过多介绍,吸引我的地方是有几点: 1.用C++开发语言: 2.多平台(wWindows.MAC.Linux.Android等): 3.界面所见几所得.其他的可以百度上了解: 从本文开 ...

  6. 超级MINI STLINK V2 官方固件自动升级 ST-Link 【worldsing 笔记】

    简介: 支持所有带SWIM接口的STM8系列单片机 支持所有带SWD接口的STM32系列单片机 完全兼容Keil,STVP,STVD,IAR,COSMIC,STM32 ST-LINK Utility! ...

  7. Unity3D的ugui之按钮事件

    为Unity3D的按钮添加事件有三种方式,假设我们场景中有一个Canvas对象,Canvas对象中有一个Button对象. 方式一: 创建脚本ClickObject.cs,然后将脚本添加到Canvas ...

  8. SQL Server 127个SQL server热门资料汇总

      SQL Server 127个SQL server热门资料汇总     最近有许多关于如何学习SQLSERVER的问题,其实新手入门的资源和贴子很多,现在向大家隆重推荐经过精心整理的[SQLSer ...

  9. MySQL通过RPM安装

    以前写过一篇文章,RedHat Linux 6.1 安装MySQL,本文是从解决依赖的角度上再次描述如何在Linux下以RPM包方式安装MySQL. [root@serv01 ~]# ls /iso/ ...

  10. iOS UICollectionView基础

    转载自:http://www.cnblogs.com/wayne23/p/4013522.html  初始化部分: UICollectionViewFlowLayout *flowLayout= [[ ...