使用java代码请求https站点,执行tcpdump并查找“Client Key Exchange,Change Cipher Spec,Encrypted Handshake Message”将设置为两条记录: 1.客户密钥交换 2.更改密码规范,加密握手消息 如何将这三个Handshake消息组合成java中的记录?
答案 0 :(得分:1)
为什么要关心如何将它们放在电线上?你是想节省几个字节还是有合法的真正原因?
我不知道Java实现的细节以及您是否可以通过config / params来影响它,但从TLS协议的角度来看,如何在线路上发送握手消息没有任何区别。在单独记录的情况下,您只需发送一些额外的字节,这就是全部。
此外,对于这三者而言,它们不能合并为一个记录,这是有原因的。 ClientKeyExchange是一个纯文本消息,因此它会进入记录。 ChangeCipherSpec不是握手消息,而是记录类型,因此它不能与CKE进入相同的记录。由于CCS本身就是一种记录类型,因此您需要使用包含在记录中的另一个握手消息来跟踪它,因此您会看到3个单独的记录。此外,Finished消息已加密,因此您需要在记录层添加MAC,并且不能将明文握手消息组合到同一记录中。
我希望这有点清除它。