【发布时间】:2015-06-23 13:30:44
【问题描述】:
我正在使用一个框架(Vertx 2)并且需要实现一个在 TLS 之上运行的服务。 Vertx 2 支持 TLS,但我无法让它使用必要的密码(以及其他密码):
- TLS_PSK_WITH_3DES_EDE_CBC_SHA
- TLS_PSK_WITH_AES_128_CBC_SHA
我也不能使用 Bouncy Castle 轻量级 API,因为它是基于流的和阻塞的(产生线程等来处理这个是不可接受的,因为它不会扩展)。 JESSIE 也是如此。
它必须使用带有预共享密钥的 AES 和 DES,但我一直无法找到让它工作的方法。任何非阻塞/异步的解决方案都是可行的。
【问题讨论】:
-
了解为什么不能使用密码以及 JDK 是什么会很有帮助
-
假设您的意思是 JSSE(如标记),确实在非阻塞 NIO 套接字之上提供具有“引擎”模式的非阻塞/异步操作。但这对您没有帮助,因为 JSSE 不在任何类型的 I/O 中执行 PSK。
-
@OlegMikheev 正如 dave_thompson 所说,JSSE 没有使用 PSK 实现任何密码。
-
@dave_thompson_085 我指的是 JSSE 和 JESSIE 库。有什么办法(无需重新实现 TLS)我可以将 PSK 添加到 JSSE?
-
我从未听说过 JESSIE,但从那个链接来看,它似乎已经快死了。没有 API 可以直接向 (Oracle) JSSE 添加内容,只能启用和禁用已经存在的内容。 Java 大部分是开源的(包括 JSSE)openjdk.java.net,您可以创建自己的副本并修改它,尽管我不确定 Java 许可是否允许您使用 Oracle 版本的 JRE分发它/JDK(IANAL)。 FWIW,PSK 是更简单的密钥交换之一,一旦您了解了软件结构,添加它可能就不难了。 ...