java - DTLS 状态共享

标签 java dtls

我有一个使用 DTLS 与客户端通信的集群
其中有某种安全的分布式存储(...)

众所周知,DTLS 状态的生命周期相当长。因此,在典型的负载均衡场景中,会发生加密数据包将被转发到无法解密的服务器

我不是指由于 NAT 绑定(bind)更改而导致 src ip 发生更改的情况(这是我们无法控制的)

所以我在想...
为了不对负载均衡器造成一些严重的限制(例如:始终将此 src ip 转发到该服务器并希望得到最好的结果)并尽可能长时间地保留 DTLS 状态我应该如何使用DTLS?

是否(甚至)值得考虑使用一些 DTLS session 参数的分布式缓存来扩展某些现有的 DTLS 库(例如 scandium )(以便任何节点都能够解密数据包)?

JDK>=9 是否可行(很难遵循 ssl 代码...)

最佳答案

这些是包含一些相关信息的链接:

https://github.com/eclipse/leshan/wiki/Cluster

https://github.com/eclipse/leshan/wiki/Using-Leshan-server-in-a-cluster

Leshan项目基于Californium和Scandium,因此集群问题与您的问题非常相似。但没有太多信息。

但基本上很难确定。这取决于您的用例/集群配置并意味着一些负载测试。否则,这只是猜测。

to preserve the DTLS state as long as possible


顺便说一句,TLS 1.2 规范说:

An upper limit of 24 hours is suggested for session ID lifetimes, since an attacker who obtains a master_secret may be able to impersonate the compromised party until the corresponding session ID is retired

所以最好选择一些合理的生命周期。

关于java - DTLS 状态共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50588509/

相关文章:

networking - DTLS 消息的最小大小

java - 使用非阻塞架构管理 DTLS

java - CardLayout 不显示下一张卡

java - 查找 GlassFish 子组件版本

java - Spring MVC Hibernate MySQL - 少1天进入数据库

openssl - 当 BIO 是内存 BIO 而不是套接字 BIO 时,BIO_read/BIO_write 和 SSL_read/SSL_write 之间有什么区别?

c++ - 如何区分DTLS数据包和TCP、UDP数据包

c - Epoll 是否可以与 UDP 监听套接字一起使用以实现事件驱动的 UDP 服务器

java - 从apache tomcat API调用获取时间

javascript - java 8 Nashorn 引擎无法比较日期