app开发 加强openssl证书校验

简介:

更新

1.那么,服务器如何识别客户端的身份?我们如何保证数据传输过程中的安全性?要靠两个东西:使用AppKey做身份识别,使用AppSecret校验数据,最简单有效的办法还是打到.so库中。

2.a和b生成两对公私钥 https://s4.51cto.com/wyfs02/M02/9A/70/wKiom1lV2tOgjaUbAAfY9aWxmNw467.jpg

3.交换公私钥的方法 https://s3.51cto.com/wyfs02/M00/9B/B5/wKioL1lmGSXiAnzRAAFhCQcaUkg121.png-wh_500x0-wm_3-wmp_4-s_2354146804.png

4.中间人攻击

https://ifunbox.top/wp-content/uploads/2017/08/8f8f6a3ae7dc26a66a0d744301fc0e16.png



微信开发


1
2
3
4
5
6
7
8
app appkey和appsecret
oauth2.0,在拥有appkey和appsecret
去读oauth2 的协议文档,读实现源码,自己实现服务端和客户端,折腾一遍就懂了
 
kubernetes API Server 权限管理实践
 
 
证书验证,一对rsa,然后服务器上方




客户端与服务器通信中的安全使者——AppSecret

关于Https安全性问题、双向验证防止中间人攻击问题

http://blog.csdn.net/woddle/article/details/71175140


Android安全开发之安全使用HTTPS

http://www.cnblogs.com/alisecurity/p/5939336.html


1
2
3
4
5
6
7
8
9
10
11
如何加强证书校验
   通过上文第一和第二部分的说明,相信大家已经对https有个大概的了解了,那么问题来了,怎样才能防止这些“中间人攻击”呢?
     app证书校验已经是一个老生常谈的问题了,但是市场上还是有很多的app未做好证书校验,有些只做了部分校验,例如检查证书域名是否匹配证书是否过期,更多数的是根本就不做校验,于是就造成了中间人攻击。做证书校验需要做完全,只做一部分都会导致中间人攻击,对于安全要求并不是特别高的app可使用如下校验方式:
查看证书是否过期
服务器证书上的域名是否和服务器的实际域名相匹配
校验证书链
     可参考http: / / drops.wooyun.org / tips / 3296 ,此类校验方式虽然在导入CA公钥证书到客户端之后会造成中间人攻击,但是攻击门槛已相对较高,所以对于安全要求不是特别高的app可采用此方法进行防御。对于安全有较高要求一些app(例如金融)上述方法或许还未达到要求,那么此时可以使用如下更安全的校验方式,将服务端证书打包放到app里,再建立https链接时使用本地证书和网络下发证书进行一致性校验。
     此类校验即便导入CA公钥证书也无法进行中间人攻击,但是相应的维护成本会相对升高,例如服务器证书过期,证书更换时如果app不升级就无法使用,那么可以改一下,生成一对RSA的公私钥,公钥可硬编码在app,私钥放服务器。 https握手前可通过服务器下发证书信息,例如公钥、办法机构、签名等,该下发的信息使用服务器里的私钥进行签名; 通过app里预置的公钥验签得到证书信息并存在内容中供后续使用; 发起https连接获取服务器的证书,通过对比两个证书信息是否一致进行证书校验。
     这样即可避免强升的问题,但是问题又来了,这样效率是不是低太多了?答案是肯定的,所以对于安全要求一般的应用使用第一种方法即可,对于一些安全要求较高的例如金融企业可选择第二种方法。
     说了挺多,但是该来的问题还是会来啊!现在的app一般采用混合开发,会使用很多webveiw直接加载html5页面,上面的方法只解决了java层证书校验的问题,并没有涉及到webview里面的证书校验,对于这种情况怎么办呢?既然问题来了那么就一起说说解决方案,对于webview加载html5进行证书校验的方法如下:
     webview创建实例加载网页时通过onPageStart方法返回url地址; 将返回的地址转发到java层使用上述的证书校验代码进行进行校验; 如果证书校验出错则使用stoploading()方法停止网页加载,证书校验通过则正常加载。


2种方法

1.将服务端证书打包放到app里,再建立https链接时使用本地证书和网络下发证书进行一致性校验。

或者

2.生成一对RSA的公私钥,公钥可硬编码在app,私钥放服务器


3.对于webview加载html5进行证书校验的方法如下:

    webview创建实例加载网页时通过onPageStart方法返回url地址; 将返回的地址转发到java层使用上述的证书校验代码进行进行校验; 如果证书校验出错则使用stoploading()方法停止网页加载,证书校验通过则正常加载



完整参考

http://wzlinux.blog.51cto.com/8021085/1908858


1.证书未校验

2.部分校验

3.证书链校验

4.手机客户端Https数据包抓取

5.中间人攻击原理

wKioL1jQ5A7hSGXZAAGRJCZQXVg490.jpg

通过读Mitmproxy的源码发现mitmproxy生成伪造证书的函数如下:

wKioL1jQ5JbBhWVLAAQOciW5Ih8154.jpg



本文转自 liqius 51CTO博客,原文链接:http://blog.51cto.com/szgb17/1947065,如需转载请自行联系原作者

相关文章
|
2月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
615 7
|
2月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
714 1
|
1月前
|
数据安全/隐私保护
APP备案使用证书查看公钥和md5
【10月更文挑战第19天】首先有了一个证书,文件后缀是keystore
168 12
APP备案使用证书查看公钥和md5
|
1月前
|
小程序 数据挖掘 UED
开发1个上门家政小程序APP系统,都有哪些功能?
在快节奏的现代生活中,家政服务已成为许多家庭的必需品。针对传统家政服务存在的问题,如服务质量不稳定、价格不透明等,我们历时两年开发了一套全新的上门家政系统。该系统通过完善信用体系、提供奖励机制、优化复购体验、多渠道推广和多样化盈利模式,解决了私单、复购、推广和盈利四大痛点,全面提升了服务质量和用户体验,旨在成为家政行业的领导者。
|
2月前
|
JavaScript 前端开发 小程序
uniapp一个人开发APP关键步骤和考虑因素
uniapp一个人开发APP关键步骤和考虑因素
137 1
uniapp一个人开发APP关键步骤和考虑因素
|
2月前
|
JavaScript 前端开发 UED
Vue与uni-app开发中通过@font-face巧妙引入自定义字体
Vue与uni-app开发中通过@font-face巧妙引入自定义字体
102 9
|
2月前
|
缓存 小程序 索引
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
224 1
|
1月前
|
机器人
布谷直播App系统源码开发之后台管理功能详解
直播系统开发搭建管理后台功能详解!
|
2月前
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
752 0
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
3月前
|
移动开发 Android开发 数据安全/隐私保护
移动应用与系统的技术演进:从开发到操作系统的全景解析随着智能手机和平板电脑的普及,移动应用(App)已成为人们日常生活中不可或缺的一部分。无论是社交、娱乐、购物还是办公,移动应用都扮演着重要的角色。而支撑这些应用运行的,正是功能强大且复杂的移动操作系统。本文将深入探讨移动应用的开发过程及其背后的操作系统机制,揭示这一领域的技术演进。
本文旨在提供关于移动应用与系统技术的全面概述,涵盖移动应用的开发生命周期、主要移动操作系统的特点以及它们之间的竞争关系。我们将探讨如何高效地开发移动应用,并分析iOS和Android两大主流操作系统的技术优势与局限。同时,本文还将讨论跨平台解决方案的兴起及其对移动开发领域的影响。通过这篇技术性文章,读者将获得对移动应用开发及操作系统深层理解的钥匙。

热门文章

最新文章