- 浏览: 557745 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (340)
- Spring (4)
- Hibernate (2)
- Linux (34)
- Oracle (145)
- Eclipse (1)
- UML (1)
- HTML&&JAVASCRIPT (11)
- JAVA (33)
- 设计模式 (1)
- 版本控制 (1)
- wrap框架 (3)
- IBATIS (5)
- Ruby (1)
- DWR (1)
- MINA (11)
- JBPM (2)
- 缓存技术 (4)
- 网络 (3)
- 应用服务器 (1)
- GWT (5)
- 杂谈 (2)
- ICE (4)
- XML (2)
- ArcGis (2)
- Flex (8)
- junit单元测试 (1)
- SNMP (1)
- 存储 (1)
- office (1)
- MongoDB (0)
- Greenplum (3)
- 管理点滴 (1)
- C++ (6)
- 网络入门 (3)
- Tomcat (7)
- JMX (0)
- webservice (1)
- Oracle的10046事件 (1)
- Library cache内部机制详解 (1)
- expdp通过dblink来导入 (1)
最新评论
-
yuanliangding:
有没有关于mock的更多知识。
基于mock对象和JUnit框架简化Spring Web组件单元测试 -
saup007:
ssh端口不是22,怎么搞呢?
Greenplum 学习笔记 -
springmvc-freemarker:
java开源项目源码实例下载
Apache上全部JAVA开源项目简介 -
bobbell:
哇塞,你真厉害,整理的非常全面。我是一个java barcod ...
Greenplum 学习笔记 -
wsj55133245513324:
这不是bug,你将日志级别从debug提升到INFO 就好了 ...
Spring,smppapi,apache mina, ssl快速实现安全的smpp(5)
接上一篇: http://618119.com/archives/2007/12/13/45.html
使用 commons ssl生成 SSLContext :
- package com.lizongbo.ssl;
- import javax.net.ssl.SSLContext;
- import java.security.GeneralSecurityException;
- import java.io.IOException;
- import javax.net.ssl.KeyManager;
- import org.apache.commons.ssl.KeyMaterial;
- public class SMPPSSLContextFactory {
- private static final String PROTOCOL = “TLS”;
- private static final String CA_FILE = “ca.crt.properties”;
- private static final String CERT_FILE = “server.crt.properties”;
- private static final String KEY_FILE = “server.key.properties”;
- private static final String CILENT_FILE = “client.crt.properties”;;//”client.p12.properties”;
- private static final String CILENT_KEY_FILE = “client.key.properties”;
- private static final char[] password =new char[0] ;//”lizongbo”.toCharArray();
- private static SSLContext serverInstance = null;
- private static SSLContext clientInstance = null;
- /**
- * Get SSLContext singleton.
- *
- * @return SSLContext
- * @throws java.security.GeneralSecurityException
- *
- */
- public static SSLContext getInstance(boolean server) throws
- GeneralSecurityException, IOException {
- SSLContext retInstance = null;
- if (server) {
- if (serverInstance == null) {
- synchronized (SMPPSSLContextFactory.class) {
- if (serverInstance == null) {
- try {
- serverInstance = createSMPPServerSSLContext();
- }
- catch (Exception ioe) {
- throw new GeneralSecurityException(
- “Can’t create Server SSLContext:” + ioe);
- }
- }
- }
- }
- retInstance = serverInstance;
- }
- else {
- if (clientInstance == null) {
- synchronized (SMPPSSLContextFactory.class) {
- if (clientInstance == null) {
- clientInstance = createSMPPClientSSLContext();
- }
- }
- }
- retInstance = clientInstance;
- }
- return retInstance;
- }
- private static SSLContext createSMPPServerSSLContext() throws
- GeneralSecurityException, IOException {
- // ssl.setCheckHostname(false); // default setting is “false” for SSLServer
- // ssl.setCheckExpiry(true); // default setting is “true” for SSLServer
- // ssl.setCheckCRL(true); // default setting is “true” for SSLServer
- // ssl.useStrongCiphers();
- // return ssl.getSSLContext();
- SSLContext sslContext = SSLContext.getInstance(PROTOCOL);
- KeyMaterial km = new KeyMaterial(SMPPSSLContextFactory.class
- .getResourceAsStream(CERT_FILE),
- SMPPSSLContextFactory.class
- .getResourceAsStream(KEY_FILE),
- password);
- sslContext.init( (KeyManager[]) km.getKeyManagers(),
- SMPPTrustManagerFactory.X509_MANAGERS, null);
- // System.out.println(”getCipherSuites ==” +
- // java.util.Arrays.toString(sslContext.getServerSessionContext().
- // getSupportedSSLParameters().
- // getCipherSuites()));
- return sslContext;
- }
- private static SSLContext createSMPPClientSSLContext() throws
- GeneralSecurityException, IOException {
- {
- SSLContext context = SSLContext.getInstance(PROTOCOL);
- KeyMaterial km = new KeyMaterial(SMPPSSLContextFactory.class
- .getResourceAsStream(CILENT_FILE),
- SMPPSSLContextFactory.class
- .getResourceAsStream(CILENT_KEY_FILE),
- password);
- context.init( (KeyManager[]) km.getKeyManagers(),
- SMPPTrustManagerFactory.X509_MANAGERS, null);
- return context;
- }
- }
- }
package com.lizongbo.ssl; import javax.net.ssl.SSLContext; import java.security.GeneralSecurityException; import java.io.IOException; import javax.net.ssl.KeyManager; import org.apache.commons.ssl.KeyMaterial; public class SMPPSSLContextFactory { private static final String PROTOCOL = “TLS”; private static final String CA_FILE = “ca.crt.properties”; private static final String CERT_FILE = “server.crt.properties”; private static final String KEY_FILE = “server.key.properties”; private static final String CILENT_FILE = “client.crt.properties”;;//”client.p12.properties”; private static final String CILENT_KEY_FILE = “client.key.properties”; private static final char[] password =new char[0] ;//”lizongbo”.toCharArray(); private static SSLContext serverInstance = null; private static SSLContext clientInstance = null; /** * Get SSLContext singleton. * * @return SSLContext * @throws java.security.GeneralSecurityException * */ public static SSLContext getInstance(boolean server) throws GeneralSecurityException, IOException { SSLContext retInstance = null; if (server) { if (serverInstance == null) { synchronized (SMPPSSLContextFactory.class) { if (serverInstance == null) { try { serverInstance = createSMPPServerSSLContext(); } catch (Exception ioe) { throw new GeneralSecurityException( “Can’t create Server SSLContext:” + ioe); } } } } retInstance = serverInstance; } else { if (clientInstance == null) { synchronized (SMPPSSLContextFactory.class) { if (clientInstance == null) { clientInstance = createSMPPClientSSLContext(); } } } retInstance = clientInstance; } return retInstance; } private static SSLContext createSMPPServerSSLContext() throws GeneralSecurityException, IOException { // ssl.setCheckHostname(false); // default setting is “false” for SSLServer // ssl.setCheckExpiry(true); // default setting is “true” for SSLServer // ssl.setCheckCRL(true); // default setting is “true” for SSLServer // ssl.useStrongCiphers(); // return ssl.getSSLContext(); SSLContext sslContext = SSLContext.getInstance(PROTOCOL); KeyMaterial km = new KeyMaterial(SMPPSSLContextFactory.class .getResourceAsStream(CERT_FILE), SMPPSSLContextFactory.class .getResourceAsStream(KEY_FILE), password); sslContext.init( (KeyManager[]) km.getKeyManagers(), SMPPTrustManagerFactory.X509_MANAGERS, null); // System.out.println(”getCipherSuites ==” + // java.util.Arrays.toString(sslContext.getServerSessionContext(). // getSupportedSSLParameters(). // getCipherSuites())); return sslContext; } private static SSLContext createSMPPClientSSLContext() throws GeneralSecurityException, IOException { { SSLContext context = SSLContext.getInstance(PROTOCOL); KeyMaterial km = new KeyMaterial(SMPPSSLContextFactory.class .getResourceAsStream(CILENT_FILE), SMPPSSLContextFactory.class .getResourceAsStream(CILENT_KEY_FILE), password); context.init( (KeyManager[]) km.getKeyManagers(), SMPPTrustManagerFactory.X509_MANAGERS, null); return context; } } }
实现证书检查认证的代码:
- package com.lizongbo.ssl;
- import java.security.InvalidAlgorithmParameterException;
- import java.security.KeyStore;
- import java.security.KeyStoreException;
- import java.security.cert.CertificateException;
- import java.security.cert.X509Certificate;
- import javax.net.ssl.ManagerFactoryParameters;
- import javax.net.ssl.TrustManager;
- import javax.net.ssl.TrustManagerFactorySpi;
- import javax.net.ssl.X509TrustManager;
- public class SMPPTrustManagerFactory
- extends TrustManagerFactorySpi {
- static final X509TrustManager X509 = new X509TrustManager() {
- public void checkClientTrusted(X509Certificate[] x509Certificates,
- String s) throws CertificateException {
- if (x509Certificates != null) {
- for (X509Certificate elem : x509Certificates) {
- elem.checkValidity();
- //System.out.println(”checkClientTrusted elem ==” + elem);
- }
- }
- // System.out.println(”checkClientTrusted s ==” + s);
- }
- public void checkServerTrusted(X509Certificate[] x509Certificates,
- String s) throws CertificateException {
- if (x509Certificates != null) {
- for (X509Certificate elem : x509Certificates) {
- // System.out.println(”checkServerTrusted elem ==” + elem);
- }
- }
- // System.out.println(”checkServerTrusted s ==” + s);
- }
- public X509Certificate[] getAcceptedIssuers() {
- return new X509Certificate[0];
- }
- };
- static final TrustManager[] X509_MANAGERS = new TrustManager[] {
- X509};
- public SMPPTrustManagerFactory() {
- }
- protected TrustManager[] engineGetTrustManagers() {
- return X509_MANAGERS;
- }
- protected void engineInit(KeyStore keystore) throws KeyStoreException {
- // noop
- }
- protected void engineInit(
- ManagerFactoryParameters managerFactoryParameters) throws
- InvalidAlgorithmParameterException {
- // noop
- }
- }
评论
2 楼
lanmh
2008-08-05
我也是初学者,从别人那里转来的。
1 楼
rxiaoliang
2008-08-05
能不能写一个用smppapi相关函数连接短信中心收发短信的多线程程序啊。
我大概看了一下你写的这6篇文章,好像是用smppapi做短信中心的代码,不是客户端的。
我大概看了一下你写的这6篇文章,好像是用smppapi做短信中心的代码,不是客户端的。
发表评论
-
MINA工作流程
2011-04-15 11:09 2365Mina 中的很多执行环节都使用了多线程机制,用于提高性能。M ... -
Java NIO原理和使用
2011-04-14 15:02 894Java NIO非堵塞应用通 ... -
Java远程通讯可选技术及原理
2008-07-22 14:20 968在分布式服务框架中, ... -
MINA Begin
2008-07-22 10:59 36061. 传统Socket:阻塞式通 ... -
Spring,smppapi,apache mina, ssl快速实现安全的smpp(5)
2008-07-21 15:41 7606接上一篇: http://618119.com/archive ... -
用Spring,smppapi,mina, commons ssl快速实现安全的smp(4)
2008-07-21 15:39 2169对 SMPPPacket的业务处理代码: 1.处理 BIND_ ... -
用Spring,smppapi,mina, commons ssl快速实现安全的smp(3)
2008-07-21 15:38 1567作者:lizongbo 版权声明:可以任意转载,转载时请务必以 ... -
用Spring,smppapi,mina, commons ssl快速实现安全的smp(2)
2008-07-21 15:37 2663作者:lizongbo 版权声明:可以任意转载,转载时请务必以 ... -
用Spring,smppapi,mina, commons ssl快速实现安全的smp(1)
2008-07-21 15:35 3489作者:lizongbo 发表于:1:19 下午. 星期二, 1 ... -
使用 Apache MINA 开发高性能网络应用程序
2008-07-02 14:35 1816本文将通过一个简单的问候程序 HelloServer 来介绍 ...
相关推荐
Apache Mina是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个"apache-mina-2.0.4.rar"压缩包包含的是Apache Mina 2.0.4版本的源代码,是深入理解和定制Mina的...
6. **工具集成**:作为标签中的"工具",Apache Mina可以与其他开源工具如Spring、Hibernate等良好集成,为开发者提供更强大的功能和更便捷的开发环境。 7. **源码分析**:由于标签中提到了“源码”,因此,对于有志...
在Java开发领域,Apache Mina和Spring框架的结合使用能够构建高效、可扩展的网络应用。Mina2作为一个轻量级的网络通信框架,提供了高度抽象的API,使得开发者可以方便地处理网络I/O操作。而Spring框架以其强大的依赖...
本资源包含两个 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 是一个基于 Java 语言的网络应用框架,旨在帮助开发者快速构建高性能、可靠、可扩展的网络应用程序。该框架提供了一个灵活的架构,使得开发者可以轻松地构建各种类型的网络应用程序。 Part I - ...
Apache Mina 提供了一个统一的接口来处理多种类型的网络协议,如TCP/IP、UDP、SSL/TLS等。它允许开发者用相同的代码逻辑处理不同的传输协议,大大简化了网络编程的复杂性。Mina 的核心设计原则是事件驱动和非阻塞I/O...
6. **社区支持**:作为Apache软件基金会的项目,Mina拥有活跃的开发者社区,提供了持续的更新和支持,用户可以在遇到问题时寻求社区的帮助。 7. **跨平台性**:由于基于Java开发,Apache Mina Server 2.0可以在任何...
讨论在Mina中如何处理网络异常,以及实现SSL/TLS加密,保证通信的安全性。 10. **持续学习与社区资源** 探索Apache Mina的官方文档、社区论坛、示例代码库等资源,以便持续学习和解决问题。 通过这个深入教程,...
Apache Mina是一个强大的Java框架,专门用于构建高性能的异步并发网络通信应用。它支持多种通信协议,如TCP/IP、UDP/IP、串口通讯、VM间的管道通讯,以及SSL/TLS和JXM集成。此外,Mina也能够与IoC容器(如Spring和...
3. **mina-integration-spring.jar**:对于使用Spring框架的开发者,此jar包允许将Mina组件无缝集成到Spring应用上下文中,实现依赖注入和管理。 4. **mina-filter-ssl.jar**:提供了SSL/TLS安全套接层支持,允许...
4. **过滤器链**:Mina的过滤器链机制允许开发者插入自定义的过滤器,对网络通信进行预处理和后处理,如数据编码解码、安全认证等。 5. **丰富的协议支持**:Mina内建了对多种网络协议的支持,如HTTP、FTP、SSL/TLS...
9. **MINA与Spring集成**:MINA可以与Spring框架无缝集成,利用Spring的依赖注入和配置管理特性,简化MINA应用的开发和维护。 10. **最佳实践**:学习MINA的过程中,了解最佳实践至关重要,例如如何优化性能,如何...
Apache MINA(Multipurpose Infrastructure for Network Applications)是一个高度可扩展且功能丰富的网络应用程序框架,主要用于简化开发高性能、高效率的服务端应用。MINA提供了一种与传输协议无关的API,支持多种...
- **安全传输**:介绍了Mina支持的SSL过滤器,用于实现加密通信的安全保障。 #### Chapter 12 - 日志过滤器 - **日志管理**:讲解了如何使用Mina的日志过滤器记录应用程序运行时的各种日志信息。 ### Part III - ...
Apache Mina是一个高性能、异步事件驱动的网络应用程序框架,主要用于简化开发协议服务器和客户端的复杂性。在“Mina 2.0.0包”中,我们可以期待一系列的改进和新特性,使得开发人员能够更高效地构建网络通信应用。 ...
9. **mina-integration**模块:这些是与Mina整合的其他技术,如Spring框架的整合,便于在Spring应用中使用Mina。 10. **mina-example**模块:包含了一些示例代码,可以帮助初学者快速理解如何使用Mina构建实际应用...
3. **协议栈支持**:MINA支持多种网络协议,如TCP/IP、UDP、SSL/TLS等,开发者可以通过简单的API实现自定义协议。 4. **Filter链**:MINA的核心设计之一是Filter(过滤器)机制,它允许开发者创建一系列处理数据的...
默认的网络支持基于高性能异步IO库Apache MINA。 使用MINA,FtpServer可以扩展到大量并发用户。 特性 1、100%纯Java,免费的开源可恢复FTP服务器 2、多平台支持和多线程设计。 3、用户虚拟目录,写入权限,空闲...
Mina提供了异步的I/O操作,支持多种传输协议,如TCP、UDP和SSL/TLS,这使得它在处理高并发、低延迟的网络服务时表现出色。 在"MinaTest"这个压缩包文件中,很可能是包含了一些关于如何使用Mina进行应用开发的示例...
3. **mina-protocol-XXX**:MINA提供了多种协议实现,如TCP、UDP、SSL/TLS等,这些协议的实现库可能包含在压缩包中。 4. **mina-handler-XXX**:这些可能是MINA提供的各种处理器,如协议编解码处理器、日志处理器、...