SSLSocket

所属分类:Java编程
开发工具:Java
文件大小:40KB
下载次数:26
上传日期:2013-09-12 11:00:47
上 传 者wangshixiu
说明:  java 实现的SSL单向、双向加密socket数据传输,包含keystore文件,readme.txt中包含windows下生成keystore的shell ,以及来自网上的参考网址,此项目导入Eclipse后可以直接运行
(java implementation of SSL-way, two-way data transmission encryption socket that contains the keystore file, readme.txt under windows generated keystore contains the shell, as well as from the online reference site, this project into Eclipse can be run directly)

文件列表:
Socket_4 (0, 2013-09-10)
Socket_4\.classpath (232, 2013-05-07)
Socket_4\.project (384, 2013-05-07)
Socket_4\.settings (0, 2013-09-10)
Socket_4\.settings\org.eclipse.core.resources.prefs (123, 2013-09-10)
Socket_4\bin (0, 2013-09-11)
Socket_4\bin\clientatclient.keystore (1354, 2013-09-11)
Socket_4\bin\clientatserver.keystore (648, 2013-09-11)
Socket_4\bin\com (0, 2013-09-10)
Socket_4\bin\com\lwx (0, 2013-09-10)
Socket_4\bin\com\lwx\bean (0, 2013-09-10)
Socket_4\bin\com\lwx\bean\User.class (930, 2013-09-10)
Socket_4\bin\com\lwx\socket (0, 2013-09-11)
Socket_4\bin\com\lwx\socket\ClientTest.class (2487, 2013-09-12)
Socket_4\bin\com\lwx\socket\ServerTest$ReceiveSocket.class (2646, 2013-09-11)
Socket_4\bin\com\lwx\socket\ServerTest.class (3785, 2013-09-11)
Socket_4\bin\com\lwx\socket\Test.class (1561, 2013-09-11)
Socket_4\bin\com\lwx\socket\TestSSLSocketClient.class (5220, 2013-09-12)
Socket_4\bin\com\lwx\socket\TestSSLSocketServer.class (5305, 2013-09-12)
Socket_4\bin\serveratclient.keystore (648, 2013-09-11)
Socket_4\bin\serveratserver.keystore (1354, 2013-09-11)
Socket_4\bin\sslclient.keystore (620, 2013-05-08)
Socket_4\bin\sslsocket.keystore (1326, 2013-05-08)
Socket_4\src (0, 2013-09-11)
Socket_4\src\clientatclient.keystore (1354, 2013-09-11)
Socket_4\src\clientatserver.keystore (648, 2013-09-11)
Socket_4\src\com (0, 2013-09-10)
Socket_4\src\com\lwx (0, 2013-09-10)
Socket_4\src\com\lwx\bean (0, 2013-09-10)
Socket_4\src\com\lwx\bean\User.java (722, 2013-05-07)
Socket_4\src\com\lwx\socket (0, 2013-09-11)
Socket_4\src\com\lwx\socket\ClientTest.java (1653, 2013-09-12)
Socket_4\src\com\lwx\socket\ServerTest.java (4846, 2013-09-11)
Socket_4\src\com\lwx\socket\Test.java (772, 2013-09-11)
Socket_4\src\com\lwx\socket\TestSSLSocketClient.java (3756, 2013-09-12)
Socket_4\src\com\lwx\socket\TestSSLSocketServer.java (3861, 2013-09-12)
Socket_4\src\serveratclient.keystore (648, 2013-09-11)
Socket_4\src\serveratserver.keystore (1354, 2013-09-11)
... ...

