转自:http://www.jianshu.com/p/0a7b028e2465
 
 1.是谁配置单向还是双向? 由服务器容器配置
 
  
 
 
 
  
 
 单向认证流程: 1.客户端say hello 服务端 2.服务端将证书、公钥等发给客户端 3.客户端CA验证证书,成功继续、不成功弹出选择页面 4.客户端告知服务端所支持的加密算法 5.服务端选择最高级别加密算法明文通知客户端 6.客户端生成随机对称密匙key,使用服务端公钥加密发送给服务端 7.服务端使用私钥解密,获取对称密匙key 8.后续客户端与服务端使用该密匙key进行加密通信
 
 双向认证流程: 1.客户端say hello 服务端 2.服务端将证书、公钥等发给客户端 3.客户端CA验证证书,成功继续、不成功弹出选择页面 4.客户端将自己的证书和公钥发送给服务端 5.服务端验证客户端证书,如不通过直接断开连接 6.客户端告知服务端所支持的加密算法 7.服务端选择最高级别加密算法使用客户端公钥加密后发送给客户端 8.客户端收到后使用私钥解密并生成随机对称密匙key,使用服务端公钥加密发送给服务端 9.服务端使用私钥解密,获取对称密匙key 10.后续客户端与服务端使用该密匙key进行加密通信
 
 参考:http://blog.csdn.net/duanbokan/article/details/50847612