Https和SSL学习笔记(一)

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/

时间: 2024-10-12 15:42:20

Https和SSL学习笔记(一)的相关文章

Https和SSL学习笔记(二)

此文讲述证书的相关信息,参考文章链接http://www.guokr.com/post/116169/ 一. 证书的类型 常用的几种证书如下: (1) SSL证书,用于加密HTTP (2) 代码签名证书,用于签名二进制文件,比如Windows内核驱动,Firefox插件,Java代码签名等等. (3) 客户端证书,比如用于加密邮件等 (4) 双因素证书,网银专业版使用的USB Key里面用的就是这种类型的证书. 证书的格式是由X.509标准定义的. 这些证书需要由受认证的证书颁发机构(通常称为C

SSL学习笔记

/************************************数据类型***************************************//* Number(数值型),Boolean(布尔型),String(字符型),Date(日期型),Array(数组)/* 注: 1, 数值型包括整型和浮点型/* 2, 布尔型包括,T.和.F./* 3. 数组有一维数组和多位数组,数组里可以存在不同的数据类型/* 不解:Empty()只返回True或False,不知道为什么手册上将Em

Python Web学习笔记之SSL,TLS,HTTPS

一. SSL 1. SSL简介 SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持.SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装.压缩.加密等基本功能的支持. SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证.协商加密算法.交换加密密钥等. SSL协议提供的服务主要有:1)认证用户和

【安全牛学习笔记】HTTPS攻击

╋━━━━━━━━━━━━━━━━━━━━━╋ ┃HTTPS攻击                                 ┃ ┃全站HTTPS正成为潮流趋势                   ┃ ┃    淘宝.百度                            ┃ ┃HTTPS的作用                               ┃ ┃    CIA                                   ┃ ┃    解决的是信息传输过程中数据被篡

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

在https学习笔记二,已经弄清了数字证书的概念,组成和在https连接过程中,客户端是如何验证服务器端的证书的.这一章,主要介绍下如何使用openssl库来创建key file,以及生成root CA及签发子证书.学习主要参考官方文档:https://www.feistyduck.com/library/openssl-cookbook/online/ch-openssl.html# 一.openssl 简介 openssl 是目前最流行的 SSL 密码库工具,其提供了一个通用.健壮.功能完备

iOS: 学习笔记, 值与引用类型(译自: https://developer.apple.com/swift/blog/ Aug 15, 2014 Value and Reference Type

值和引用类型 Value and Reference Types 在Swift中,有两种数据类型. 一是"值类型"(value type), 它是每一个实例都保存有各自的数据,通常定义为struct, enum或tuple. 二是"引用类型"(reference types),它是多实例共享一份数据,这种类型通常定义为class. 在本文中,我们将展示值类型和引用类型各自的优点以及如何在二者之间选择. 它们有什么区别? 最基本的区别是 "值类型"

iOS: 学习笔记, 值与引用类型(译自: https://developer.apple.com/swift/blog/ Aug 15, 2014 Value and Reference Types)

值和引用类型 Value and Reference Types 在Swift中,有两种数据类型. 一是"值类型"(value type), 它是每一个实例都保存有各自的数据,通常定义为struct, enum或tuple. 二是"引用类型"(reference types),它是多实例共享一份数据,这种类型通常定义为class. 在本文中,我们将展示值类型和引用类型各自的优点以及如何在二者之间选择. 它们有什么区别? 最基本的区别是 "值类型"

Nginx 学习笔记(一)个人网站的Https配置

一.系统环境 1.系统:Ubuntu 16.04.2 LTS 2.WEB服务器:Openresty11.2.5 二.开始配置 1.获取certbot客户端 wget https://dl.eff.org/certbot-auto chmod a+x certbot-auto 2.停止Nginx服务 sudo systemctl stop nginx.service 3.生成证书 ./certbot-auto certonly --standalone --email `你的邮箱地址` -d `你

Puppet学习笔记(CentOS6.3+Puppet3.01)

Puppet学习笔记(CentOS6.3+Puppet3.01) 技术 Add comments Oct262012 下了决心,好好学习puppet,周末专门去参加一个puppet的培训,难得朋友那么热心,组织大家一起去学习.我就提前做一下功课. 2012年10月29日:参加完两天的培训,深刻体会到puppet的强悍,当然讲Puppet的朋友,还是非常有经验,不只是puppet经验,还有讲课的经验,学习一个新东西的经验.一个最大的收获:官方的文档非常好,把puppet读完,你就差不多. Cont