android webview单向认证,android 让webview支持自签名证书https 双向认证(SSL)
最近完成一个项目,安全级别比较高。所以涉及到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)相关推荐
- 巧用 Nginx 快速实现 HTTPS 双向认证
1.原理 双向认证,顾名思义,客户端和服务器端都需要验证对方的身份,在建立 HTTPS 连接的过程中,握手的流程比单向认证多了几步.单向认证的过程,客户端从服务器端下载服务器端公钥证书进行验证,然后建 ...
- HTTPS双向认证和如何生成证书
HTTPS双向认证和如何生成证书 HTTPS双向认证和如何生成证书 1.原理 1.1 单向认证流程 1.2 双向认证流程 2.证书生成 2.1 生成自签名根证书 2.2 生成自签名服务器端证书 2.3 ...
- (转载)Android 让WebView完美支持https双向认证(SSL)
(转载)https://blog.csdn.net/kpioneer123/article/details/51491739 这是@happyzhang0502 关于webview https的建 ...
- android https 双向认证
一 .首先是 单向认证的原理,首先说下,下面的文章我没看出来是双向认证的原理(我觉得是单向认证的),你们自己理解 https://www.jianshu.com/p/733dc1f06acf 二.实 ...
- Https双向认证Android客户端配置
Https双向认证啊 做了两遍,第一遍懵懂状态处于 好不容易做好了,换服务器,一下子懵了,使出浑身解数又找了一遍,这下终于好了 快哭啦,必须滴要记录一下,以免以后遇到继续懵,这里用retrofit ...
- TurboMail邮件系统支持HTTPS双向认证
2019独角兽企业重金招聘Python工程师标准>>> HTTP单向认证已经被普遍应用,而对企业邮箱安全保密要求更加严格的企事业单位,例如国家保密局等单位,为了达到闭环的安全加密要求 ...
- Apache httpd设置HTTPS双向认证
一.环境 httpd: 2.4.4 openssl:1.0.1 os:ubuntu 12.04 LTS 二.场景 我准备在httpd上配置一个HTTPS双向认证,既向客户端表明自己的身份,也只允许 ...
- httpd设置HTTPS双向认证
去年用tomcat.jboss配置过HTTPS双向认证,那时候主要用的是JDK自带的keytool工具.这次是用httpd + openssl,区别比较大 在网上搜索了很多文章,发现全面介绍的不多,或 ...
- HTTPS双向认证(Mutual TLS authentication)
HTTPS双向认证(Mutual TLS authentication) 双向认证,顾名思义,客户端和服务器端都需要验证对方的身份,在建立Https连接的过程中,握手的流程比单向认证多了几步.单向认证 ...
最新文章
- Mr Big [To be with you]
- 安装 m2eclipse 插件
- Analog使用中的一些技巧和总结
- codeforce训练2总结
- mysql判断是否建立索引_判断mysql中列是否要添加索引的标准
- FIR数字滤波器设计频率抽样法MATLAB仿真
- 图灵“亲自”给你讲人工智能
- 数据结构与算法之KMP算法
- 如何手写代码进行页面布局
- 高并发整体可用性:大规模集群下的分片管理策略
- 数字图像处理--颜色选择
- mysql 取第一条_MySQL索引底层(一)索引底层原理
- python 多进程 内存增长_python 多进程 内存 copy-on-write
- 零基础学习Java的学习流程与学习误区
- 初学Jmeter的摘抄学习总结----------基础知识篇
- 第十三章 确定性策略梯度(Deterministic Policy Gradient Algorithms,DPG)-强化学习理论学习与代码实现(强化学习导论第二版)
- 管家婆服务器备份文件夹,[任我行]管家婆软件的使用方法,管家婆辉煌提示备份报错3202...
- 知识图谱关系抽取 python_知识图谱关系抽取
- Net share 命令详解
- 区块链技术之P2P网络(一)