客户端与服务器SSL双向认证(java-java):含源码
(一)实现技术:
JSSE(Java Security Socket Extension)
是Sun为了解决在Internet上的实现安全信息传输的解决方案。它实现了SSL和TSL(传输层安全)协议。在JSSE中包含了数据加密,服务器验证,消息完整性和客户端验证等技术。通过使用JSSE,可以在Client和Server之间通过TCP/IP协议安全地传输数据。
为了实现消息认证。
Server需要:
1)KeyStore: 其中保存服务端的私钥
2)Trust KeyStore:其中保存客户端的授权证书
Client需要:
1)KeyStore:其中保存客户端的私钥
2)Trust KeyStore:其中保存服务端的授权证书
(二)具体操作步骤:
使用Java自带的keytool命令,去生成这样信息文件:(C:\Program Files\Java\jdk1.6.0\bin里)
1)生成服务端私钥,并且导入到服务端KeyStore文件中
命令:keytool -genkey -alias serverkey -keystorekeyOfServer.keystore
文件生成:C:\Users\zwp\AppData\Local\VirtualStore\Program Files\Java\jdk1.6.0\bin(视情况而定)
2)根据私钥,导出服务端证书
命令:keytool -export -alias server -keystore keyOfServer.keystore -file e:\server.crt
(注意点:-file server.cer直接执行时候,由于jdk装在c盘,为只读,需要指定其他路径即可(e:\server.cer))
3)生成client端密钥
keytool)私-genkey -alias clientkey -keystore keyOfClient.keystore
4)私钥导出客户端证书
keytool -export -alias clientkey -keystore keyOfClient.keystore -file e:\client.crt
5)将服务端证书,导入到客户端的Trust KeyStore中
keytool -genkey -alias clientkey -keystore keyOfClient.keystore
6)将客户端证书加到服务端信任列表
keytool -import -alias serverkey -file e:\client.crt -keystore trustOfServer.keystore
(三)目录结构
(四)注意地方
1.服务端:
2.客户端:
(五)运行结果
客户端:
Server Response: Hello
服务端:
=======Start Server !======
------Receive------
Client Test Running
======================================================================
源码下载:http://download.csdn.net/detail/beihaizuopeng/5290739
参考:http://blog.csdn.net/chw1989/article/details/7584995