`

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 用户指南中英文对照阅读版[带书签]

    本资源包含两个 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 Ftpserver

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

    java开源包4

    ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...

    java开源包3

    ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...

    java开源包5

    ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...

    java开源包7

    ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...

    java开源包1

    ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...

    java开源包11

    ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...

    java开源包2

    ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...

    java开源包6

    ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...

    java开源包10

    ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...

    java开源包9

    ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...

    java开源包8

    ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...

    Java资源包01

    ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...

    java开源包101

    ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...

    JAVA上百实例源码以及开源项目源代码

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    JAVA上百实例源码以及开源项目

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

Global site tag (gtag.js) - Google Analytics