`
sundoctor
  • 浏览: 325398 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在mina中实现TSL/SSL双向认证连接(2)

    博客分类:
  • mina
阅读更多
上回书说到...书接上回,现在介绍第二种实现方式:Server端和Client端各自拥有自签名的私有密钥证书,并且互相交换公钥,通过对方公钥互相信认对方证书。

1.创建Server端KeyStore文件serverKeys.jks,包含一个用于服务器的证书 :
引用
keytool -genkey -alias server -keysize 1024 -validity 3650 -keyalg RSA -dname "CN=sundoctor.com, OU=Developer,O=Techstar, L=Beijing, S=Beijing, C=CH" -keypass 123456 -storepass 123456 -keystore serverKeys.jks

2.导出服务端公钥证书
引用
keytool -export -alias server -keystore serverKeys.jks -file server.cer  -storepass 123456

3.创建Client端KeyStore文件clientKeys.jks,分别包含用于虚构的通信者 Alice 和 Bob 的证书 :
引用
keytool -genkey -alias alice -keysize 1024 -validity 3650 -keyalg RSA -dname "CN=Aclie, OU=Developer,O=Techstar, L=Beijing, S=Beijing, C=CH" -keypass 123456 -storepass 123456 -keystore clientKeys.jks

keytool -genkey -alias bob -keysize 1024 -validity 3650 -keyalg RSA -dname "CN=Bob, OU=Developer,O=Techstar, L=Beijing, S=Beijing, C=CH" -keypass 123456 -storepass 123456 -keystore clientKeys.jks

4.导出客户端 Alice和 Bob公钥证书
引用
keytool -export -alias alice -keystore clientKeys.jks -file alice.cer -storepass 123456

keytool -export -alias bob -keystore clientKeys.jks -file bob.cer   -storepass 123456

5.创建服务端KeyStore文件serverTrust.jks并导入客户端 Alice和 Bob公钥证书
引用
keytool -import -alias alice -keystore serverTrust.jks -file alice.cer -keypass 123456 -storepass 123456

keytool -import -alias bob -keystore serverTrust.jks -file bob.cer -keypass 123456 -storepass 123456

6.创建客户端KeyStore文件clientTurst.jks并导入服务端公钥证书
引用
keytool -import -alias server -keystore clientTrust.jks -file server.cer -keypass 123456 -storepass 123456


这样我们就得clientKeys.jks、clientTrust.jks、serverKeys.jks、serverTrust.jks四个KeyStore文件。

这里与第一种方式不同的地方就是不再需要BogusTrustManagerFactory类,初始化客户端和服务端的SSLContext时TrustManager分别采用 clientTrust.jks和serverTrust.jks,KeyManager和第一种方式一样。
protected static TrustManager[] getTrustManagers(String trustfile,String pasword) throws IOException, GeneralSecurityException {
		// First, get the default TrustManagerFactory.
		TrustManagerFactory tmFact = TrustManagerFactory.getInstance(TRUST_MANAGER_FACTORY_ALGORITHM);

		// Next, set up the TrustStore to use. We need to load the file into
		// a KeyStore instance.		
		InputStream in = BogusSslContextFactory.class.getResourceAsStream(trustfile);
		KeyStore ks = KeyStore.getInstance("jks");
		ks.load(in, pasword.toCharArray());
		in.close();

		// Now we initialise the TrustManagerFactory with this KeyStore
		tmFact.init(ks);

		// And now get the TrustManagers
		TrustManager[] tms = tmFact.getTrustManagers();
		return tms;
	}
分享到:
评论
2 楼 sundoctor 2012-11-16  
不懂android,不好意思。
1 楼 winhonourxzg 2012-11-13  

感谢  pc 上跑没问题 。
但客户端用android 时 加密用的BKS
DEBUG [NioProcessor-2] (SslHandler.java:531) -Session Server[1](SSL) is now secured
DEBUG [NioProcessor-2] (SslHandler.java:516) -Session Server[1](SSL) processing the FINISHED state
DEBUG [NioProcessor-2] (SslHandler.java:531) -Session Server[1](SSL) is now secured
DEBUG [NioProcessor-2] (SslFilter.java:685) -Session Server[1](SSL): Processing the SSL Data

日志打到这就没反应了 ssl 握手好像是成功了,请问 兄台 遇到过这种问题 没

相关推荐

    基于 MINA 的 TLS/SSL NIO Socket 实现(二)

    在本篇博文中,我们将深入探讨如何利用Apache MINA库实现基于TLS/SSL的NIO(非阻塞I/O)Socket通信。MINA是一个高度可扩展的网络应用框架,广泛用于构建高性能、高并发的网络应用程序,如服务器端的TCP和UDP服务。...

    Mina实现长连接和短连接实例

    在这个实例中,我们将探讨如何使用Mina实现长连接和短连接。 首先,理解长连接和短连接的概念至关重要。在TCP/IP通信中,短连接(Short Connection)是指一次数据传输完成后立即关闭连接,而长连接(Long ...

    MINA长连接框架实现通讯

    综上所述,MINA长连接框架在实现服务器与Android客户端通讯时,涉及到网络编程、数据传输协议、异常处理、过滤器机制、长连接维护等多个技术要点,开发者需要根据实际需求进行合理的架构设计和优化。通过MINA提供的...

    mina sslfilter大用法

    在Mina中,`SslFilter`实现了SSL/TLS协议,它可以添加到I/O处理器的过滤链中,对进出的数据进行加密解密。`SslFilter`需要配置SSL上下文(SSLContext),该上下文包含了证书、密钥和信任管理器等信息。 **3. 创建...

    基于MINA2实现的UDP双向通信源码

    本源码是《NIO框架入门(三):iOS与MINA2、Netty4的跨平台UDP双向通信实战》一文的服务端实现(MINA2版),详见:http://www.52im.net/thread-378-1-1.html

    基于Apache Mina实现的TCP长连接和短连接实例

    在本文档中,我们将通过具体实例,详细介绍如何使用Apache Mina 2.0实现TCP协议下的长连接与短连接。 #### 二、系统概述 ##### 2.1 系统架构 本系统主要由两个服务端程序与两个客户端程序构成,其中: - **长...

    mina连接 mina心跳连接 mina断线重连

    在本文中,我们将深入探讨Mina的核心概念,包括连接管理、心跳机制以及断线重连策略。 首先,让我们理解"Mina连接"。在Mina中,连接是指客户端与服务端之间建立的通信链路。它支持多种传输协议,如TCP/IP(Socket)...

    mina server开发服务端/客户端代码

    在Mina中,服务端通常通过创建一个Acceptor来监听特定的端口,等待客户端的连接请求。Acceptor会处理连接建立、数据传输和连接关闭等网络事件。服务端的核心组件是IoHandler,它定义了对网络事件的处理方法,如...

    mina双向通信已测试

    **mina双向通信已测试** ...在实际项目中,开发者可以利用Mina实现更复杂的服务,如分布式系统中的通信、实时数据传输等。这个测试项目不仅可以帮助提升技能,还可以作为基础模块,为后续的开发工作提供便利。

    mina实现登录功能

    在这个场景中,我们将讨论如何使用MINA来实现一个简单的登录功能。 首先,理解MINA的基本工作原理至关重要。MINA的核心是IoSession对象,它代表了服务器和客户端之间的持久连接。当客户端连接到服务器时,MINA会...

    使用MINA实现长连接

    MINA(Multipurpose Infrastructure for Network Applications)是一个Java框架,专门设计用于构建高性能、高可用性的网络...无论是在游戏服务器、实时聊天应用还是其他需要持续连接的服务中,MINA都是一个强大的工具。

    Mina长连接短连接实例

    它利用Java NIO库,实现了异步、非阻塞的通信模式,可以在单一线程中处理多个并发连接,大大提升了服务器的并发能力。Minaclient和MinaHost工程正是展示了如何在实际项目中应用这些概念。 在Minaclient工程中,我们...

    服务端基于MINA2的UDP双向通信Demo演示(MINA2服务端)

    “服务端基于MINA2的UDP双向通信Demo演示(MINA2服务端)” 这个标题表明这是一个使用MINA2框架在服务端实现的UDP(User Datagram Protocol)双向通信的示例代码。MINA2是一个开源的Java网络应用程序框架,它简化了...

    socket通信,mina长连接通信

    在实际项目中,将MINA库引入,结合业务逻辑编写相应的处理代码,即可实现长连接通信。 总结来说,Socket通信是网络编程的基础,而MINA长连接则是Socket通信的一种优化实现,尤其适合需要高效处理大量并发连接和实时...

    JAVA NIO MINA2调用大宝CA密码安全套件实现国密SSL安全通道,1.0.1版本,含通信示例代码

    使用方法见:https://blog.csdn.net/upset_ming/article/details/96491058 1. 修改了前一版本中证书验证的bug,支持JDK8的高版本 2. 支持国密SSL双向认证 3. 将过期的国密证书替换为新证书

    使用mina框架实现cmpp2.0服务端

    2. **会话建立**:实现CMPP连接的认证机制,包括基于IP地址、端口号或特定的CMPP协议报文的认证过程。 3. **协议解析**:设计CMPP2.0协议的解码器(Decoder)和编码器(Encoder),将原始的字节流转换为业务对象,...

    通信层使用Mina框架实现双机通讯

    在实现双机通讯时,我们通常会使用TCP协议,因为其具有面向连接、可靠传输的特点,适合于需要稳定数据交换的场景。 要使用Mina实现双机通讯,我们首先要创建一个服务器端(Server)和一个或多个客户端(Client)。...

    Mina+Socket通信

    在Mina与Socket通信的实现中,服务端通常使用Mina来创建一个Acceptor,监听特定端口,等待客户端的连接请求。一旦有连接建立,Mina会自动触发相应的事件处理器,开发者可以在其中处理数据读写。以下是一个基本的...

    mina 实现简单通讯

    在这个“mina 实现简单通讯”的项目中,我们看到了一个基于MINA的基本通信实现,涵盖了服务端和客户端的交互。 首先,MINA的核心组件包括`IoSession`,它是网络连接的抽象,包含了与特定连接相关的所有信息,如输入...

Global site tag (gtag.js) - Google Analytics