客户端与服务器SSL双向认证(客户端:java-服务端:java)

客户端与服务器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

你可能感兴趣的:(android,应用开发)