HTTPS和HTTP是什么关系?HTTPS加密流程是什么?Websocket项目中如何集成SSL?阿里云如何进行HTTPS开发。
一 HTTP和HTTPS概述
1.1 HTTP协议
- 概述
HTTP的第一个版本只能传输超文本标记语言(HTML)文件,因此被称为超文本传输协议。
- 特征
a 是一个请求响应无状态的应用层协议。
b 基于TCP/IP协议族传输(明文)数据,所有的WWWW都必须遵守这个标准。
上图解释
代码语言:txt复制域名:表示网站中不同的页面。
通信协议:浏览器和服务器之间沟通的语言。
- HTTP发展史
1.2 HTTPS
HTTPS(中文名是超文本安全协议)是在HTTP基础下加入SSL层,SSL就是加密详细内容(数据加密和身份认证)。
即可以理解为对HTTP升级版,在数据传递前进行数据加密。
- HTTPS和HTTP之间区别
1、https协议需要申请CA,证书,http不需要证书
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl/tls加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL/TLS HTTP协议构建的加密传输
5、http直接与四层交互,https先给安全层交互,然后在与四层交互
二 加密原理和算法刨析
2.1 SSL和TLS
- 概述
SSL(安全套接字协议),及继任者TLS(传输层安全)为网络通信提供安全及数据完整性
的一种安全协议。SSL和TLS在传输层和应用层之间对网络连接进行加密。
- TLS(传输层安全)历史
a 前身是SSL,最初几个版本(SSL1.0、SSL2.0、SSL3.0)。
b 1999年从 3.1 开始被 IETF 标准化并改名,发展至今已经有TLS1.0、TLS1.1、TLS1.2三个版本。
c TLS1.3改动会比xia较大,目前还未大规模推广,目前使用最广泛的是TLS 1.2。
2.2 加密详解
2.2.1 概述
访问www.taobao.com
- 访问流程
上图说明
a 通过先向服务器获取公钥。
b 产生对称加密的密钥。
c 公钥加密对称密钥后传递给服务端。
d 服务端用私钥解密,获取对称加密的密钥。
e 客户端对数据用对称密钥加密然后传给服务端。服务端用对称密钥解密获取原数据。
代码语言:txt复制总结:在数据传输过程用对称加密,因为对称加密效率高。客户端产生的对称密钥传递给服务端。
为了保证对称密钥的安全性,所以对对称密钥进行非对称加密传给服务端。然后服务端就
获取对称密钥。
- 加密算法解析
建立一个密码体制,需要五个空间组成(上图描述)
代码语言:txt复制明文M:加密前或解密后的信息;
密文C:明文加密后的信息;
密钥K:由加密密钥和解密密钥组成;
加密E:从明文到密文的变换;
解密D:从密文到明文的变换
2.2.2 加密算法
2.2.2.1 对称加密
- 描述
也叫单钥加密,是指加密和解密是使用相同的密钥。
- 优势
加密、解密运算速度快,效率高。代表算法:AES算法、DES算法、RC4,3DES 、Triple-DES, RC2等;
- 特点
发送端和接收端共享相同的密钥才能通信,一定程度上保证了安全。
代码语言:txt复制对于枚举攻击,密码长度越长越难以破解
- 案例
0010101010101010 明文
0001010001001011 秘钥
0011111011100001 密文(异或后)
0010101010101010 明文(解密后)
2.2.2.2 非对称加密
- 描述
加密和解密的密钥不一样,分别称为公钥和私钥。公钥和算法是公开的,私钥是保密的。
- 优缺
运算性能比较低、加密数据长度有限、安全性超强。例如:RSA、DSA、ECDSA、 DH、ECDHE;
- 特点
只有特定主机才有私钥,保证数据安全。
解决对称加密的密钥多管理不方便问题。
- 对称和非对称区别
对称加密效率高,但是在密钥管理上和密钥交换的时候,安全性不能保障。所以网络环境二者混合使用。
2.2.2.3 散列加密
- 描述
算法是不可逆的,用户可以通过hash算法对目标信息生成一段特定长度的唯一hash值。
却不能通过这个hash值重新获得目标信息。
- 常见算法
MD5、SHA-1、SHA-2、SHA-256 等
2.3 CA证书
- 定义
CA证书顾名思义就是由CA(Certification Authority,也叫“证书授权中心”)机构发布的数字证书。
- 证书包含内容
颁发者、使用者、版本、签名算法、使用者、公钥、指纹、指纹算法等等。
- 编码格式
X.509规范中一般推荐使用PEM格式来存储证书相关的文件。证书文件的文件名后缀一般为 .crt 或 .ce
对应私钥文件的文件名后缀一般为 .key。证书请求文件的文件名后綴为 .csr 。有时候也统一用pem作为
文件名后缀。
- 证书(浏览了解下)
版本号(Version Number):CA证书一个规范的版本号,目前为版本3,值为0x2;
序列号(Serial Number):由CA维护的,为它所发的每个证书分配一个序列号,用来追踪和撤销证
书。只要拥有签发者信息和序列号,就可以唯一标识一个证书,最大不能过20个字节;
签名算法(Signature Algorithm):数字签名所采用的算法,如:
sha256-with-RSA-Encryption
ccdsa-with-SHA2S6;
颁发者(Issuer):发证书单位的标识信息,如 ” C=CN,ST=Beijing, L=Beijing,
O=org.example.com,CN=ca.org。example.com ”;
有效期(Validity): 证书的有效期很,包括起止时间。
服务器提供服务器的公钥给ca机构,生成证书,证书一般包含以下内容:
代码语言:txt复制◆Issuer (证书的发布机构)
◆Valid from , Valid to (证书的有效期)
◆Public key (公钥)
◆Subject (主题,使用者)
◆Signature algorithm (签名所使用的算法)
◆Thumbprint, Thumbprint algorithm (指纹以及指纹算法)
- 证书生成流程
把Issuer (证书的发布机构),Public key (公钥),Subject (主题),Valid from,Valid
to(证书的有效期)等信息以明文的形式写到证书里面作为内容,然后用一个指纹算法(淘宝是sha1)计算
出这些数字证书内容的一个指纹(也就是签名),并把指纹和指纹算法用自己的私钥进行加密,然后生成
证书