openssl之SSL/TLS 处理流程

openssl对于TLS/SSL协议的实现,以及https工作原理

https执行的基本原理

        1.利用对称加密加密网页内容   

        2.使用非对称加密算法获得对称加密算法的密钥,从而保证对称加密算法的密钥的安全,就保证了对称加密算法的安全

使用可信任的数字证书存放公钥

降低公钥加密的运算量 ==> 每一次对话(session) ,客户端与服务端生成一个对话密钥(session key) 用于加密信息。由于对话密钥是对称加密算法处理,所以运算速度极快,服务器公钥只用于加密对话密钥本身,从而减少了加密运算消耗的时间。

总结出的SSL/TLS协议执行流程

1.客户端向服务器端索要并验证非对称加密算法的公钥

2.双方协商生成对称加密算法的对话密钥

3.双方使用对称加密算法和对话密钥进行加密通信

1-2这两步称为 "握手"过程

(1) 客户端发出请求 (client hello)

    客户端支持的SSL/TLS协议版本,生成随机数 用于对称加密算法的对话密钥,提供客户端支持的加密算法,以及压缩算法

(2) 服务端回应(server hello)

    服务端确认使用的加密通信的协议版本,如果不能支持客户端协议版本,服务端关闭加密通信;确认使用的加密算法,并且携带服务器证书,发送给客户端。服务端发送以下三种信息

    1.生成随机数,用于生成对称加密算法的对话密钥

    2.确认使用的加密算法

    3.服务器证书

(3) 客户端回应

    客户端取得服务端回应之后,首先验证服务器证书。证书存在问题,需要客户端进行处理,这也是为什么浏览器访问https地址有时会出现警告或者错误的原因;确认证书无误,客户端会从证书中取得服务器的非对称加密算法的公钥。同时会向服务端发送以下三种信息。

    1.一个随机数,使用随机数对服务端发送的公钥进行非对称加密,防止窃听

    2.加密改变通知,表示随后的信息使用双发协定的加密方法和密钥进行发送

    3.客户端握手结束通知,表示客户端的握手阶段已经结束,并提供前面发送内容的hash值,用于服务端校验

(4) 服务端的回应

    服务端取得客户端的生成的第三个 pre-master-key随机数,计算生成本次会话使用的对称加密算法的密钥,并向客户端发送以下两种信息。

    1.加密改变通知,表示随后的信息都将使用双方协定的对称加密算法和密钥进行加密

    2.服务端握手结束通知,表示服务端握手阶段结束。同时提供前面内容的hash值,供客户端进行校验

以上的内容是ssl/tls协议握手的过程,加密传输的过程和http是一样的。




你可能感兴趣的:(openssl之SSL/TLS 处理流程)