前言
涉及安全传输,无非就两种解决方案:认证和授权。
今天重点讲SSL实现原理(Secure Sockets Layer)。
常用加密算法及优缺点
基于如上的优缺点,速度快的不够安全,足够安全的又没有效率,那么有没有一种加密机制是速度又快,又安全的呢?
答案:有。
HTTPS采用混合加密机制,即在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享密钥加密方式。
== HTTPS 在内容传输的加密上使用的是对称加密,非对称加密只作用在证书验证阶段。==
数字证书
公钥也是要经过传输(客户端与服务端的交互)告知对方,但是谁能保证中间没有被篡改呢?所以这时候出现了中间人,即CA认证中心(商业公司),因其权威性,我们姑且把它当做可信任。
数字证书可理解为身份证,且一般会提前在各大浏览器发布新版本时,植入CA的公钥。
数字证书用来验证服务器真实有效的身份,其身份由客户端验证,其证书由CA颁发。
通信过程
SSL握手阶段:
- 客户端发报文,内容包含客户端支持的 SSL的指定版本、加密组件(Cipher Suite)列表(所使用的加密算法及密钥长度等)。
- 服务端应答,筛选接收到的加密组件,并告诉客户端约定的加密组件;
- 服务端应答,证书
- 服务端应答,结束握手
- 客户端生成随机字符串,并用上次收到的公钥加密,发送给服务方;
- 客户端继续发送报文,并告知服务方以后我 就要用密钥发送报文了,小试一笔看看你能解析的了吗?
- 服务端应答,可以解析,此时SSL握手成功。