Android利用HTTPS实现安全通信

HTTPS 简介

HTTPS 全称 HTTP over TLS。TLS是在传输层上层的协议,应用层的下层,作为一个安全层而存在,翻译过来一般叫做传输层安全协议。

对 HTTP 而言,安全传输层是透明不可见的,应用层仅仅当做使用普通的 Socket 一样使用 SSLSocket 。

TLS是基于 X.509 认证,他假定所有的数字证书都是由一个层次化的数字证书认证机构发出,即 CA。另外值得一提的是 TLS 是独立于 HTTP 的,任何应用层的协议都可以基于 TLS 建立安全的传输通道,如 SSH 协议。

由于对称加密比非对称加密快,https决定使用对称加密来加密数据,使用非对称加密对称加密生成的密钥,以确保安全。

 

重写默认的HostnameVerifier 和 SSLSocketFactory

使用SSLContext创建SSLSocketFactory,可信证书认证需自定义X509TrustManager,客户端证书认证需自定义X509KeyManager。

  • 设置定制的X509TrustManager

想要信任不是系统内置的CA(证书颁发机构)颁发的证书,要通过SSLSocketFactory来设定自己的X509TrustManager。

注意,自签名证书实际上是自己的CA,并且可以通过将它们包含在KeyStore(密钥库)中来信任。

也可以直接实现X509TrustManager,通常编写一个自定义的KeyStore再传递给TrustManagerFactory来实现会更好。

  • 设置定制的X509KeyManager

自定义X509KeyManager可以用来提供客户端证书及其相关的私钥来验证与服务器的连接。

X509KeyManager可使用基于KeyStore的KeyManagerFactory创建。

X509KeyManager也可以直接实现,这可以从非密钥存储源返回证书和私钥。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值