- 浏览: 314711 次
- 性别:
- 来自: 重庆
文章分类
- 全部博客 (286)
- 设计模式 (14)
- spring (5)
- 开发工具 (12)
- java (19)
- apache.commons工具 (7)
- ibaits (5)
- extjs4.0 (4)
- 数据库 (2)
- spring工具类 (2)
- jquery1.8 (32)
- 杂记 (1)
- linux (2)
- Quart (1)
- springMVC (2)
- webservice (1)
- oracle (5)
- dwr (6)
- jbmp3 (27)
- lucene3.5 (27)
- javascript (18)
- hibernate3.3.2 (27)
- spring事务管理 (10)
- nio (2)
- strust2 (3)
- jvm (7)
- jquery-easyui-1.2.6 (22)
- 多线程 (14)
- maven (3)
- 常用正则表达式 (4)
最新评论
-
HF_SKY000:
请问:
一、能否提供一下密钥库文件的生成方法?
二、密钥库的密 ...
Java sslSocket 聊天实例
总体思路步骤是 1. 分别生成客户端何服务器端密钥库 keytool -genkey -keystore c:\client.jks -keyalg rsa -alias ssl1 -validity 700 keytool -genkey -keystore c:\serv.jks -keyalg rsa -alias ssl1 –validity 700 2. 客户端与服务器端各自导出证书 keytool -export -alias ssl1 -file c:\ssl1.cer -keystore c:\serv.jks keytool -export -alias ssl1 -file c:\ssl2.cer -keystore c:\client.jks 3. 交换证书 导入到各自的密钥库 keytool -import -file c:\ssl1.cer -keystore c:\client.jks keytool -import -file c:\ssl2.cer -keystore c:\serv.jks
当任意一端删除对方导入的证书 则连接不会成功,这里不再写出。
---------------------------------------server--------------------------------------------------------------------- public static void main(String[] args) throws Exception { SSLContext ctx = SSLContext.getInstance("SSL"); KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509"); TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509"); KeyStore ks = KeyStore.getInstance("JKS"); KeyStore tks = KeyStore.getInstance("JKS"); ks.load(new FileInputStream("c:/serv.jks"), "changeit".toCharArray()); tks.load(new FileInputStream("c:/serv.jks"), "changeit".toCharArray()); kmf.init(ks, "changeit".toCharArray()); tmf.init(tks); ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); SSLServerSocket serverSocket = (SSLServerSocket) ctx.getServerSocketFactory().createServerSocket(26666); serverSocket.setNeedClientAuth(true); Socket ssls=serverSocket.accept(); // 以下代码同socket通讯实例中的代码 BufferedReader socketIn = new BufferedReader(new InputStreamReader( ssls.getInputStream())); BufferedReader userIn = new BufferedReader(new InputStreamReader( System.in)); PrintStream socketOut = new PrintStream(ssls.getOutputStream()); String s; while (true) { System.out.println("Please wait client 's message.."); System.out.println(""); s = socketIn.readLine(); System.out.println("Client Message: " + s); if (s.trim().equals("BYE")) break; System.out.print("Server Message: "); s = userIn.readLine(); socketOut.println(s); if (s.trim().equals("BYE")) break; } socketIn.close(); socketOut.close(); userIn.close(); ssls.close(); } ---------------------------------------client---------------------------------------------------------------------- public static void main(String[] args) throws Exception { SSLContext ctx = SSLContext.getInstance("SSL"); KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509"); TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509"); KeyStore ks = KeyStore.getInstance("JKS"); KeyStore tks = KeyStore.getInstance("JKS"); ks.load(new FileInputStream("c:/client.jks"), "changeit".toCharArray()); tks.load(new FileInputStream("c:/client.jks"),"changeit".toCharArray()); kmf.init(ks, "changeit".toCharArray()); tmf.init(tks); ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); SSLSocket csocket= (SSLSocket) ctx.getSocketFactory().createSocket("localhost", 26666); System.out.println("Client OK~"); System.out.println("==============="); System.out.println(""); // 以下代码同socket通讯实例中的代码 BufferedReader socketIn = new BufferedReader(new InputStreamReader( csocket.getInputStream()));// 接受到的信息 PrintStream socketOut = new PrintStream(csocket.getOutputStream());// 要发送的信息 BufferedReader userIn = new BufferedReader(new InputStreamReader( System.in));// 用户输入信息 String s; while (true) { System.out.print("Client Message: "); s = userIn.readLine(); socketOut.println(s); if (s.trim().equals("BYE")) break; else { System.out.println("Please wait Server Message.."); System.out.println(""); } s = socketIn.readLine(); System.out.println("Server Message: " + s); if (s.trim().equals("BYE")) break; } socketIn.close(); socketOut.close(); userIn.close(); csocket.close(); }
发表评论
-
http协议 文件下载原理及多线程断点续传
2014-06-18 17:28 1529最近研究了一下关于文件下载的相关内容,觉得还是写些东西记下 ... -
Java安全通信:HTTPS与SSL
2014-04-18 17:37 6551. HTTPS概念 1)简介 ... -
Java KeyStore的类型
2014-04-18 15:05 832JKS和JCEKS是Java密钥库(KeyStore)的两种 ... -
对https的理解
2014-03-20 11:39 1816一、什么是HTTPS在说HTTPS之前先说说什么是HTTP ... -
BigDecimal四舍五入的问题
2013-03-15 10:33 970System.out.println(new BigDec ... -
java正则表达式
2012-08-28 11:34 1142在Sun的Java JDK 1.40版本中 ... -
JAVA中使用FTPClient实现文件上传下载
2012-08-24 15:48 803在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上 ... -
java 数字签名
2012-08-07 11:04 1177发送报文时,发送方用 ... -
Java进行数据加密
2012-06-26 16:41 913本文主要谈一下密码学 ... -
常见加密算法
2012-06-26 16:24 1012DES(Data Encryption Standard):对 ... -
消息摘要
2012-06-26 16:22 831消息摘要(Message Digest)又称为数字摘要(D ... -
UML 依赖 关联 聚合 组合
2012-06-25 09:54 1287<1>依赖 依赖关系用虚线加箭头表示,如图所示: ... -
Java sslSocket 聊天实例
2012-06-18 10:46 2122------------------------------- ... -
keytool证书与密钥管理
2012-06-18 10:44 14691)创建服务端密钥库 > ... -
从JKS文件中读取密钥
2012-06-17 23:45 1695JKS文件是一个java中的密钥管理库,里面可以放各种密钥文件 ... -
JAVA String.format 方法使用介绍
2012-06-13 16:51 761JAVA String.format 方法使用 ... -
HttpUrlConnection使用
2011-11-10 17:46 3893下边的总结对我帮助蛮大的~不仅用法了解,整个连接流程也要明 ... -
java i/o
2010-07-16 14:33 842java.io在Java类库中,IO部分的内容是很庞大的,因为 ...
相关推荐
Java中的SSL双向认证是一种安全通信机制,用于确保服务器和客户端之间的通信不仅加密,而且双方的身份都得到验证。这种机制在需要高安全性交互的应用场景中,如金融交易、企业内部网络通信等,尤其重要。 SSL...
SSL Socket双向认证的实现 SSL 协议采用数字证书及数字签名进行双端实体认证,用非对称加密算法进行密钥协商,用对称加密算法将数据加密后进行传输以保证数据的保密性,并且通过计算数字摘要来验证数据在传输过程中...
"ssl_client"和"ssl_server"是Java源代码文件,它们包含了实现SSLSocket双向认证的逻辑。在这些代码中,客户端会加载"ejbcakclient.jks",服务器则加载"ejbcakserver.jks"。客户端在建立连接时,不仅会提供自己的...
Java sslSocket 聊天实例是使用 Java 的 SSL SOCKET 编程来实现安全聊天室功能的示例程序。 十二、用 COMMVIEW 工具截获浏览器访问支付宝的 TCP/IP 包 COMMVIEW 是一个网络嗅探工具,能够截获网络数据包。在本实例...
使用SSLSocket,客户端和服务器可以进行双向身份验证,确保双方都是可信的。 3. **SSLSocket的工作流程** - **握手过程**:建立连接时,客户端和服务器会进行SSL握手,其中包括证书交换、加密算法协商等步骤。 - ...
Java SSLSocket是Java平台中用于处理安全套接字层(SSL)或传输层安全(TLS)协议的类,它是Socket类的一个子类,提供了在客户端和服务器之间进行加密通信的能力。SSL和TLS协议主要用于保护网络数据传输,防止数据被...
4. **客户端实现**:对应的`TeslaSSLClient`类则需要配置SSLSocket,同样使用自定义的`SSLContext`。客户端在建立连接时会提供自己的证书。 5. **测试**:在完成上述步骤后,你可以使用wss(WebSocket Secure)协议...
SSL 双向认证 Java 实现 SSL 双向认证是指在客户端和服务器端之间的通信过程中,双方都需要对对方进行身份验证和授权,以确保通信的安全性。Java 语言提供了 JSSE(Java Security Socket Extension)来实现 SSL ...
4. **Java代码实现**:在Java中,可以使用JSSE(Java Secure Socket Extension)来配置SSL上下文并创建SSLServerSocket或SSLSocket。在服务器端,需要设置KeyManagerFactory和TrustManagerFactory,它们分别处理...
- 配置SSLSocket:通过SSLContext的getSocketFactory()方法创建SSLSocket,连接到服务器。 4. **握手过程**: - 客户端初始化SSL连接,发送其证书和公钥给服务器。 - 服务器验证客户端的证书,如果接受,则发送...
JAVA SSL SOCKET双向认证 双向认证即客户端和服务器都需要验证对方的身份,这在某些场景下是必要的,例如企业内部系统或高安全要求的B2B通信。 总结,HTTPS通过SSL/TLS协议提供了网络通信的安全保障,包括数据加密...
SSL(Secure Socket Layer)是用于确保网络通信安全的一种标准协议,而双向认证(Mutual SSL/TLS Authentication)则进一步增强了这种安全性,它要求服务器验证客户端的身份,同时也要求客户端验证服务器的身份。...
SSL(Secure Socket Layer)双向认证是一种安全通信协议,它不仅要求服务器验证客户端的身份,同时也要求客户端验证服务器的身份。这种机制增强了网络通信的安全性,尤其在金融、医疗等对数据安全有高要求的领域中...
在Java中实现SSL双向认证,也被称为mutual authentication,是指客户端和服务器都需要向对方证明自己的身份。以下将详细讲解这个过程及其相关的Java SSL包使用。 首先,了解SSL的工作流程。SSL握手过程通常包括以下...
在SSL双向认证中,不仅服务器需要验证客户端的身份,客户端也需要验证服务器的身份,从而提供了更高级别的安全保护。这种模式通常在银行、企业内部网络或高度敏感的信息交换中使用。 在SSL双向认证中,涉及的主要...
双向认证,也称为mutual SSL或Client-Auth,是SSL/TLS协议的一个特性,它要求客户端和服务器都提供身份验证,以增强安全性。 在Netty中实现SSL双向认证,我们需要以下步骤: 1. **生成证书**:首先,为服务器和...
在Java中,`javax.net.ssl`包提供了实现SSL通信的核心类和接口,如`SSLSocketFactory`、`SSLSocket`、`SSLServerSocketFactory`、`SSLServerSocket`以及`TrustManager`和`KeyManager`等。 1. **SSLSocketFactory和...
本示例将深入探讨如何使用Tomcat搭建SSL(Secure Socket Layer)双向认证环境,以及通过Java原生类库SSLSocket进行编程,以及使用Apache的Httpclient库模拟安全的客户端请求。以下是对这些知识点的详细讲解。 首先...
本篇文章将深入探讨如何利用Netty实现HTTPS的双向认证(也称为SSL/TLS的客户端身份验证)以及白名单证书验证。 首先,我们需要理解HTTPS的工作原理。HTTPS基于HTTP协议,通过SSL/TLS层提供加密传输和服务器身份验证...