HTTPS是如何进行SSL单向认证的?带着这个问题我们来了解HTTPS原理:

HTTPS是工作于SSL层之上的HTTP协议,SSL(安全套接层)工作于TCP层之上,向应用层提供了两个基本安全服务:认证和保密。SSL有三个子协议:握手协议,记录协议和警报协议。其中握手协议实现服务器与客户端的认证与密钥交换,记录协议进行数据加密并保证数据的完整性,警报协议则规定了错误类型和处理机制。

SSL 单向身份认证 Nginx ssl双向认证过程_http

客户端通信过程

1.客户端向服务器请求HTTPS连接

2.服务器确认并返回证书(证书含有公钥)

3.客户端验证服务器发来的证书

4.确认成功,生成随机密钥A,用公钥进行加密后发给服务器

5.服务器用私钥解密出随机密钥A,并发出确认,握手完成

使用握手时协商好的共享密钥进行保密通信

使用握手时协商好的共享密钥进行保密通信

单向认证 SSL 协议不需要客户拥有CA证书。双方具体的通讯内容,是加过密的数据,如果有第三方攻击,获得的只是加密的数据,第三方要获得有用的信息,就需要对加密的数据进行解密,这时候的安全就依赖于密码方案的安全。而幸运的是,目前所用的密码方案,只要通讯密钥长度足够的长,就足够的安全。这也是我们强调要求使用128位加密通讯的原因。

 一般Web应用都是采用SSL单向认证的,原因很简单,用户数目广泛,且无需在通讯层对用户身份进行验证,一般都在应用逻辑层来保证用户的合法登入。但如果是企业应用对接,情况就不一样,可能会要求对客户端(相对而言)做身份验证。这时就需要做SSL双向认证。