微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

基于证书“串行”字段的 TLS 平衡器

如何解决基于证书“串行”字段的 TLS 平衡器

我目前在客户端部署了许多设备(“D1”、“D2”、...),它们使用 TLS 连接到我的服务器(“S1”)。现在我希望(仅)其中的一部分与新服务器(“S2”)进行通信。 我唯一标识客户端的唯一方法是基于连接打开时证书的“串行”字段。我无法更改设备端的任何内容

理想情况下,我想要一个未终止的代理/平衡器,它根据证书的串行字段通过 S1 或 S2 重定向 TLS 连接。我不想在平衡器端终止,以免需要生产证书、密钥、...(以及它暗示的安全威胁)。

根据我的知识,这是我的设想:

一个从一台服务器到另一台服务器的端口重定向`

但是所有设备都在 S1 或 S2 上

将“ClientHello”从 D1 转发到 S1 S2,将“ServerHello,...,ServerHellodone”从 S1 或 S2 转发到 D1,根据“ClientKeyExchange”“serial”字段选择 S1 或S2 用于后面的消息

如果“ServerHello,ServerHellodone”由 S1 完成,我预计连接会中断一半,但连接稍后会在 S2 上继续

将所有数据包随机转发到S1或S2,一旦D1发送“ClientKeyExchange”,如果是错误的服务器,则断开连接,等待D1重试

最终这会起作用,但我想避免让 D1 重试 10 次以打开连接,因为它不走运

使用终止的平衡器(如带有选项“ssl_c_serial”的HAproxy)

这需要生产证书,密钥,...,我想避免它



这甚至可能吗?我的意思是,由于 D1 发送的第一个数据包中不包含“串行”,因此无法识别它,直到为时已晚。希望有一些我没有想到的东西。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?