原博文
1、 SSL/TSL基本知识
(1)SSL/TLS协议运行机制:https://blog.csdn.net/fw0124/article/details/40873253 (2)图解SSL/TLS协议:https://blog.csdn.net/fw0124/article/details/40875629 (3)SSL/TLS 双向认证(一) -- SSL/TLS工作原理:https://blog.csdn.net/ustccw/article/details/76691248 (4)Java SSL/TLS 安全通讯协议介绍:https://www.ibm.com/developerworks/cn/java/j-lo-ssltls/
2、 TLS/SSL双向认证握手过程分析
(1)client_hello 支持的协议版本,比如TLS 1.0; 支持的加密算法(Cipher Specs); 客户端生成的随机数1(Challenge),稍后用于生成"对话密钥"。 (2)server_hello 确认使用的协议版本; 服务器生成的随机数2,稍后用于生成"对话密钥"; 确认使用的加密算法; 算法解释: HTTPS背后的加密算法 向客户端提供自己的证书; 请求客服端的证书。
(3)客户端发生给服务端 客户端证书发送给服务端; client_key_exchange。
(4)客户端发生给服务端 客户端证书校验; change_cipher_spec:客户端通知服务器后续的通信都采用协商的通信密钥和加密算法进行加密通信。
(5)服务端向客户端 change_cipher_spec: 验证通过之后,服务器同样发送 change_cipher_spec 以告知客户端后续的通信都采用协商的密钥与算法进行加密通信; encrypted_handshake_message:服务器也结合所有当前的通信参数信息生成一段数据并采用协商密钥 session secret 与算法加密并发送到客户端;
(6)加密通信 开始使用协商密钥与算法进行加密通信。
3、SSL双向认证过程如何进行加密数据传输业务数据的?
简单的说:
在认证初期,客户端和服务端分别生成一个随机数。后面,在第(3)步,客户端又生成pre-master-key随机数,加密后传给服务端。此时,客户端和服务端双方都有三个随机数了。
此时,客户端和服务端分别将这三个随机数通过前面协商的加密算法进行加密,各自生成本次会话所用的同一把“会话秘钥”。即:双方使用同一把密码进行对称加解密通信。
下面是详解:
4、其他关于SSL/TSL详解
(1)HTTPS加密协议详解(四):TLS/SSL握手过程:https://www.wosign.com/faq/faq2016-0309-04.htm (2)HTTPS--使用wireshark观察SSL/TLS握手过程--双向认证/单向认证:https://blog.csdn.net/xiangjai/article/details/51898657 (3)TLS/SSL 协议详解 (16) client key exchange:https://blog.csdn.net/mrpre/article/details/77868396 (4)Java Secure(SSL/TLS) Socket实现:https://blog.csdn.net/a19881029/article/details/11742361