Https跟Http的区别
Https 的双向认证:
Http是超文本传输协议,所有数据都是明文传输,不安全。
1.无加密,无身份验证。
Https 的双向加密:
客户端验证服务器证书,
服务器验证客户端证书。双方都需要数字证书。
证书签名,一般实际上是CA的私钥签名。
认证流程:
1.客户端发起链接请求,服务端收到后,会返回一个带公钥的CA证书,客户端收到证书后,握手开始
2.客户端拿证书后会校验,认证成功后,发布客户端证书给服务端。
3.服务端拿到证书后,也会校验合法性。
4.客户端生成随机数,然后用服务端的公钥加密后,发送给服务端。
5.服务端收到随机数后,用私钥解密得到随机数
6.两边拿到随机数后,用对称加密算法,完成数据加密通讯。
银行类app中,双向认证确保只有安装了银行官方App(包含预留证书)的设备,才能访问api。
对称机密完成后,相当于你跟银行协商一个保险箱型号,拿到保险箱跟2套钥匙,
你的钥匙,只有你能打开 银行发来的箱子。
银行的专用钥匙,只有银行能打开你发过去的箱子。
// 双向认证:配置客户端证书
val clientCert = getClientCertificate() // 从资源或文件加载
val privateKey = getPrivateKey()
val sslSocketFactory = createSSLContext(clientCert, privateKey)
.socketFactory
val client = OkHttpClient.Builder()
.sslSocketFactory(sslSocketFactory, trustManager)
.build()
浙公网安备 33010602011771号