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. [C++]VAssistX函数添加注释功能设置

    问题情况:每次手写注释太慢,而且不系一.问题原因:C++可以利用宏写注释,也可以使用VAssistX提供的方法.问题处理:1.安装VAssistX在VS2010上 2.VS2010菜单->VAs ...

  2. PT100测温电路经验

    P100电压采集放大电路:前半部分是4.096V恒压源电路,然后是一个桥式电压采样电路,后面是一个电压放大电路. 一 4.096V恒压源电路: 因Vref = 2.5V,故有4.096 = (1 + ...

  3. jquery validation 简单验证手机号码

    js代码 // 手机号码验证 jQuery.validator.addMethod("isMobile", function(value, element) { var lengt ...

  4. Android Handler的简单使用

    大家好我们这一节讲的是Android Handler的使用,在讲Handler之前,我们先提个小问题,就是如何让程序5秒钟更新一下Title. 首先我们看一下习惯了Java编程的人,在不知道Handl ...

  5. 【STL源码学习】STL算法学习之三

    第一章:前言 数量不多,用到的时候会很爽. 第二章:明细 STL算法中的又一个分类:分割:将已有元素按照既定规则分割成两部分.  is_partitioned 函数原型: template <c ...

  6. Xcode8适配iOS10.1真机测试

    将10.1测试包相关文件存放到指定位置,如图步骤提示: 解压文件:

  7. 如何调整 php 应用的上传附件大小?

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  8. 【转】python中常用第三方包os sys

    1. os 这个模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linux和Windows下 ...

  9. 小谈一下Java I/O

    java中的I/O操作宏观上来说就氛围两个种类,一个是字节流 ,一个是字符流,分别相应着一组类和接口 字节流: InputStream 输入流的基类 OutputStream 输出流的基类 对于字节流 ...

  10. C#_Ajax分页MVCPager

    UCJqOrderList @model PagedList<Order> <div id="dvOrders"> <table width=&quo ...