https通讯暨SSL学习笔记思路记录

来源:互联网 发布:布朗运动弹 知乎 编辑:程序博客网 时间:2024/06/04 18:41

**

https通讯暨SSL学习笔记思路记录

**
1.单向认证: 客户机只验证服务器的证书,服务器不验证客户机的证书
当客户端使用https请求服务端资源,客户端只需要信任服务端 证书信任列表库trustStore,即是否是服务端送来的信息。
而服务端不需要验证客户端的
2.双向认证
服务端要验证客户端(keyStore) ,客户端需要验证服务端(trustStore)证书颁发机构颁发的CA

PS:由于jdk工具内置了部分证书颁发机构,所以有的不需CA证书信任(即客户端不需要验证是否是有效的服务端)
比如微信支付API安全证书只给了商户密钥证书。 (即微信支付服务端要验证商户端的有效性)

3.疑问?为什么微信支付服务器使用的是https双向认证,java客户端实现SSL通讯确只用到了apiclient_cert.p12一个证书,
解答:因为微信支付服务器证书是第三方证书颁发机构颁发的,而java的jdk中已经内置了部分第三方证书颁发机构颁发的证书
所以java程序中不需要在验证服务器证书
而php中没有这个内置所以需要cacert.pem文件
4.猜想:微信支付服务器分了单向认证服务器与双向认证服务器 ,比如申请退款商户需要API安全证书 可能是跳转到双向认证服务器
微信支付给商户颁发证书,又将商户的证书导入自己的服务器密钥库中,这样就可以做到双向认证了。


keytool命令
-rfc 以base64输出文件


思路:
1、先搞定ssl单向验证,再解决双向。
2、先PC,再java平台,再android,不一定非得这样,自由选择,个人是为了弄清整个流程,多走了些路。
要深刻的懂得SSL,需要具备的基础知识:加密算法、对称加密算法、非对称加密算法、密钥(公钥、私钥)、数字证书、http协议、https协议、ISO网络七层协议等。

0 0
原创粉丝点击