在使用Socket编写通讯程序时,通过添加对SSL的支持可以保障数据的安全和完整。Java提供了Java 安全套接字扩展——JSSE,JSSE是一个纯Java实现的SSL和TLS协议框架,抽象了SSL和TLS复杂的算法,使安全问题变得简单。使用JSSE来开发安全的Socket通讯程序需要一个证书来进行安全认证,认证支持单向认证和双向认证两种方式。
在编写通讯程序之前,需要先生成证书。这里使用java自带的keytool工具生成证书。
服务端证书:
创建服务端keystore
keytool -genkey -keystore server.jks -storepass 123456 -keyalg RSA -validity 365 -keypass 123456
导出服务端证书
keytool -export -keystore server.jks -storepass 123456 -file server.cer
将服务端证书导入到客户端trustkeystroe
keytool -import -keystore server_clientTrust.jks -storepass 123456 -file server.cer
客户端证书:
创建客户端keystore
keytool -genkey -keystore client.jks -storepass 123456 -keyalg RSA -validity 365 -keypass 123456
导出客户端证书
keytool -export -keystore client.jks -storepass 123456 -file client.cer
将客户端证书导入到服务端trustkeystroe
keytool -import -keystore client_serverTrust.jks -storepass 123456 -file client.cer
-keystore:指定密钥库的名称