当前位置: 首页 > 科技观察

一文看懂HTTPS和SSL单向认证和双向认证

时间:2023-03-13 00:07:00 科技观察

简介本文主要介绍HTTPS和SSL单向认证和双向认证。HTTPS简介HTTPS是一种用于在计算机网络上进行安全通信的传输协议。它通过HTTP进行通信,使用SSL/TLS建立安全通道,并对数据包进行加密。使用HTTPS的主要目的是为网站服务器提供身份认证,同时保护交换数据的安全性和完整性。HTTP简介HTTP是一种超文本传输??协议,是一种请求-响应的、无状态的应用层协议。它通常基于TCP/IP协议来传输数据。它是Internet上使用最广泛的网络协议。所有WWW文件都必须遵循此标准。SSL/TLS简介TLS在传输层对网络连接进行加密,前身为SSL协议,由Netscape于1995年发布,以保证数据在互联网上的安全传输,采用数据加密(Encryption)技术来保证数据在中不会被泄露在网络传输过程中被拦截或窃听。数据加密使用对称加密和非对称加密。当TCP协议建立传输连接时,SSL首先使用非对称加密公钥对对称加密密钥进行非对称加密。建立连接后,SSL对传输内容使用对称加密。.对称加密,速度快,加密内容大,用于会话期间的消息加密。非对称加密,加密速度较慢,但??可以提供更好的认证技术,用于加密对称加密的密钥。OSI模型HTTPS和HTTP协议位于应用层,SSL\TLS协议位于传输层和应用层之间,TCP协议位于传输层,IP协议位于网络层.如下图所示:图1协议模型SSL单向认证当客户端执行HTTPS请求时,需要通过TCP协议建立和释放连接。这就涉及到TCP协议的三次握手和四次握手。想了解TCP三次握手工作原理及面试常见题总结一文和TCP四次握手工作原理及面试常见题总结一文的同学请点击链接查看.TCP连接建立后,对于HTTP,服务器可以向客户端发送数据。但是对于HTTPS,还需要运行SSL/TLS协议。SSL/TLS协议分为两层。第一层是记录协议,主要用于传输数据的加密和压缩;第二层是握手协议,它建立在第一层协议之上,主要用于双方的身份认证、加密算法的协商、数据传输前的密钥交换。SSL单向验证流程:图2SSL单向验证流程SSL单向验证分为四个步骤1)第一步,客户端向服务器发送ClientHello,请求内容包括:a.客户端版本列表支持的SSL/TLS协议;b.客户端支持的对称加密算法列表;C。客户端生成的随机数A;2)第二步,服务器响应客户端ServerHello,响应包括:a.TLS协议版本;b.双方支持的对称加密算法;C。服务器密钥库中的证书;d.服务器生成的随机数B;3)第三步,客户端收到服务器的响应,客户端检查服务器端证书是否合法,验证内容如下:服务器端证书是否过期;b.服务器端证书是否被吊销;C。服务器端证书是否可信;d..验证通过后,客户端响应服务器,响应包括:a.客户端生成一个“随机数C”,也称为“pre-master-key”,然后用服务器端证书中的密钥用公钥加密“随机数C”,将加密后的“随机数”发送出去数字C"到服务器;4)第四步,服务端使用keystore中的私钥对加密后的“随机数C”进行解密,得到“随机数C”,此时客户端和服务端都获得了随机数A,randomB,和随机数C,通过这3个随机数双发,使用相同的密钥交换算法,计算出相同的对称加密密钥,这个对称加密密钥作为客户端和客户端之间数据传输时对称加密的密钥服务器。服务器和客户端握手后,可以使用对称加密传输数据。SSL双向验证在SSL单向验证过程中,客户端会验证它访问的服务器,而服务器不会验证客户端。如果服务端验证客户端,需要开启服务端验证,即双向验证。SSL双向验证和单向验证的区别是:a.第二步,服务器会在第一次响应客户端的ServerHello报文中要求客户端提供客户端证书;b.第三步,客户端验证服务器端证书完成后,会在响应内容中添加两条信息:a)客户端证书;b)客户端证书验证消息(CertificateVerifymessage):客户端结合之前所有接收和发送的消息,并使用哈希算法得到一个哈希值,然后使用客户端密钥库的私钥对该哈希进行签名,这个签名就是证书验证消息;C。服务端收到客户端证书后,会进行如下操作:a)确认客户端发送的证书有效合法;b)使用客户端证书中的公钥对接收到的信息中的签名进行校验,确定该证书是客户端颁发的;服务器和客户端在握手后,可以使用对称方式加密传输的数据。