SSL协议简介:
- 传输层和应用层之间的安全协议
- 非对称加密(身份认证)+ 对称加密(信息加密)
应用场景:支付等安全需求性高的C/S网络请求中
单向认证:客户端无证书,只需确认server的身份
双向认证:两端都有证书,不仅client要认证server身份,server也要认证client身份
身份认证的握手过程采用证书的形式:
- 有CA颁发的证书,也有自签名的证书(使用OpenSSL或keytool生成);
- 证书中主要包含发送端的公钥,证书合法取出公钥,公钥可用于对“对称加密的密钥”进行加密。
两端配置证书:
1、如果是单向认证(仅认证服务端身份),使用keytool生成服务端的.jks文件和.cer证书,并在服务端配置好.jks文件的路径,在客户端导入该.cer证书;
2、如果需要双向证书认证,两端都要生成各自的.jks和.cer,然后服务端配置好两端的.jks文件路径,客户端配置好自己的.jks文件(但android只能识别.bks,故把.jks转成.bks),以及导入服务端的.cer证书。
相关链接
也许,这样理解HTTPS更容易
Android Https相关完全解析 当OkHttp遇到Https
ssl双向认证和单向认证原理