- 浏览: 96575 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (61)
- Hibernate (5)
- WebService (6)
- Python (13)
- ExtJs (0)
- Java (20)
- SMB (1)
- Game (1)
- Java Advanced Image (1)
- CMD (4)
- Oracle (2)
- Windows (2)
- Linux (1)
- Forums (1)
- Struts (2)
- Internationalization (1)
- NTLM (1)
- HttpClient (1)
- Http (1)
- Form (1)
- Tomcat (2)
- Log4j (1)
- Eclipse (1)
- ant (1)
- soap (0)
- SSL (2)
- security (2)
- permission (1)
- 面试 (0)
- authentication (1)
- Spring (0)
- ioc (0)
- javascript (1)
- license (0)
- web (0)
- Maven (0)
- website (0)
- tool (0)
- git (1)
- Thread (2)
- 软件工程 (0)
- mongodb (1)
最新评论
-
howgoo:
OpenSystemArchitect 中文乱码。
免费的数据库建模工具 -
tojaoomy:
如果需要输出时不换行,在最后加上逗号即可。比如print 'H ...
Python静态属性,静态方法 -
tojaoomy:
http://www.oracle.com/technetwo ...
丢失更新 -
tojaoomy:
teasp 写道tojaoomy 写道teasp 写道toja ...
synchronized (this) 柳暗花明又一村 -
teasp:
tojaoomy 写道teasp 写道tojaoomy 写道t ...
synchronized (this) 柳暗花明又一村
一直调查SSL的问题,毫无进展,头疼,先把手头搞定的资料整理下:
网上的资料很多,偷懒一下把。
服务器端代码:
package com.ricoh.rits.bct.ssl; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.net.Socket; import java.security.KeyManagementException; import java.security.KeyStore; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.UnrecoverableKeyException; import java.security.cert.CertificateException; import javax.net.ssl.SSLServerSocket; import javax.net.ssl.SSLServerSocketFactory; import javax.net.ssl.SSLSocket; import com.sun.net.ssl.KeyManagerFactory; import com.sun.net.ssl.SSLContext; public class SSLServer { public static final int PORT = 8888; public static SSLServerSocket server; public SSLServer() {} @SuppressWarnings("deprecation") public static SSLServerSocket getServerSocket(int port){ SSLServerSocket s = null; try { String key = "E:\\others\\ssl\\SSLKey"; char keyStorePass[] = "rst200233".toCharArray(); char keyPassword[] = "rst200233".toCharArray(); KeyStore ks = KeyStore.getInstance("JKS"); ks.load(new FileInputStream(key),keyStorePass); //create Manager Secret Key Library of JKS KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509"); kmf.init(ks, keyPassword); SSLContext sslContext = SSLContext.getInstance("SSLv3"); //init SSL context,second agrument tell JSSE the CA where from //set null means get CA from the javax.net.ssl.trustStore //third argument is the JSSE ramdonly generated,while this agrument will affect the security of the system //it is good chioce to set its value null,can ensure the JSSE security. sslContext.init(kmf.getKeyManagers(), null, null); //according to the privious configuration on SSLContext to create SSLServerSocketFactory,different with common method SSLServerSocketFactory factory = sslContext.getServerSocketFactory(); s = (SSLServerSocket) factory.createServerSocket(port); } catch (KeyStoreException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (CertificateException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (UnrecoverableKeyException e) { e.printStackTrace(); } catch (KeyManagementException e) { e.printStackTrace(); } return (s); } public static void main(String[] args) { try { server = getServerSocket(PORT); System.out.println("Waiting for connection... on port " + PORT); while(true){ SSLSocket socket = (SSLSocket) server.accept(); new CreateThread(socket); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } class CreateThread extends Thread{ static BufferedReader in; static PrintWriter out; static Socket s; public CreateThread(Socket socket) { try { s = socket; in = new BufferedReader(new InputStreamReader(s.getInputStream(),"UTF-8")); out = new PrintWriter(s.getOutputStream(),true); start(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } @Override public void run() { String msg; StringBuilder builder = new StringBuilder(); try { msg = in.readLine(); builder.append(msg); System.out.println(builder.toString()); out.println(builder.toString()); s.close(); } catch (IOException e) { e.printStackTrace(); } } }
其实只要在浏览器Type :https://localhost:8888也可以访问,输出的内容如下:
GET / HTTP/1.1
但是,把服务器的线程内容稍作修改的话,
msg = in.readLine(); builder.append(msg); while(msg != null){ msg = in.readLine(); builder.append(msg); }
会出现一个问题:
不知为何,一致阻塞在哪里,百思不得其解。
或者在IDE如下
客户端代码:
package com.ricoh.rits.bct.ssl; import java.io.IOException; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException; import javax.net.ssl.SSLSocketFactory; public class SSLClient { static int port = 8888; public static void main(String[] args) { System.out.println(System.getProperty("java.home")); SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault(); try { Socket s = factory.createSocket("localhost", port); PrintWriter out = new PrintWriter(s.getOutputStream(),true); out.println("你好,我叫何剑!!!"); out.close(); s.close(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
参考资料:
http://fishhappy365.iteye.com/blog/963876
http://java.chinaitlab.com/JavaSecurity/792540.html
http://www.51testing.com/?uid-202848-action-viewspace-itemid-134594
下面的命令来检测是否已经正确完成了授权。
keytool -list -v -keystore SSLKey(生成的证书名称)
发表评论
-
Filter,Servlet,Conponent如何获取ApplicationContext
2014-08-04 18:35 1247Filter 获取Context 在init()方法获取S ... -
synchronized (this) 柳暗花明又一村
2013-05-17 16:23 1548今天写一个测试类,主要是测试wait(long timeo ... -
同一个线程synchronized方法调用synchronized方法
2013-02-21 16:28 975一个线程里面有两个synchronized方法a(),b( ... -
Java开源工具:网站开发工具清单
2012-07-23 14:07 0【IT168 技术】美国程序员Jon Sco ... -
Maven construct Maven Project
2012-07-17 17:36 0<project xmlns="http ... -
开源中最好的Web开发的资源
2012-06-20 09:52 0文章来源:Best “must know” open sour ... -
SimulateSpringIOC
2012-05-20 15:05 0Code View: package jp.co.ri ... -
User Authentication
2012-05-18 14:35 1781The Java Authentication and Aut ... -
Security Managers and Permissions
2012-05-11 17:44 997Once a class has been loaded in ... -
[转]Web Services Over SSL - HOW TO
2012-05-07 15:31 928一篇好文章,原文地址:http://www.pankaj- ... -
Java Use the keyword goto
2012-05-07 14:53 0Today,I am unconsciously found ... -
HttpClient Access to HTML Form
2012-03-19 17:27 978Sample Html Form Code: <s:f ... -
Top 10 Java Developer Forums
2012-03-08 15:46 1127Developers get into tricky situ ... -
Python调用WebService出错,求解决
2012-03-01 21:43 1437import logginglogging.basicConf ... -
windows下安装suds一些问题
2012-03-01 11:26 4902使用java访问SharePoint,当初不知为何,多种方式失 ... -
Web Service for Python
2012-02-29 15:04 0Welcome to the Python Web Ser ... -
发几个收藏的Java游戏
2012-02-29 13:47 645JavaMine.jar 扫雷 jdiamonds. ... -
How Java access to shared folder
2012-02-27 20:23 1124import java.io.IOException; im ... -
Axis2 integrate with tomcat occur "unsupport" error
2012-02-27 14:42 1872Creating a Dynamic web project ... -
内网WebService访问外网出现UnknownHostException方法
2012-02-21 21:54 3421If you utilize webservice to su ...
相关推荐
Java SSL(Secure Socket Layer)套接字是一种用于在两个应用程序之间建立安全通信通道的协议,主要目的是为了确保数据传输的安全性。SSL通过使用加密技术来保护数据,防止未经授权的访问和篡改。在Java中,我们可以...
本文将深入探讨"android+java ssldemo"中的核心知识点,包括SSL/TLS协议的工作原理、双向认证的概念以及在华为手机上进行性能测试的考虑。 首先,SSL/TLS协议是互联网上保障数据传输安全的重要机制,它通过加密通信...
在Java编程中,`SSLSocket`是用于创建安全套接层(SSL)或传输层安全(TLS)连接的重要类,它提供了加密的数据传输服务,确保了网络通信的安全性。`SSLSocket`是Java标准库`javax.net.ssl`包的一部分,主要应用于...
Java SSL(Secure Socket Layer)是Java平台用于实现安全网络通信的API,它为应用程序提供了创建安全套接字层(SSL)或传输层安全(TLS)连接的能力。在Java中,SSL主要用于加密网络通信,确保数据在传输过程中的...
在"java_ssl.rar_JAVA SSL _The Client_ssl_ssl java"这个压缩包中,可能包含的是关于Java SSL连接服务器和客户端的相关教程或代码示例。 首先,我们来详细了解一下Java中的SSL连接过程: 1. **握手阶段**:当...
标题"SSL.rar_JAVA SSL _ssl_ssl java"表明这个压缩包包含的是关于Java中实现SSL/TLS协议的示例代码,可能是服务器端和客户端的简单实现。 描述中提到"SSL加密简单的服务端和客户端书写.希望对大家有所帮助",这...
Java中的SSL连接主要涉及到安全套接层(Secure Socket Layer)技术,用于在互联网上提供安全通信。SSLServerSocket是Java中的一个类,它用于创建服务器端的SSL连接,提供了加密和身份验证的能力,确保数据传输的安全...
Java SSL(Secure Socket Layer)和TLS(Transport Layer Security)是网络安全通信的重要组成部分,主要用于加密传输数据,确保网络上的敏感信息不被窃取或篡改。Java平台提供了对SSL/TLS协议的支持,使得开发者...
Java 实现 SSL(Secure Socket Layer)协议主要用于在网络通信中提供安全性和私密性,它通过加密数据和验证身份来确保信息在互联网上的安全传输。在Java中,SSL协议的实现主要依赖于`java.security`和`javax.net.ssl...
Java平台提供了一套完整的API,即JSSE(Java Secure Socket Extension),来支持SSL协议。在Java中实现SSL双向认证,也被称为mutual authentication,是指客户端和服务器都需要向对方证明自己的身份。以下将详细讲解...
Java SSL(Secure Socket Layer)通信程序是用于在Java应用程序中实现安全网络通信的重要技术。SSL是一种标准协议,它提供了一种安全的方式,使得客户端和服务器之间的数据传输能够防止被窃听、篡改或伪造。SSL已被...
Java SSL证书制作工具,如Portecle,是用于创建、管理和查看数字证书的安全软件。SSL(Secure Sockets Layer)证书是网络安全的一种基础组件,广泛应用于网站加密,确保数据传输过程中的隐私性和完整性。Portecle...
【标题】"SslClient:简单的 Java SSL 客户端" 在网络安全日益重要的今天,SSL(Secure Socket Layer)和它的继任者TLS(Transport Layer Security)已成为数据加密和身份验证的标准。Java作为广泛使用的编程语言,...
本篇文章将详细讲解基于SSL(Secure Socket Layer)的Java Socket网络通信,帮助开发者理解如何在Java中实现安全的、加密的数据传输。 SSL是一种广泛使用的网络安全协议,它为网络通信提供了数据加密、服务器身份...
本教程将深入讲解如何在Tomcat中配置SSL,以便在开发和部署Java Web应用时,能够提供安全的数据交换环境。 首先,了解SSL/TLS的基本原理。SSL/TLS协议用于在客户端浏览器和服务器之间建立安全的连接,它通过使用...
在Java中实现SSL,主要是通过Java的JSSE(Java Secure Socket Extension)框架来完成的。下面将详细介绍Java中实现SSL的基本步骤、核心概念以及相关的API。 ### 1. SSL协议概述 SSL协议主要包含三个部分:握手协议...
下载cer.zip文件后解压,得到cer文件夹,该目录下有运行脚本,其中Test文件夹为java项目源码,直接导出到Eclipse。 SSLServer主类在com.csii.ssl包下,其它pack下的内容都用不到。 cer目录下除server.sh,client.sh,...
Java sslSocket 聊天实例是使用 Java 的 SSL SOCKET 编程来实现安全聊天室功能的示例程序。 十二、用 COMMVIEW 工具截获浏览器访问支付宝的 TCP/IP 包 COMMVIEW 是一个网络嗅探工具,能够截获网络数据包。在本实例...
java SSL HttpClient。java 通过ssl去访问服务器(tomcat)