5.代码实现
本部分重要基于第四部分提出的Android应用中应用HTTPS碰到的一些常见的问题,给出一个比较体系的解决筹划。
(6) 普适性(根本上所有的客户端和办事器都支撑这些协定);
(1) 整体构造
不管是应用自签名证书,照样采取客户端身份验证,核心都是创建一个本身的KeyStore,然后应用这个KeyStore创建一个自定义的SSLContext。整体类图如下:
【编辑推荐】
- Android 自定义 BaseAdapter 最佳实践
- 一觉悟来Kotlin成了Android的新宠儿【附代码】
- 关于Android模块化我有一些话不知当讲欠妥讲
- Android开辟者自述:为什愦我要改用Kotlin?
- 用Kotlin优雅地开辟Android应用
应用数据协定携带着应用消息,只以TLS的角度推敲的话,这些就是数据缓冲区。记录层应用当前连接安然参数对这些消息进行打包、碎片整顿和加密。如下图所示,可以看到传输的数据已经是经由加密之后的了。
类图中的MySSLContext可以应用在HTTPUrlConnection的方法与办事端连接的过程中:
核心是经由过程httpsURLConnection.setSSLSocketFactory应用自定义的校验逻辑。整体设计上应用策略模式决定采取哪种验证机制:
- makeContextWithCilentAndServer 单向验证方法(自定义信赖的证书集合)
- makeContextWithServer 双向验证方法(自定义信赖的证书集合,并应用客户端证书)
- makeContextToTrustAll (信赖所有的CA证书,不安然,仅供测试阶段应用)
1.ClientHello
(2) 单向验证并自定义信赖的证书集合
在App中,把办事端证书放到资本文件下(平日是asset目次下,因为证书对于每一个用户来说都是雷同的,并且也不会经常产生改变),然则也可以放在设备的外部存储上。
- public class SSLContextWithServer implements GetSSLSocket {
- // 在这里进行办事器正式的名称的设备
- private String[] serverCertificateNames = {"serverCertificateNames1" ,"serverCertificateNames2"};
- @Override
- public SSLContext getSSLSocket() {
- String[] caCertString = new String[serverCertificateNames.length];
- for(int i = 0 ; i < serverCertificateNames.length ; i++) {
- try {
- caCertString[i] = readCaCert(serverCertificateNames[i]);
- } catch(Exception e) {
- }
- }
- SSLContext mSSLContext = null;
- try {
- mSSLContext = SSLContextFactory.getInstance().makeContextWithServer(caCertString);
- } catch(Exception e) {
- }
推荐阅读
涉及体系范围之广泛尚属初次:本次整合共享涵盖了大年夜中心到处所的各个部分,纳入整合共享范畴的┞服务信息体系包含由当局投资扶植、当局与社会企业结合扶植、当局向社会购大班事或须要当局资金运行保护的,用于支>>>详细阅读
本文标题:HTTPS 原理浅析及其在 Android 中的使用
地址:http://www.17bianji.com/lsqh/35390.html
1/2 1