使用SSLContext创建SocketChannel

时间:2015-04-12 06:23:29

标签: java sockets ssl channel socketchannel

我希望为SSL套接字实现NIO。但是,我发现的每个示例都使用SocketChannel.open()来获取套接字通道。

从SSLContext,我如何获得SocketChannel?

3 个答案:

答案 0 :(得分:0)

你做不到。这个问题没有意义。 SocketChannels是纯文本。 SSLContexts适用于SSL。

答案 1 :(得分:0)

遗憾的是,这并不容易。您无法直接创建SocketChannel自动使用SSLContext中的SSL。

SSLContext,您可以创建SSLEngine,并且您必须适当地调用它来处理SSL握手。这不是几行代码的问题。

我在GitHub上有一个sslclient example,其中有一个类SSLSocketChannel,显示了如何执行此操作。

答案 2 :(得分:0)

遗憾的是,标准Java库无法做到这一点。

SSL / TLS是使用SSLEngine在Java中实现的,但该类很难正确使用。

但也有选择。 TLS Channel是一个简单的库,可以完成这个任务:包装SSLContext(或SSLEngine)并公开ByteChannel接口,在内部完成繁重的工作。

(免责声明:我是图书馆的主要作者)。