【发布时间】:2015-03-22 20:19:00
【问题描述】:
我计划跨集群和跨 Web 客户端使用 vert.x 事件总线。您能否澄清一下事件总线是否可以安全地交换机密数据?如果我没看错,事件总线使用 JSON 或简单的 vertx 兼容数据类型,文档没有明确提及是否可以在通过事件总线时对其进行加密。如果有例子,请欣赏。
【问题讨论】:
我计划跨集群和跨 Web 客户端使用 vert.x 事件总线。您能否澄清一下事件总线是否可以安全地交换机密数据?如果我没看错,事件总线使用 JSON 或简单的 vertx 兼容数据类型,文档没有明确提及是否可以在通过事件总线时对其进行加密。如果有例子,请欣赏。
【问题讨论】:
我相信这个问题现在已经解决了。如果您阅读有关最近 3.3.0 版本的博客 - http://vertx.io/blog/vert-x-3-3-0-is-released/ - 会提到以下内容:
“使用此版本,您可以配置事件总线的 TCP 方面,例如使用 SSL。”
然后如果你看这里 - https://github.com/eclipse/vert.x/blob/master/src/main/java/examples/EventBusExamples.java - 你可以在 example13 中找到以下代码:
VertxOptions options = new VertxOptions()
.setEventBusOptions(new EventBusOptions()
.setSsl(true)
因此,虽然默认情况下总线的传输可能不会受到保护,但现在应该可以在需要时启用 SSL。
【讨论】:
Vert.x 事件总线目前不支持服务器之间的 SSL。这是一个在某些企业中很受欢迎的功能,但尚未在 Vert.x 2 或 3 中实现 AFAIK。
但是,关于客户端的加密,如果您指的是事件总线桥,那么它确实可以被加密。事件总线桥接器简单地包装了一个 Web 套接字以在客户端和服务器之间进行通信,因此您可以控制事件总线这方面的配置。在创建事件总线桥之前,只需在 HttpServer 上设置 SSL。在构建网桥时请注意您允许的地址权限。
更新
Vert.x 现在支持 SSL。请参阅 rdruss 的回答。
【讨论】:
NetSocket 实例在服务器之间发送消息。因此,在 Hazelcast 配置文件中设置 <ssl>true</ssl> 或任何内容只会为 Hazelcast 启用 SSL,而不为 Vert.x 事件总线启用 SSL。