- 浏览: 282967 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
北方狼:
请问,当表格列数过多时,除了调整pdf页面宽度,能否设置分页显 ...
利用itext操作pdf从数据库导出大量数据--功能汇总(一) -
15817048604:
.....................
利用itext操作pdf从数据库导出大量数据--添加水印(四) -
laoma102:
顶个,谢楼主
代理模式,JDK动态代理,SpringAOP来龙去脉 -
穷途末路:
给力,谢谢分享
Excel2003和Excel2007对下拉选择和下拉级联选择的操作以及java程序的调用 -
weir2009:
复杂的交叉表crosstab 怎么处理?
利用itext操作pdf从数据库导出大量数据--功能汇总(一)
产生服务端证书库
keytool -genkey -alias serverkey -keystore kserver.ks
产生服务端私有密匙
keytool -export -alias serverkey -keystore kserver.ks -file server.crt
产生服务端公有密匙
keytool -import -alias serverkey -file server.crt -keystore tclient.ks
产生客户端证书库
keytool -genkey -alias clientkey -keystore kclient.ks
产生客户端私有密匙
keytool -export -alias clientkey -keystore kclient.ks -file client.crt
产生客户端公有密匙
keytool -import -alias clientkey -file client.crt -keystore tserver.ks
删除服务端证书库
keytool -delete -alias serverkey -keystore kserver.ks -storepass 123456
删除客户端证书库
keytool -delete -alias clientkey -keystore kclient.ks -storepass 456789
删除后,必须手动删除这些文件,以便重复操作
具体过程如下:
D:\>keytool -genkey -alias serverkey -keystore kserver.ks
输入keystore密码: 123456
您的名字与姓氏是什么?
[Unknown]: xuguo
您的组织单位名称是什么?
[Unknown]: fruitking
您的组织名称是什么?
[Unknown]: fruitking
您所在的城市或区域名称是什么?
[Unknown]: hangzhou
您所在的州或省份名称是什么?
[Unknown]: zhejiang
该单位的两字母国家代码是什么
[Unknown]: cn
CN=xuguo, OU=fruitking, O=fruitking, L=hangzhou, ST=zhejiang, C=cn 正确吗?
[否]: y
输入<clientkey>的主密码
(如果和 keystore 密码相同,按回车): 123456
D:\>keytool -export -alias serverkey -keystore kserver.ks -file server.crt
输入keystore密码: 123456
保存在文件中的认证 <server.crt>
D:\>keytool -import -alias serverkey -file server.crt -keystore tclient.ks
输入keystore密码: 123456
Owner: CN=xuguo, OU=fruitking, O=fruitking, L=hangzhou, ST=zhejiang, C=cn
发照者: CN=xuguo, OU=fruitking, O=fruitking, L=hangzhou, ST=zhejiang, C=cn
序号: 4a9641c2
有效期间: Thu Aug 27 16:20:18 CST 2009 至: Wed Nov 25 16:20:18 CST 2009
认证指纹:
MD5: 50:6D:45:A3:37:BF:51:45:94:F0:8B:4D:42:9F:72:8A
SHA1: A9:C6:26:7E:A2:3E:B9:68:B8:E4:FE:E0:C2:3C:C9:E0:A3:67:76:B5
信任这个认证? [否]: y
认证已添加至keystore中
D:\>F:
F:\>cd F:\testc
F:\testc>keytool -genkey -alias clientkey -keystore kclient.ks
输入keystore密码: 456789
您的名字与姓氏是什么?
[Unknown]: xuguo
您的组织单位名称是什么?
[Unknown]: pubone
您的组织名称是什么?
[Unknown]: pubone
您所在的城市或区域名称是什么?
[Unknown]: hangzhou
您所在的州或省份名称是什么?
[Unknown]: zhejiang
该单位的两字母国家代码是什么
[Unknown]: cn
CN=xuguo, OU=pubone, O=pubone, L=hangzhou, ST=zhejiang, C=cn 正确吗?
[否]: y
输入<cclientkey>的主密码
(如果和 keystore 密码相同,按回车): 456789
F:\testc>keytool -export -alias clientkey -keystore kclient.ks -file client.crt
输入keystore密码: 456789
保存在文件中的认证 <client.crt>
F:\testc>keytool -import -alias clientkey -file client.crt -keystore tserver.ks
输入keystore密码: 456789
Owner: CN=xuguo, OU=pubone, O=pubone, L=hangzhou, ST=zhejiang, C=cn
发照者: CN=xuguo, OU=pubone, O=pubone, L=hangzhou, ST=zhejiang, C=cn
序号: 4a9643c3
有效期间: Thu Aug 27 16:28:51 CST 2009 至: Wed Nov 25 16:28:51 CST 2009
认证指纹:
MD5: FB:CC:9D:5C:E0:7E:A6:70:CB:31:78:BC:06:1F:53:BC
SHA1: 97:10:7C:B2:70:78:07:5A:2B:2D:51:8E:73:B3:71:FB:4C:51:87:05
信任这个认证? [否]: y
认证已添加至keystore中
F:\testc>
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.security.KeyStore;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLServerSocket;
import javax.net.ssl.TrustManagerFactory;
public class Server {
/**
* @param args
*/
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
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("D:/kserver.ks"), "123456".toCharArray());//服务端私匙
tks.load(new FileInputStream("F:/testc/tserver.ks"), "456789".toCharArray());//客户端公匙
kmf.init(ks, "123456".toCharArray());
tmf.init(tks);
ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
SSLServerSocket serverSocket = (SSLServerSocket) ctx.getServerSocketFactory().createServerSocket(8443);
serverSocket.setNeedClientAuth(true);
while (true) {
try {
Socket s = serverSocket.accept();
InputStream input = s.getInputStream();
OutputStream output = s.getOutputStream();
BufferedInputStream bis = new BufferedInputStream(input);
BufferedOutputStream bos = new BufferedOutputStream(output);
byte[] buffer = new byte[20];
int length = bis.read(buffer);
System.out.println("Receive: " + new String(buffer, 0, length).toString());
bos.write("Hello,Xuguo,welcome to here!".getBytes());
bos.flush();
s.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
}
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.KeyStore;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.TrustManagerFactory;
public class Client {
/**
* @param args
*/
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
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("F:/testc/kclient.ks"), "456789".toCharArray());//客户端私匙
tks.load(new FileInputStream("D:/tclient.ks"), "123456".toCharArray());//服务端公匙
kmf.init(ks, "456789".toCharArray());
tmf.init(tks);
ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
SSLSocket sslSocket = (SSLSocket) ctx.getSocketFactory().createSocket("localhost", 8443);
InputStream input = sslSocket.getInputStream();
OutputStream output = sslSocket.getOutputStream();
BufferedInputStream bis = new BufferedInputStream(input);
BufferedOutputStream bos = new BufferedOutputStream(output);
//bos.write("Hello".getBytes());
bos.write("Xuguo is a super man.".getBytes());
bos.flush();
byte[] buffer = new byte[20];
int length = bis.read(buffer);
System.out.println(new String(buffer, 0, length));
sslSocket.close();
}
}
keytool -genkey -alias serverkey -keystore kserver.ks
产生服务端私有密匙
keytool -export -alias serverkey -keystore kserver.ks -file server.crt
产生服务端公有密匙
keytool -import -alias serverkey -file server.crt -keystore tclient.ks
产生客户端证书库
keytool -genkey -alias clientkey -keystore kclient.ks
产生客户端私有密匙
keytool -export -alias clientkey -keystore kclient.ks -file client.crt
产生客户端公有密匙
keytool -import -alias clientkey -file client.crt -keystore tserver.ks
删除服务端证书库
keytool -delete -alias serverkey -keystore kserver.ks -storepass 123456
删除客户端证书库
keytool -delete -alias clientkey -keystore kclient.ks -storepass 456789
删除后,必须手动删除这些文件,以便重复操作
具体过程如下:
D:\>keytool -genkey -alias serverkey -keystore kserver.ks
输入keystore密码: 123456
您的名字与姓氏是什么?
[Unknown]: xuguo
您的组织单位名称是什么?
[Unknown]: fruitking
您的组织名称是什么?
[Unknown]: fruitking
您所在的城市或区域名称是什么?
[Unknown]: hangzhou
您所在的州或省份名称是什么?
[Unknown]: zhejiang
该单位的两字母国家代码是什么
[Unknown]: cn
CN=xuguo, OU=fruitking, O=fruitking, L=hangzhou, ST=zhejiang, C=cn 正确吗?
[否]: y
输入<clientkey>的主密码
(如果和 keystore 密码相同,按回车): 123456
D:\>keytool -export -alias serverkey -keystore kserver.ks -file server.crt
输入keystore密码: 123456
保存在文件中的认证 <server.crt>
D:\>keytool -import -alias serverkey -file server.crt -keystore tclient.ks
输入keystore密码: 123456
Owner: CN=xuguo, OU=fruitking, O=fruitking, L=hangzhou, ST=zhejiang, C=cn
发照者: CN=xuguo, OU=fruitking, O=fruitking, L=hangzhou, ST=zhejiang, C=cn
序号: 4a9641c2
有效期间: Thu Aug 27 16:20:18 CST 2009 至: Wed Nov 25 16:20:18 CST 2009
认证指纹:
MD5: 50:6D:45:A3:37:BF:51:45:94:F0:8B:4D:42:9F:72:8A
SHA1: A9:C6:26:7E:A2:3E:B9:68:B8:E4:FE:E0:C2:3C:C9:E0:A3:67:76:B5
信任这个认证? [否]: y
认证已添加至keystore中
D:\>F:
F:\>cd F:\testc
F:\testc>keytool -genkey -alias clientkey -keystore kclient.ks
输入keystore密码: 456789
您的名字与姓氏是什么?
[Unknown]: xuguo
您的组织单位名称是什么?
[Unknown]: pubone
您的组织名称是什么?
[Unknown]: pubone
您所在的城市或区域名称是什么?
[Unknown]: hangzhou
您所在的州或省份名称是什么?
[Unknown]: zhejiang
该单位的两字母国家代码是什么
[Unknown]: cn
CN=xuguo, OU=pubone, O=pubone, L=hangzhou, ST=zhejiang, C=cn 正确吗?
[否]: y
输入<cclientkey>的主密码
(如果和 keystore 密码相同,按回车): 456789
F:\testc>keytool -export -alias clientkey -keystore kclient.ks -file client.crt
输入keystore密码: 456789
保存在文件中的认证 <client.crt>
F:\testc>keytool -import -alias clientkey -file client.crt -keystore tserver.ks
输入keystore密码: 456789
Owner: CN=xuguo, OU=pubone, O=pubone, L=hangzhou, ST=zhejiang, C=cn
发照者: CN=xuguo, OU=pubone, O=pubone, L=hangzhou, ST=zhejiang, C=cn
序号: 4a9643c3
有效期间: Thu Aug 27 16:28:51 CST 2009 至: Wed Nov 25 16:28:51 CST 2009
认证指纹:
MD5: FB:CC:9D:5C:E0:7E:A6:70:CB:31:78:BC:06:1F:53:BC
SHA1: 97:10:7C:B2:70:78:07:5A:2B:2D:51:8E:73:B3:71:FB:4C:51:87:05
信任这个认证? [否]: y
认证已添加至keystore中
F:\testc>
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.security.KeyStore;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLServerSocket;
import javax.net.ssl.TrustManagerFactory;
public class Server {
/**
* @param args
*/
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
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("D:/kserver.ks"), "123456".toCharArray());//服务端私匙
tks.load(new FileInputStream("F:/testc/tserver.ks"), "456789".toCharArray());//客户端公匙
kmf.init(ks, "123456".toCharArray());
tmf.init(tks);
ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
SSLServerSocket serverSocket = (SSLServerSocket) ctx.getServerSocketFactory().createServerSocket(8443);
serverSocket.setNeedClientAuth(true);
while (true) {
try {
Socket s = serverSocket.accept();
InputStream input = s.getInputStream();
OutputStream output = s.getOutputStream();
BufferedInputStream bis = new BufferedInputStream(input);
BufferedOutputStream bos = new BufferedOutputStream(output);
byte[] buffer = new byte[20];
int length = bis.read(buffer);
System.out.println("Receive: " + new String(buffer, 0, length).toString());
bos.write("Hello,Xuguo,welcome to here!".getBytes());
bos.flush();
s.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
}
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.KeyStore;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.TrustManagerFactory;
public class Client {
/**
* @param args
*/
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
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("F:/testc/kclient.ks"), "456789".toCharArray());//客户端私匙
tks.load(new FileInputStream("D:/tclient.ks"), "123456".toCharArray());//服务端公匙
kmf.init(ks, "456789".toCharArray());
tmf.init(tks);
ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
SSLSocket sslSocket = (SSLSocket) ctx.getSocketFactory().createSocket("localhost", 8443);
InputStream input = sslSocket.getInputStream();
OutputStream output = sslSocket.getOutputStream();
BufferedInputStream bis = new BufferedInputStream(input);
BufferedOutputStream bos = new BufferedOutputStream(output);
//bos.write("Hello".getBytes());
bos.write("Xuguo is a super man.".getBytes());
bos.flush();
byte[] buffer = new byte[20];
int length = bis.read(buffer);
System.out.println(new String(buffer, 0, length));
sslSocket.close();
}
}
发表评论
-
电话号码压缩方法
2013-03-09 23:31 1614/** * 电话号码采用62进制压缩方法工具 ... -
jquerytree树结构实例
2011-05-18 09:19 1644上传一个jquerytree的实例 下面做些讲解 jquery ... -
js对象的定义以及在弹出窗口中的返回值应用
2011-05-16 16:57 1911弹出窗口及返回值的js代码 function searc ... -
java枚举值的使用
2011-02-15 11:04 49571.java枚举值解决类型安全的问题,范围问题,能获取一组值的 ... -
存储设备的接口分类
2011-01-07 23:29 1480存储设备的接口有五大类 IDE、SCSI、USB,并行口,串口 ... -
VBA脚本语言测试Excel宏定义处理文件拷贝
2010-11-29 13:54 2965'指定文件目录复制工具(可用户基于svn版本管理的项目做增 ... -
Excel2003和Excel2007对下拉选择和下拉级联选择的操作以及java程序的调用
2010-11-15 16:23 6023Excel2007和Excel2003的部分功能菜单有所调整 ... -
深入探索 高效的Java异常处理框架
2010-11-11 09:07 1309突然想起应用中异常处理问题,以前很少应用这块知识,或者说应用得 ... -
oracle数据库备份恢复和svn备份恢复
2010-08-09 14:07 1393目录 2010-08-06系统重装 1 一、 检查当前操作系统 ... -
url中文乱码,分页中乱码,textarea回车符回写
2010-04-14 10:51 2881url传输乱码的解决方式 这里不针对在web服务器设置编码(考 ... -
myeclips下的jvm内存设计问题
2009-12-22 11:06 1077在myeclipse的window菜单-》preference ... -
struts2 井号,星号,百分号的含义和使用举例
2009-11-18 15:03 3184struts2 OGNL,struts2 表达 ... -
字符串连接,但需要去掉重复部分
2009-11-06 17:26 1352比如有两个字符串,上海虹桥、虹桥国际机场,连接起来为上海虹桥国 ... -
oracle存储过程学习过程
2009-09-30 16:58 2041一直没有使用过存储过程 今天特意学习一下oracle的存储过程 ... -
正则表达式实例
2009-09-23 15:32 1195var chineseNameReg = /^[\u4E00- ... -
文本框默认输入灰色显示,点击后用层显示提示信息
2009-09-21 17:16 3201<html> <head> <t ... -
socket模拟http中post或者get提交数据,并获得响应数据
2009-08-31 10:37 8198首先建立一个web工程 准备连个jsp文件试试正常的流程 ... -
Web Services的基本原理
2009-08-05 16:34 1083摘要:本文介绍了Web Services的起源和基本原理,分析 ... -
摘抄:jvm的内存介绍和举例
2009-08-01 11:20 11994.2 容易被搞晕的--堆和栈 由于"堆" ... -
摘抄:ejb的概念和原理解说
2009-08-01 11:06 1339转自《java程序员 编程 ...
相关推荐
压缩包中的`wss`测试例子展示了如何在WebSocket上应用SSL/TLS双向认证。 6. **证书导入**:为了测试,你需要将服务器的PKCS12格式的证书导入到浏览器的信任存储中,以便浏览器可以验证服务器的身份。同样,客户端也...
C# TLS SSL TCP双向认证 X509Store SslStream Certificate Visual Studio 2017 命令提示 键入: makecert -r -pe -n “CN=TestServer” -ss Root -sky exchange 等待来自客户端的连接... 显示安全等级 密钥套件: Aes...
总之,GMSSL双向认证是基于TLS协议的一种增强,利用了中国国家密码算法,确保了国内网络通信的自主可控和安全性。通过客户端和服务器之间的多轮交互,实现了双方身份的可靠验证和安全的密钥交换。这个过程涉及到证书...
总结,OpenSSL双向认证涉及证书的生成、配置SSL_CTX上下文、加载证书和私钥,以及在服务端和客户端进行验证。正确实施双向认证可以显著提高通信的安全性,防止未经授权的第三方干扰或窃取数据。对于开发者来说,理解...
首先,理解SSL双向认证的概念是至关重要的。在传统的单向认证中,服务器验证客户端的身份,而双向认证则要求双方都提供有效的身份证明。这意味着客户端不仅要验证服务器的身份,服务器也需要验证客户端的身份。这种...
同时,如果需要双向认证,客户端也需要提供自己的证书(如client.crt)。CA2.crt可能是证书颁发机构的根证书,用于验证服务器和客户端证书的合法性。 在使用HP-Socket-5.5.1模块时,开发者需要理解以下核心概念: -...
本项目“基于Vue-cli和Servlet的前后端分离的电商系统”就是一个典型的例子,它结合了前端的Vue.js框架和后端的Servlet技术来实现一个完整的电子商务平台。下面将详细探讨相关知识点。 1. **Vue-cli**: Vue-cli是...
- 可配置SSL连接为单向或双向认证。 11. **查看已发布EJB** - 在WebLogic管理控制台的“Deployment”部分,可以查看和管理所有已发布的EJB。 12. **消息驱动Bean(MDB)** - persistent MDB保证消息传递的可靠...
5. 安全性:讨论FTP和HTTP的安全增强,如FTPS(FTP over TLS/SSL)、HTTPS(HTTP over TLS/SSL)以及认证机制。 6. 错误处理与调试:提供常见网络错误的处理策略,以及如何调试网络应用。 7. 实践项目:可能包含...
2. **后端**:Java实现的WebSocket服务器,可能基于诸如Jetty或Spring Boot等框架,处理来自客户端的连接请求,转发信令数据,并可能提供了额外的服务,如用户认证或会话管理。 3. **配置文件**:可能包括服务器配置...
超文本的典型例子是HTML文档,它通过各种标签定义了链接、图片等信息,浏览器通过解析这些标签来展示出包含丰富媒体的网页。 ### HTTP方法 HTTP定义了多种请求方法,常用的方法包括GET和POST。 #### GET方法 GET...
在Go中,`grpc.UnaryServerInterceptor` 和 `grpc.StreamServerInterceptor` 分别用于处理单向和双向流调用的拦截。 二、链接验证 链接验证确保客户端与服务器之间的连接是安全的。在gRPC中,这通常涉及到SSL/TLS...
描述中提到了Active Directory(AD)身份验证和2-FA(两因素认证),这是网络安全的重要组成部分。AD是微软提供的一个目录服务,用于管理和验证用户身份,而2-FA增加了额外的安全层,要求用户提供除密码之外的第二种...
MyChat项目就是这样一个例子,它是一个基于Java技术实现的网络聊天应用程序,允许用户通过互联网进行实时通信。 **一、Java网络编程基础** MyChat的开发语言是Java,Java提供了丰富的API来支持网络编程,如Socket...
传统的HTTP协议是基于请求-响应模式的,而WebSocket则创建了一条持久连接,允许数据在服务器和客户端之间双向流动,无需为每个交互发送新的HTTP请求。 在JavaScript中,我们可以使用Node.js来构建WebSocket服务器,...