Java非阻塞TLS PSK

时间:2015-06-23 13:30:44

标签: java ssl vert.x jsse

我正在使用框架(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,但我一直无法找到让它工作的方法。任何非阻塞/异步的解决方案都是可行的。

1 个答案:

答案 0 :(得分:0)

如果您使用的是Linux或OSX,可以选择Conscrypt(Facebook App Permission Screen)。这是一个OpenSSL / BoringSSL支持的JCA提供程序,它将为您提供SSLEngine impl,然后您可以在非阻塞模式下使用Java NIO。对于上下文,Conscrypt是Android上加密和TLS / SSL原语的默认提供者。

要与TLS-PSK一起使用,您需要使用org.conscrypt.PSKKeyManager的实现初始化Conscrypt提供的SSLContext,然后从该上下文获取SSLEngine。有关文档,请参阅PSKKeyManager接口Javadoc或非常类似的Android框架类PskKeyManager(https://conscrypt.org)的Javadoc。