1、什么是HTTPS?
是一种通过计算机网络进行安全通信的传输协议。HTTPS是在HTTP上建立SSL/TLS加密层,并对传输数据进行加密,简单来说就是安全版的HTTP协议。
2、TLS/SSL 协议介绍
TLS/SSL 的功能实现主要依赖于三类基本算法:散列算法 、对称加密和非对称加密,其利用非对称加密实现身份认证和密钥协商,对称加密算法采用协商的密钥对数据加密,基于散列函数验证信息的完整性。
3、加解密相关知识介绍
3.1、对称加密
加密和解密同用一个密钥的方式称为对称加密,也被叫做共享密钥加密(Common key crypto system)。
常见的对称加密有:DES(Data Encryption Standard)、AES(Advanced Encryption Standard)、RC4、IDEA
3.2、非对称加密
非对称加密加密使用一对非对称的密钥。一把叫做私有密钥
(private key),另一把叫做公开密钥(public key)。顾名思
义,私有密钥不能让其他任何人知道,而公开密钥则可以随意发
布,任何人都可以获得。也被称为公开密钥加密
(1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。
(2)甲方获取乙方的公钥,然后用它对信息加密。
(3)乙方得到加密后的信息,用私钥解密。
常见的非对称加密有:RSA算法、ECC算法
3.2、数字签名
数字签名,简单来说就是通过提供可鉴别的数字信息验自身身份的一种方式。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。分别由 发送者持有能够 代表自己身份 的 私钥 (私钥不可泄露),由接受者持有与私钥对应的公钥,能够在接受到来自发送者信息时用于验证其身份。数字签名具有验证身份和确保信息完整新的作用。
3.2.1、数字签名生成
将一段文本通过哈希(hash)生成消息摘要,再通过私钥加密处理后生成数字签名。
3.2.2、数字签名校验
假设A和B通信,A将消息和签名一起发送给B,B收到后就可以校验信息是不是A发送的,以及是不是被篡改了。
假设B知道A的公钥,通过公钥就可以解密被加密的消息摘要,然后利用哈希(hash)对收到的原文产生一个消息摘要,与上一步得到的消息摘要进行对比,如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。
3.2.3、证书颁发机构
在前文中,校验数字签名的时候,是假设知道公钥的,问题的关键是和消息一样,公钥本身不在不安全的网络中直接发送。此时,就引入了证书颁发机构(Certificate Authority,简称CA)。CA数量并不多,B客户端内置了所有受信任CA的证书。CA对A的公钥(和其他信息)数字签名后生成证书。
A将证书发送给B后,B通过CA证书的公钥验证证书签名。
B信任CA,CA信任A 使得 Bob信任A,信任链(Chain Of Trust)就是这样形成的。
事实上,B客户端内置的是CA的根证书(Root Certificate),HTTPS协议中服务器会发送证书链(Certificate Chain)给客户端。
3.2.4、证书
证书包含:
- 证书颁发机构的名称
- 证书本身的数字签名
- 证书持有者公钥
- 证书签名用到的Hash算法
数字证书认证机构的业务流程:
- 服务器的运营人员向第三方机构CA提交公钥、组织信息、个人信息(域名)等信息并申请认证;
- CA通过线上、线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法,是否拥有域名的所有权等;
- 如信息审核通过,CA会向申请者签发认证文件-证书。证书包含以下信息:申请者公钥、申请者的组织信息和个人信息、签发机构 CA的信息、有效时间、证书序列号等信息的明文,同时包含一个签名。 其中签名的产生算法:首先,使用散列函数计算公开的明文信息的信息摘要,然后,采用 CA的私钥对信息摘要进行加密,密文即签名;
- 客户端 Client 向服务器 Server 发出请求时,Server 返回证书文件;
- 客户端 Client 读取证书中的相关的明文信息,采用相同的散列函数计算得到信息摘要,然后,利用对应 CA的公钥解密签名数据,对比证书的信息摘要,如果一致,则可以确认证书的合法性,即服务器的公开密钥是值得信赖的。
- 客户端还会验证证书相关的域名信息、有效时间等信息; 客户端会内置信任CA的证书信息(包含公钥),如果CA不被信任,则找不到对应 CA的证书,证书也会被判定非法。
四、 HTTPS工作流程
二、HTTPS与HTTP区别
1、http信息是明文传输;https 则是具有安全性的SSL/TLS加密传输协议。
2、http使用的默认端口是80;https的默认端口是443
3、https对搜索引擎更友好,利于SEO,谷歌、百度优先索引HTTPS网页;
三、HTTPS对比HTTP
HTTPS 并非是应用层的一种新协议。只是 HTTP 通信接口部分用
SSL(Secure Socket Layer)和 TLS(Transport Layer Security)协议代
替而已。
- 内容加密:内容经过对称加密,每个连接生成一个唯一的加密密钥,来保证传输过程中的数据安全;
- 身份认证: 确认网站的真实性,第三方无法伪造服务端(客户端)身份
- 数据完整性: 内容传输经过完整性校验,防止内容被第三方冒充或者篡改
四、HTTPS工作流程
- Client发起一个HTTPS(https://yanyuzhe.com/)的请求,根据RFC2818的规定,Client知道需要连接Server的443(默认)端口。
- Server把事先配置好的公钥证书(public key certificate)返回给客户端。
- Client验证公钥证书:比如是否在有效期内,证书的用途是不是匹配Client请求的站点,是不是在CRL吊销列表里面,它的上一级证书是否有效,这是一个递归的过程,直到验证到根证书(操作系统内置的Root证书或者Client内置的Root证书)。如果验证通过则继续,不通过则显示警告信息。
- Client使用伪随机数生成器生成加密所使用的会话密钥,然后用证书的公钥加密这个会话密钥,发给Server。
- Server使用自己的私钥(private key)解密这个消息,得到会话密钥。至此,Client和Server双方都持有了相同的会话密钥。
- Server使用会话密钥加密“明文内容A”,发送给Client。
- Client使用会话密钥解密响应的密文,得到“明文内容A”。
- Client再次发起HTTPS的请求,使用会话密钥加密请求的“明文内容B”,然后Server使用会话密钥解密密文,得到“明文内容B”。