我有一个应用程序,我需要使用ServerSocketChannel
和SocketChannel
,但SSLContext
给我ServerSocketFactory
它给出ServerSocket
并接受Socket
s连接。
任何解决方案?感谢有什么办法可以在ServerSocketChannel中使用SSLContext?
回答
“基本” JSSE .getSocketFactory
和.getServerSocketFactory
间接创建客户端SSLSocket
,或SSLServerSocket
这反过来又创造服务器端SSLSocket
,这在任一情况下的子类Socket
(有一些添加的方法),并同时管理SSL/TLS协议和网络I/O以简单等待的风格进行,这对于(大多数)应用程序来说是最简单的。
使用渠道,必须,而不是创建一个SSLEngine的它处理仅的SSL/TLS协议,不网络(或其他!)I/O。然后,您自己读写SocketChannel
,发送数据SSLEngine
已'包装'并将接收到的数据提供给'unwrap'。
有关概述,请参阅https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#SSLEngine其中有部分示例代码 - 对于客户端;您需要使用对等身份提示将setUseClientMode
更改为false
和而不是。 (SSL/TLS客户端必须按照服务器标识(缓存和)选择保存的会话,但服务器只使用它先前分配的会话ID和客户端记忆。)
然后请参阅javadoc(具有异常详细的介绍)在https://docs.oracle.com/javase/8/docs/api/javax/net/ssl/SSLEngine.html上的SSLEngine
类或您最喜欢的JDK/IDE中。
或Java SSLEngine example与做过示例的人有一些联系,但我没有亲自看过他们。
这样做的标准方法是使用SSLEngine。但是那个级别的认真很难使用。有一些教程,但对于典型的应用程序,使用SSLEngine应该不成问题。
前段时间我遇到了同样的问题,最后写了我自己的库。这里有一些例子,当然也有像Netty这样的项目中的代码等等。但是这两个选项都不健壮或不易重复使用。
TLS Channel将SSLEngine包装在ByteBuffer中,并允许像使用普通SocketChannels一样使用它。
- 1. 有什么办法可以在Coldfusion中使用验证码
- 2. 有什么办法可以在sql中使用函数吗?
- 3. 有什么办法可以在random.randint中使用raw_input变量吗?
- 4. 有什么办法可以在python中使用configobj写评论
- 5. 有没有什么办法可以在ScrollView之外使用SliverGrid?
- 6. 有什么办法可以在Firefox或Chrome上使用imagegrabwindow()?
- 7. 有什么办法可以chroot linux filemanager?
- 8. 有没有什么办法可以使用li:first-child和li:hover
- 9. 有没有什么办法可以从八度使用.net .dlls?
- 10. 有没有什么办法可以在eclipse中编译GnuTLS?
- 11. 有没有什么办法可以在DataGrid中显示CheckBox
- 12. 有没有什么办法可以在Rikulo中使用支持Builder模式?
- 13. 有没有什么办法可以在javafx 2.x webview中使用adsense
- 14. 有没有什么办法可以在我的程序中使用msinfo32.exe?
- 15. 有没有什么办法可以在$ project中使用$ filter和$ sum?
- 16. 有没有什么办法可以在c#中使用正则表达式?
- 17. 有什么办法可以使用Titanium检索iPhone的UUID?
- 18. 有什么办法可以让FileUtils使用UTF-8文件名?
- 19. 有什么办法可以使用LINQ进行MDX查询吗?
- 20. 有什么办法可以使用Selenium开始POST请求吗?
- 21. 有什么办法可以使用libgit2sharp恢复单个文件?
- 22. 有什么办法可以使用SqlTypes与SqlDataAdapter?
- 23. 有什么办法可以与Intel GPU一起使用libgpuarray?
- 24. 有什么办法可以避免使用三元运算符?
- 25. 有没有什么办法,使我们可以在流星使用Node.js的API?
- 26. 有什么办法可以禁用ActionBarSherlock中的Tabs .......?
- 27. 有什么办法可以防止在.NET中移动文件?
- 28. 有什么办法可以在jQuery中实现MaintainScrollPositionOnPostBack功能
- 29. 有什么办法可以在ANT中生成GUID?
- 30. 有什么办法可以在R中创建“脆弱”属性?