【问题标题】:Using an SSLContext to create a SocketChannel使用 SSLContext 创建 SocketChannel
【发布时间】:2015-06-17 15:50:41
【问题描述】:

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

如何从 SSLContext 中获取 SocketChannel?

【问题讨论】:

  • 让它与 Netty 一起工作。

标签: java sockets ssl channel socketchannel


【解决方案1】:

不幸的是,这并不容易。您不能直接创建自动使用来自SSLContext 的 SSL 的 SocketChannel

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

我在 GitHub 上有一个 sslclient exampleSSLSocketChannel,它显示了如何执行此操作。

【讨论】:

  • 我决定使用 Netty :) 也可以使用客户端身份验证 :)
  • 感谢您的帮助。
【解决方案2】:

你不能。这个问题没有意义。 SocketChannels 是明文。 SSLContexts 用于 SSL。

【讨论】:

    【解决方案3】:

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

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

    但是有一些选择。 TLS Channel 是一个简单的库,它正是这样做的:包装一个 SSLContext(或 SSLEngine)并公开一个 ByteChannel 接口,在内部完成繁重的工作。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-28
      • 2016-10-04
      • 1970-01-01
      • 2020-07-27
      • 1970-01-01
      • 2014-02-28
      • 1970-01-01
      • 2018-10-06
      相关资源
      最近更新 更多