最近完成一个项目,安全级别比较高。所以涉及到https双向认证,在网上找了很多资料都没有完美的解决方案。最后参考了org.sandrob.sslexample的实现方式,结合实际情况才完成该技术难题,现在分享一下我的实现方案来弥补这方面的空白。

正文:

1.android 4.0(不包含)以下版本的实现方法:

1.1 书写认证

private SSLContext createSSLContext() {

SSLContext localSSLContext = null;

try {

// 创建一个证书库,并将证书导入证书库

KeyStore keyStore = KeyStore.getInstance("PKCS12", "BC");

keyStore.load(

mContext.getResources().openRawResource(R.raw.client),//client 是*.pfx文件

CERTFILE_PASSWORD.toCharArray());//CERTFILE_PASSWORD 为你的证书的密码

KeyManagerFactory localKeyManagerFactory = KeyManagerFactory

.getInstance(KeyManagerFactory.getDefaultAlgorithm());

localKeyManagerFactory.init(keyStore,

CERTFILE_PASSWORD.toCharArray());

KeyManager[] arrayOfKeyManager = localKeyManagerFactory

.getKeyManagers();

localSSLContext = SSLContext.getInstance("TLS");

localSSLContext.init(arrayOfKeyManager, trustAllCerts,

new SecureRandom());

} catch (Exception ex) {

ex.printStackTrace();

}

return localSSLContext;

}

public boolean setWebViewSSLCert() {

boolean issuc = false;// true 代表验证和设置成功

if (Build.VERSION.SDK_INT >= 14){

return issuc;

}

try {

Field[] arrayOfField = Class.forName(

"android.net.http.HttpsConnection").getDeclaredFields();

for (Field localField : arrayOfField) {

if (localField.getName().equals("mSslSocketFactory")) {//采用反射的方式修改mSslSocketFactory变量

localField.setAccessible(true);

localField.set(null,createSSLContext().getSocketFactory());

issuc = true;

break;

}

}

} catch (Exception ex) {

ex.printStackTrace();

}

return issuc;

}

1.2 调用

在webview初始化或者application 等,需要用https认证的地方调用 setWebViewSSLCert方法即可。

下接:http://blog.sina.com.cn/s/blog_618199e60101tgvk.html

转自:http://blog.csdn.net/mingli198611/article/details/9233705

参考:http://www.apkbus.com/forum.php?mod=viewthread&tid=142055

android webview单向认证,android 让webview支持自签名证书https 双向认证(SSL)相关推荐

  1. 巧用 Nginx 快速实现 HTTPS 双向认证

    1.原理 双向认证,顾名思义,客户端和服务器端都需要验证对方的身份,在建立 HTTPS 连接的过程中,握手的流程比单向认证多了几步.单向认证的过程,客户端从服务器端下载服务器端公钥证书进行验证,然后建 ...

  2. HTTPS双向认证和如何生成证书

    HTTPS双向认证和如何生成证书 HTTPS双向认证和如何生成证书 1.原理 1.1 单向认证流程 1.2 双向认证流程 2.证书生成 2.1 生成自签名根证书 2.2 生成自签名服务器端证书 2.3 ...

  3. (转载)Android 让WebView完美支持https双向认证(SSL)

    (转载)https://blog.csdn.net/kpioneer123/article/details/51491739 这是@happyzhang0502   关于webview https的建 ...

  4. android https 双向认证

    一 .首先是  单向认证的原理,首先说下,下面的文章我没看出来是双向认证的原理(我觉得是单向认证的),你们自己理解 https://www.jianshu.com/p/733dc1f06acf 二.实 ...

  5. Https双向认证Android客户端配置

    Https双向认证啊  做了两遍,第一遍懵懂状态处于 好不容易做好了,换服务器,一下子懵了,使出浑身解数又找了一遍,这下终于好了  快哭啦,必须滴要记录一下,以免以后遇到继续懵,这里用retrofit ...

  6. TurboMail邮件系统支持HTTPS双向认证

    2019独角兽企业重金招聘Python工程师标准>>> HTTP单向认证已经被普遍应用,而对企业邮箱安全保密要求更加严格的企事业单位,例如国家保密局等单位,为了达到闭环的安全加密要求 ...

  7. Apache httpd设置HTTPS双向认证

    一.环境 httpd: 2.4.4  openssl:1.0.1  os:ubuntu 12.04 LTS 二.场景 我准备在httpd上配置一个HTTPS双向认证,既向客户端表明自己的身份,也只允许 ...

  8. httpd设置HTTPS双向认证

    去年用tomcat.jboss配置过HTTPS双向认证,那时候主要用的是JDK自带的keytool工具.这次是用httpd + openssl,区别比较大 在网上搜索了很多文章,发现全面介绍的不多,或 ...

  9. HTTPS双向认证(Mutual TLS authentication)

    HTTPS双向认证(Mutual TLS authentication) 双向认证,顾名思义,客户端和服务器端都需要验证对方的身份,在建立Https连接的过程中,握手的流程比单向认证多了几步.单向认证 ...

最新文章

  1. Mr Big [To be with you]
  2. 安装 m2eclipse 插件
  3. Analog使用中的一些技巧和总结
  4. codeforce训练2总结
  5. mysql判断是否建立索引_判断mysql中列是否要添加索引的标准
  6. FIR数字滤波器设计频率抽样法MATLAB仿真
  7. 图灵“亲自”给你讲人工智能
  8. 数据结构与算法之KMP算法
  9. 如何手写代码进行页面布局
  10. 高并发整体可用性:大规模集群下的分片管理策略
  11. 数字图像处理--颜色选择
  12. mysql 取第一条_MySQL索引底层(一)索引底层原理
  13. python 多进程 内存增长_python 多进程 内存 copy-on-write
  14. 零基础学习Java的学习流程与学习误区
  15. 初学Jmeter的摘抄学习总结----------基础知识篇
  16. 第十三章 确定性策略梯度(Deterministic Policy Gradient Algorithms,DPG)-强化学习理论学习与代码实现(强化学习导论第二版)
  17. 管家婆服务器备份文件夹,[任我行]管家婆软件的使用方法,管家婆辉煌提示备份报错3202...
  18. 知识图谱关系抽取 python_知识图谱关系抽取
  19. Net share 命令详解
  20. 区块链技术之P2P网络(一)

热门文章

  1. Java springMVC POI 导出 EXCEL
  2. SpringMVC 返回json
  3. 一分钟帮你提升Android studio 编译速度
  4. sed awk 笔记(二)
  5. CentOS 6.0配置pptp ××× Client和Squid透明网关
  6. oracle 分区表的建立方法
  7. ADO.NET与ORM的比较(5):MyBatis实现CRUD
  8. eclipse提示在***类中找不到main方法
  9. 快速提高你的UI设计水平的一些小技巧
  10. 什么是整型?Python整型详细介绍