`

Spring,smppapi,apache mina, ssl快速实现安全的smpp(5)

    博客分类:
  • MINA
阅读更多

接上一篇: http://618119.com/archives/2007/12/06/39.html

为 DefaultIoFilterChainBuilder 增加filter:

 

  1. import org.apache.mina.filter.LoggingFilter;   
  2. import javax.net.ssl.SSLContext;   
  3. import org.apache.mina.filter.SSLFilter;   
  4. import org.apache.mina.common.DefaultIoFilterChainBuilder;   
  5. import org.apache.mina.filter.codec.ProtocolCodecFilter;   
  6. import org.apache.commons.ssl.*;   
  7. import java.io.*;   
  8. import java.security.*;   
  9. import com.lizongbo.ssl.SMPPSSLContextFactory;   
  10. import com.lizongbo.smpp.server.codec.SMPPProtocolCodecFactory;   
  11. public static final int PORT = 5432;   
  12. public static final int CONNECT_TIMEOUT = 3// seconds   
  13. private static final boolean USE_SSL = true;   
  14. private static final boolean USE_LOG = false;   
  15. private static final boolean USE_COMPRESS = false;   
  16. private static final boolean USE_THREADPOOL = false;   
  17. /**  
  18. 添加服务端的ssl支持  
  19. */  
  20. public static void addServerSSLSupport(DefaultIoFilterChainBuilder chain) throws  
  21. Exception {   
  22. if (USE_SSL) {   
  23. SSLContext sslc = SMPPSSLContextFactory.getInstance(true);   
  24. SSLFilter sslFilter = new SSLFilter(sslc);   
  25. sslFilter.setNeedClientAuth(true);//   
  26. //sslFilter.setWantClientAuth(true);   
  27. sslFilter.setEnabledCipherSuites(new String[] {   
  28. “TLS_RSA_WITH_AES_256_CBC_SHA”   
  29. “SSL_RSA_WITH_RC4_128_MD5″//,   
  30. “TLS_RSA_WITH_AES_128_CBC_SHA”,   
  31. “TLS_DHE_RSA_WITH_AES_128_CBC_SHA”,   
  32. “TLS_DHE_DSS_WITH_AES_128_CBC_SHA”,   
  33. “TLS_RSA_WITH_AES_256_CBC_SHA”,   
  34. “TLS_DHE_RSA_WITH_AES_256_CBC_SHA”,   
  35. “SSL_RSA_WITH_RC4_128_SHA”,   
  36. “TLS_DHE_DSS_WITH_AES_256_CBC_SHA”   
  37. });   
  38. chain.addLast(”sslFilter”, sslFilter);   
  39. System.out.println(”Server SSL ON”);   
  40. }   
  41. }   
  42. /**  
  43. 添加客户端的ssl支持  
  44. */  
  45. public static void addCilentSSLSupport(DefaultIoFilterChainBuilder chain) throws  
  46. Exception {   
  47. if (USE_SSL) {   
  48. SSLContext sslc = SMPPSSLContextFactory.getInstance(false);   
  49. SSLFilter sslFilter = new SSLFilter(sslc);   
  50. sslFilter.setUseClientMode(true);   
  51. chain.addLast(”sslFilter”, sslFilter);   
  52. System.out.println(”Client SSL ON”);   
  53. }   
  54. }   
  55. /**  
  56. 添加 logger 过滤器  
  57. */  
  58. public static void addLogger(DefaultIoFilterChainBuilder chain) throws  
  59. Exception {   
  60. if (USE_LOG) {   
  61. chain.addLast(”logger”, new LoggingFilter());   
  62. System.out.println(”Logging ON”);   
  63. }   
  64. }   
  65. /**  
  66. 添加压缩 过滤器  
  67. */  
  68. public static void addCompress(DefaultIoFilterChainBuilder chain) throws  
  69. Exception {   
  70. if (USE_COMPRESS) {   
  71. chain.addLast(”compress”, new org.apache.mina.filter.CompressionFilter());   
  72. System.out.println(”Compress ON”);   
  73. }   
  74. }   
  75. /**  
  76. 添加编码解码过滤器  
  77. */  
  78. public static void addCodec(DefaultIoFilterChainBuilder chain) throws  
  79. Exception {   
  80. chain.addLast(”codec”,   
  81. new ProtocolCodecFilter(new SMPPProtocolCodecFactory()));   
  82. }   
  83. /**  
  84. 添加线程池过滤器  
  85. */  
  86. public static void addThreadPool(DefaultIoFilterChainBuilder chain) throws  
  87. Exception {   
  88. if (USE_THREADPOOL) {   
  89. chain.addLast(”threadpool”,   
  90. new org.apache.mina.filter.executor.ExecutorFilter());   
  91. System.out.println(”Threadpool ON”);   
  92. }   
  93. }   
  94. public static void main(String[] args) throws IOException, Exception {   
  95. IoAcceptor acceptor = new SocketAcceptor();   
  96. IoAcceptorConfig config = new SocketAcceptorConfig();   
  97. DefaultIoFilterChainBuilder chain = config.getFilterChain();   
  98. //Utils.addServerSSLSupport(chain);   
  99. Utils.addThreadPool(chain);   
  100. Utils.addCompress(chain);   
  101. Utils.addCodec(chain);   
  102. Utils.addLogger(chain);   
  103. SMPPServerSessionHandler handlers = new SMPPServerSessionHandler();   
  104. handlers.getHandles().put(Integer.valueOf(0×00000001),   
  105. new com.lizongbo.smpp.server.handlers.   
  106. BindReceiverHandler());   
  107. handlers.getHandles().put(Integer.valueOf(0×00000002),   
  108. new com.lizongbo.smpp.server.handlers.   
  109. BindTransmitterHandler());   
  110. handlers.getHandles().put(Integer.valueOf(0×00000004),   
  111. new com.lizongbo.smpp.server.handlers.   
  112. SubmitSMHandler());   
  113. handlers.getHandles().put(Integer.valueOf(0×00000006),   
  114. new com.lizongbo.smpp.server.handlers.   
  115. UnbindHandler());   
  116. InetSocketAddress serverAddr = new InetSocketAddress(Utils.PORT);   
  117. acceptor.bind(   
  118. serverAddr, handlers,   
  119. config);   
  120. //JMX控制   
  121. IoServiceManager serviceManager = new IoServiceManager(acceptor);   
  122. serviceManager.startCollectingStats(1000);   
  123. MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();   
  124. ObjectName name = new ObjectName(   
  125. “com.lizongbo.smpp.server:type=IoServiceManager”);   
  126. mbs.registerMBean(serviceManager, name);   
  127. System.out.println(”Listening on port ” + Utils.PORT);   
  128. }  
分享到:
评论
3 楼 wsj55133245513324 2013-01-06  
这不是bug,你将日志级别从debug提升到INFO 就好了 他不影响系统运行
2 楼 xz_xiaoshan 2013-01-01  
君心可晴 写道
请教楼主
我在mina中实现TSL/SSL双向认证连接时遇到了棘手的问题
也是刚接触的,不知如何下手
还望楼主指点

DEBUG - Unexpected exception from SSLEngine.closeInbound().
javax.net.ssl.SSLException: Inbound closed before receiving peer's close_notify: possible truncation attack?



我也有同样的问题。。
1 楼 君心可晴 2012-03-17  
请教楼主
我在mina中实现TSL/SSL双向认证连接时遇到了棘手的问题
也是刚接触的,不知如何下手
还望楼主指点

DEBUG - Unexpected exception from SSLEngine.closeInbound().
javax.net.ssl.SSLException: Inbound closed before receiving peer's close_notify: possible truncation attack?

相关推荐

    apache-mina-2.0.4.rar_apache mina_mina

    Apache Mina是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个"apache-mina-2.0.4.rar"压缩包包含的是Apache Mina 2.0.4版本的源代码,是深入理解和定制Mina的...

    Apache Mina Server 2.0 抢鲜体验

    6. **工具集成**:作为标签中的"工具",Apache Mina可以与其他开源工具如Spring、Hibernate等良好集成,为开发者提供更强大的功能和更便捷的开发环境。 7. **源码分析**:由于标签中提到了“源码”,因此,对于有志...

    mina2+spring结合实例

    在Java开发领域,Apache Mina和Spring框架的结合使用能够构建高效、可扩展的网络应用。Mina2作为一个轻量级的网络通信框架,提供了高度抽象的API,使得开发者可以方便地处理网络I/O操作。而Spring框架以其强大的依赖...

    Apache MINA 2.0 用户指南中英文对照阅读版[带书签]

    本资源包含两个 pdf 文档,一本根据官方最新文档 (http://mina.apache.org/mina-project/userguide/user-guide-toc.html) 整理的 mina_2.0_user_guide_en.pdf,一个中文翻译的 mina_2.0_user_guide_cn.pdf。...

    Apache_MINA_2_用户指南.pdf

    Apache MINA 2 是一个基于 Java 语言的网络应用框架,旨在帮助开发者快速构建高性能、可靠、可扩展的网络应用程序。该框架提供了一个灵活的架构,使得开发者可以轻松地构建各种类型的网络应用程序。 Part I - ...

    Apache_Mina_Server_2.0_V1.0.rar_apache_apache中文手册_mina

    Apache Mina 提供了一个统一的接口来处理多种类型的网络协议,如TCP/IP、UDP、SSL/TLS等。它允许开发者用相同的代码逻辑处理不同的传输协议,大大简化了网络编程的复杂性。Mina 的核心设计原则是事件驱动和非阻塞I/O...

    Apache_Mina_Server_2.0中文参考手册

    5. **易用性**:Mina提供清晰的API和丰富的文档,使得开发者能够快速上手并进行开发。中文参考手册更是为国内开发者提供了语言上的便利,使得理解Mina的原理和用法更为容易。 6. **社区支持**:作为Apache软件基金...

    Apache_Mina_Server_ 深入教程

    讨论在Mina中如何处理网络异常,以及实现SSL/TLS加密,保证通信的安全性。 10. **持续学习与社区资源** 探索Apache Mina的官方文档、社区论坛、示例代码库等资源,以便持续学习和解决问题。 通过这个深入教程,...

    ApacheMina典型例子分析参考.pdf

    Apache Mina是一个强大的Java框架,专门用于构建高性能的异步并发网络通信应用。它支持多种通信协议,如TCP/IP、UDP/IP、串口通讯、VM间的管道通讯,以及SSL/TLS和JXM集成。此外,Mina也能够与IoC容器(如Spring和...

    Mina-2.0.7主要jar包

    3. **mina-integration-spring.jar**:对于使用Spring框架的开发者,此jar包允许将Mina组件无缝集成到Spring应用上下文中,实现依赖注入和管理。 4. **mina-filter-ssl.jar**:提供了SSL/TLS安全套接层支持,允许...

    mina2.0.9jar包下载

    5. **丰富的协议支持**:Mina内建了对多种网络协议的支持,如HTTP、FTP、SSL/TLS等,同时也方便添加新的协议实现。 **mina-integration-beans-2.0.9.jar** 是Mina与JavaBeans集成的库,它使得Mina可以与Spring框架...

    mina 学习资料

    9. **MINA与Spring集成**:MINA可以与Spring框架无缝集成,利用Spring的依赖注入和配置管理特性,简化MINA应用的开发和维护。 10. **最佳实践**:学习MINA的过程中,了解最佳实践至关重要,例如如何优化性能,如何...

    mina-master_mina_

    5. **运行脚本**:启动和停止服务的脚本,如`start.sh`或`stop.sh`,可能用Java的`java -jar`命令或使用Spring Boot的嵌入式服务器来运行。 6. **文档**:可能包含README文件或其他形式的文档,解释如何构建、部署...

    Mina2中文文档

    - **安全传输**:介绍了Mina支持的SSL过滤器,用于实现加密通信的安全保障。 #### Chapter 12 - 日志过滤器 - **日志管理**:讲解了如何使用Mina的日志过滤器记录应用程序运行时的各种日志信息。 ### Part III - ...

    Mina 2.0.0包

    Apache Mina是一个高性能、异步事件驱动的网络应用程序框架,主要用于简化开发协议服务器和客户端的复杂性。在“Mina 2.0.0包”中,我们可以期待一系列的改进和新特性,使得开发人员能够更高效地构建网络通信应用。 ...

    基于Java的源码-mina高性能Java网络框架.zip

    9. **mina-integration**模块:这些是与Mina整合的其他技术,如Spring框架的整合,便于在Spring应用中使用Mina。 10. **mina-example**模块:包含了一些示例代码,可以帮助初学者快速理解如何使用Mina构建实际应用...

    mina用法及用到的包

    3. **协议栈支持**:MINA支持多种网络协议,如TCP/IP、UDP、SSL/TLS等,开发者可以通过简单的API实现自定义协议。 4. **Filter链**:MINA的核心设计之一是Filter(过滤器)机制,它允许开发者创建一系列处理数据的...

    Apache Ftpserver

    默认的网络支持基于高性能异步IO库Apache MINA。 使用MINA,FtpServer可以扩展到大量并发用户。 特性 1、100%纯Java,免费的开源可恢复FTP服务器 2、多平台支持和多线程设计。 3、用户虚拟目录,写入权限,空闲...

    Apache组织应用程序

    Mina提供了异步的I/O操作,支持多种传输协议,如TCP、UDP和SSL/TLS,这使得它在处理高并发、低延迟的网络服务时表现出色。 在"MinaTest"这个压缩包文件中,很可能是包含了一些关于如何使用Mina进行应用开发的示例...

    mina 开发需要的类库。。

    3. **mina-protocol-XXX**:MINA提供了多种协议实现,如TCP、UDP、SSL/TLS等,这些协议的实现库可能包含在压缩包中。 4. **mina-handler-XXX**:这些可能是MINA提供的各种处理器,如协议编解码处理器、日志处理器、...

Global site tag (gtag.js) - Google Analytics