>> 单项加密:客户端验证是否是可信的服务器 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 一、创建服务端密钥 keytool.exe -genkeypair -v -alias sslsocket -keyalg RSA -keystore e:\sslsocket.keystore 出现如下结果: 输入keystore密码: 再次输入新密码: 您的名字与姓氏是什么? [Unknown]: lwx 您的组织单位名称是什么? [Unknown]: newland 您的组织名称是什么? [Unknown]: bomc 您所在的城市或区域名称是什么? [Unknown]: fz 您所在的州或省份名称是什么? [Unknown]: fj 该单位的两字母国家代码是什么 [Unknown]: zh CN=lwx, OU=newland, O=bomc, L=fz, ST=fj, C=zh 正确吗? [否]: y 正在为以下对象生成 1,024 位 RSA 密钥对和自签名证书 (SHA1withRSA)(有效期为 90 天 ): CN=lwx, OU=newland, O=bomc, L=fz, ST=fj, C=zh 输入的主密码 (如果和 keystore 密码相同,按回车): [正在存储 e:\sslsocket.keystore] 查看生成的密钥信息 keytool -list -v -keystore e:\sslsocket.keystore -storepass 123456 出现如下结果: Keystore 类型: JKS Keystore 提供者: SUN 您的 keystore 包含 1 输入 别名名称: sslsocket 创建日期: 2013-5-8 项类型: PrivateKeyEntry 认证链长度: 1 认证 [1]: 所有者:CN=lwx, OU=newland, O=bomc, L=fz, ST=fj, C=zh 签发人:CN=lwx, OU=newland, O=bomc, L=fz, ST=fj, C=zh 序列号:5189a30d 有效期: Wed May 08 08:57:49 CST 2013 至Tue Aug 06 08:57:49 CST 2013 证书指纹: MD5:51:5E:1A:57:1B:B9:18:3A:9B:05:F7:13:E5:06:AB:F0 SHA1:11:0E:C8:8B:46:1F:27:FA:12:95:95:4E:1E:29:E7:27:50:2E:E9:48 签名算法名称:SHA1withRSA 版本: 3 ******************************************* ******************************************* 二、生成服务端证书 keytool.exe -exportcert -v -alias sslsocket -file e:\sslsocket.cer -keystore e:\sslsocket.keystore 查看证书信息 keytool.exe -printcert -v -file e:\sslsocket.cer 打印结果 所有者:CN=lwx, OU=newland, O=bomc, L=fz, ST=fj, C=zh 签发人:CN=lwx, OU=newland, O=bomc, L=fz, ST=fj, C=zh 序列号:5189a30d 有效期: Wed May 08 08:57:49 CST 2013 至Tue Aug 06 08:57:49 CST 2013 证书指纹: MD5:51:5E:1A:57:1B:B9:18:3A:9B:05:F7:13:E5:06:AB:F0 SHA1:11:0E:C8:8B:46:1F:27:FA:12:95:95:4E:1E:29:E7:27:50:2E:E9:48 签名算法名称:SHA1withRSA 版本: 3 三、生成客户端密钥 keytool.exe -importcert -v -alias sslsocketcer -file e:\sslsocket.cer -keystore e:\sslclient.keystore 四、进行程序开发 关于keytool的更多本资料 http://blog.chinaunix.net/uid-17102734-id-2830223.html >>>>>>> 双向验证 Edit by 王世修 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 一:本项目用到的证书所使用的生成脚本 *1:keytool.exe -genkeypair -v -alias serveratserver -keyalg RSA -keystore d:\serveratserver.keystore -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN" -keypass 654321 -storepass 123456 -validity 3650 >> 查看信息 keytool.exe -list -v -keystore d:\serveratserver.keystore -storepass 123456 *2:keytool.exe -exportcert -v -alias serveratserver -file d:\serveratserver.cer -keystore d:\serveratserver.keystore -storepass 123456 >> 查看信息 keytool.exe -printcert -v -file d:\serveratserver.cer *3:keytool.exe -importcert -v -alias serveratserver -file d:\serveratserver.cer -keystore d:\serveratclient.keystore -storepass 123456 *4:keytool.exe -genkeypair -v -alias clientatclient -keyalg RSA -keystore d:\clientatclient.keystore -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN" -keypass 654321 -storepass 123456 -validity 3650 >> 查看信息:keytool.exe -list -v -keystore d:\clientatclient.keystore *5:keytool.exe -exportcert -v -alias clientatclient -file d:\clientatclient.cer -keystore d:\clientatclient.keystore -storepass 123456 >> 查看信息:keytool.exe -printcert -v -file d:\clientatclient.cer *6:keytool.exe -importcert -v -alias clientatclient -file d:\clientatclient.cer -keystore d:\clientatserver.keystore -storepass 123456 二:详解 1、keystore的生成: 这里用的是一次性生成,也可以分段生成 *1 keytool.exe -genkeypair -v -alias serveratserver -keyalg RSA -keystore d:\serveratserver.keystore -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN" -keypass 654321 -storepass 123456 -validity 3650 参数说明: -genkeypair:表示要创建一个新的密钥 -v:显示密钥库中的证书详细信息 -alias密钥的别名 -keyalg使用加密的算法,这里是RSA -keystore 密钥保存在D:盘目录下的serveratserver文件中 -dname表示密钥的Distinguished Names, (中英文即可) CN=(名字与姓氏) OU=(组织单位名称) O=(组织名称) L=(城市或区域名称) ST=(州或省份名称) C=(单位的两字母国家代码) Distinguished Names表明了密钥的发行者身份 -keypass私有密钥的密码,默认changeit -storepass 存取密码,默认changeit,这个密码提供系统从serveratserver文件中将信息取出 -validity该密钥的有效期 (默认为90天) 2、keystore信息的查看: 缺省情况下,-list 命令打印证书的 MD5 指纹。而如果指定了 -v 选项,将以可读格式打印证书,如果指定了 -rfc 选项,将以可打印的编码格式输出证书。 keytool.exe -list -v -keystore d:\serveratserver.keystore -storepass 123456 显示内容:略 keytool.exe -list -rfc -keystore d:\serveratserver.keystore -storepass 123456 显示内容:略 3、证书的导出: keytool.exe -exportcert -v -alias serveratserver -file d:\serveratserver.cer -keystore d:\serveratserver.keystore -storepass 123456 (指定导出的证书位置及证书名称) 4、查看导出的证书信息 keytool.exe -printcert -file d:\serveratserver.cer 显示内容:略(在windows下可以双击yushan.crt查看) 5、证书的导入: 现在将serveratserver.cer 加入到serveratclient.keystore中: 这里serveratclient.keystore没有,是自动生成的,如果是自动生成的,跟导出的信息一样 keytool.exe -importcert -v -alias serveratserver -file d:\serveratserver.cer -keystore d:\serveratclient.keystore -storepass 123456 6、证书条目的删除: keytool -delete -alias serveratserver(指定需删除的别名) -keystore serveratserver.keystore -storepass 123456 7、证书条目口令的修改: keytool -keypasswd -alias serveratserver(需要修改密码的别名) -keypass yushan(原始密码) -new 123456(别名的新密码) -keystore d:\serveratserver.keystore -storepass 123456 8、keystore口令的修改: keytool -storepasswd d:\serveratserver.keystore(需修改口令的keystore) -storepass 123456(原始密码) -new yushan(新密码) 9、修改keystore中别名为serveratserver的信息 keytool -selfcert -alias serveratserver -keypass yushan -keystore d:\serveratserver.keystore -storepass 123456 -dname "cn=yushan,ou=yushan,o=yushan,c=us" 10,将[keystore]导入java信任证书库 keytool -import -trustcacerts -alias tomcat_pso -file [keystore] -keypass changeit -keystore "%JAVA_HOME%/jre/lib/security/cacerts" 注:%JAVA_HOME%/jre/lib/security/cacerts为java自带的证书库,默认密码为changeit keytool -list -v -keystore c:/jdk15/jre/lib/security/cacerts (列出信任库中已经存在的证书) keytool -delete -trustcacerts -alias tomcat -keystore c:/jdk15/jre/lib/security/cacerts -storepass changeit(删除某一个证书) 三:keytool介绍 结合网络资源,对keytool使用总结,以备后用: Keytool是一个Java数据证书的管理工具 ,Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中 在keystore里,包含两种数据: 密钥实体(Key entity)――密钥(secret key)又或者是私钥和配对公钥(采用非对称加密) 可信任的证书实体(trusted certificate entries)――只包含公钥 ailas(别名)每个keystore都关联这一个独一无二的alias,这个alias通常不区分大小写 JDK中keytool常用命令: -genkey 在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书 (在没有指定生成位置的情况下,keystore会存在用户系统默认目录,如:对于window xp系统,会生成在系统的C:\Documents and Settings\UserName\文件名为“.keystore”) -alias 产生别名 -keystore 指定密钥库的名称(产生的各类信息将不在.keystore文件中) -keyalg 指定密钥的算法 (如 RSA DSA(如果不指定默认采用DSA)) -validity 指定创建的证书有效期多少天 -keysize 指定密钥长度 -storepass 指定密钥库的密码(获取keystore信息所需的密码) -keypass 指定别名条目的密码(私钥的密码) -dname 指定证书拥有者信息 例如: "CN=名字与姓氏,OU=组织单位名称,O=组织名称,L=城市或区域名称,ST=州或省份名称,C=单位的两字母国家代码" -list 显示密钥库中的证书信息 keytool -list -v -keystore 指定keystore -storepass 密码 -v 显示密钥库中的证书详细信息 -export 将别名指定的证书导出到文件 keytool -export -alias 需要导出的别名 -keystore 指定keystore -file 指定导出的证书位置及证书名称 -storepass 密码 -file 参数指定导出到文件的文件名 -delete 删除密钥库中某条目 keytool -delete -alias 指定需删除的别 -keystore 指定keystore -storepass 密码 -printcert 查看导出的证书信息 keytool -printcert -file yushan.crt -keypasswd 修改密钥库中指定条目口令 keytool -keypasswd -alias 需修改的别名 -keypass 旧密码 -new 新密码 -storepass keystore密码 -keystore sage -storepasswd 修改keystore口令 keytool -storepasswd -keystore e:\yushan.keystore(需修改口令的keystore) -storepass 123456(原始密码) -new yushan(新密码) -import 将已签名数字证书导入密钥库 keytool -import -alias 指定导入条目的别名 -keystore 指定keystore -file 需导入的证书 下面是各选项的缺省值。 -alias "mykey" -keyalg "DSA" -keysize 1024 -validity 90 -keystore 用户宿主目录中名为 .keystore 的文件 -file 读时为标准输入,写时为标准输出 四:引用 java中Keytool的使用总结 http://yushan.iteye.com/blog/434955 java ssl https 连接详解 生成证书 http://www.2cto.com/kf/201208/151826.html Java加密解密(五) 密钥库文件格式(Keystore)和证书文件格式(Certificate) http://chrui.iteye.com/blog/1018800 Java加密解密(三)浅谈基于SSL的Socket通信 http://chrui.iteye.com/blog/1018778 Java加密解密(四)浅谈基于SSL的Socket通信2 http://chrui.iteye.com/blog/1018786 Java加密技术(十一)――双向认证 http://snowolf.iteye.com/blog/510***5

近期下载者

相关文件


收藏者