使用 SSLContext 创建 SocketChannel
Using an SSLContext to create a SocketChannel
我希望为 SSL 套接字实现 NIO。但是,我发现的每个示例都使用 SocketChannel.open() 来获取套接字通道。
如何从 SSLContext 获取 SocketChannel?
你不能。这个问题没有意义。 SocketChannels
是明文。 SSLContexts
用于 SSL。
不幸的是,这并不容易。您不能直接创建一个 SocketChannel
自动使用来自 SSLContext
.
的 SSL
从 SSLContext
,您可以创建一个 SSLEngine
,您必须适当地调用它来处理 SSL 握手。这不是几行代码的问题。
我有一个 sslclient example on GitHub with a class SSLSocketChannel
显示如何执行此操作。
遗憾的是,标准 Java 库无法做到这一点。
SSL/TLS 在 Java 中使用 SSLEngine 实现,但是 class 很难正确使用。
但也有选择。 TLS Channel 是一个简单的库,它就是这样做的:包装一个 SSLContext(或 SSLEngine)并公开一个 ByteChannel 接口,在内部完成繁重的工作。
(免责声明:我是图书馆的主要作者)。
我希望为 SSL 套接字实现 NIO。但是,我发现的每个示例都使用 SocketChannel.open() 来获取套接字通道。
如何从 SSLContext 获取 SocketChannel?
你不能。这个问题没有意义。 SocketChannels
是明文。 SSLContexts
用于 SSL。
不幸的是,这并不容易。您不能直接创建一个 SocketChannel
自动使用来自 SSLContext
.
从 SSLContext
,您可以创建一个 SSLEngine
,您必须适当地调用它来处理 SSL 握手。这不是几行代码的问题。
我有一个 sslclient example on GitHub with a class SSLSocketChannel
显示如何执行此操作。
遗憾的是,标准 Java 库无法做到这一点。
SSL/TLS 在 Java 中使用 SSLEngine 实现,但是 class 很难正确使用。
但也有选择。 TLS Channel 是一个简单的库,它就是这样做的:包装一个 SSLContext(或 SSLEngine)并公开一个 ByteChannel 接口,在内部完成繁重的工作。
(免责声明:我是图书馆的主要作者)。