tencent cloud

文档反馈

SSL 单向认证和双向认证说明

最后更新时间:2021-04-20 17:55:32
    SSL(Secure Sockets Layer,安全套接字协议)是为网络通信提供安全及数据完整性的一种安全协议。本文主要介绍 SSL 单向认证和双向认证。
    说明:
    负载均衡 CLB 可在创建 TCP SSL 监听器或 HTTPS 监听器时,选择 SSL 解析方式为单向认证或双向认证,详情请参见 配置 TCP SSL 监听器配置 HTTPS 监听器

    SSL 单向认证和双向认证的区别

    SSL 单向认证 无需客户端拥有证书,只需服务端拥有证书。SSL 双向认证 需要客户端和服务端双方都拥有证书。
    SSL 单向认证相对于 SSL 双向认证的认证过程,无需在服务端验证客户端证书、以及协商加密方案,服务端发送给客户端也是未加密的密码方案(并不影响 SSL 认证过程的安全性)。
    一般 Web 应用的用户数量众多,无需在通讯层做用户身份验证,因此配置 SSL 单向认证即可。但部分金融行业用户的应用对接,可能会要求对客户端做身份验证,此时就需要做 SSL 双向认证。

    SSL 单向认证

    SSL 单向认证只需要验证服务端的身份,无需验证客户端的身份。SSL 单向认证的流程如下图所示。
    
    
    1. 客户端发起 HTTPS 建立连接请求,将客户端支持的 SSL 协议版本号、加密算法种类、生成的随机数等信息发送给服务端。
    2. 服务端向客户端返回 SSL 协议版本号、加密算法种类、生成的随机数等信息,以及服务端的证书(server.crt)。
    3. 客户端验证证书(server.crt)是否合法,并从此证书中获取服务端的公钥:
    检查证书是否过期。
    检查证书是否已经被吊销。
    检查证书是否可信。
    检查收到的证书中的域名与请求的域名是否一致。
    4. 证书验证通过后,客户端生成一个随机数(密钥 K),作为通信过程中对称加密的密钥,并用服务端证书的公钥进行加密,然后发送给服务端。
    5. 服务端收到客户端发送的加密信息后,使用私钥(server.key)进行解密,获取对称加密密钥(密钥 K)。 在接下来的会话中,客户端和服务端将会使用该对称加密密钥(密钥 K)进行通信,保证通信过程中信息的安全。

    SSL 双向认证

    SSL 双向认证需要验证客户端和服务端的身份。SSL 双向认证的流程如下图所示。
    
    
    1. 客户端发起 HTTPS 建立连接请求,将客户端支持的 SSL 协议版本号、加密算法种类、生成的随机数等信息发送给服务端。
    2. 服务端向客户端返回 SSL 协议版本号、加密算法种类、生成的随机数等信息,以及服务端的证书(server.crt)。
    3. 客户端验证证书(server.crt)是否合法,并从此证书中获取服务端的公钥:
    检查证书是否过期。
    检查证书是否已经被吊销。
    检查证书是否可信。
    检查收到的证书中的域名与请求的域名是否一致。
    4. 服务端要求客户端发送客户端的证书(client.crt),客户端将自己的证书发送至服务端。
    5. 服务端验证客户端的证书(client.crt),验证通过后,服务端使用根证书(root.crt)解密客户端证书,然后获取客户端的公钥。
    6. 客户端向服务端发送自己所支持的对称加密方案。
    7. 服务端从客户端发送过来的对称加密方案中,选择加密程度最高的加密方式,并使用客户端公钥加密后,返回给客户端。
    8. 客户端使用客户端的私钥(client.key)解密加密方案,并生成一个随机数(密钥 K),作为通信过程中对称加密的密钥,然后使用服务端证书的公钥进行加密后再发送给服务端。
    9. 服务端收到客户端发送的加密信息后,使用服务端的私钥(server.key)进行解密,获取对称加密密钥(密钥 K)。 在接下来的会话中,客户端和服务端将会使用该对称加密密钥(密钥 K)进行通信,保证通信过程中信息的安全。

    相关文档

    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持