解决Android WebView HTTPS证书校验问题
187 浏览量
更新于2024-09-01
收藏 402KB PDF 举报
"Android webview手动校验https证书(by 星空武哥) - 解决Android系统bug导致的webview加载https证书问题"
在Android应用程序中,WebView组件常用于加载网页内容,包括HTTPS加密的网站。然而,由于Android系统的某些bug或其他原因,可能会导致WebView无法正确验证HTTPS证书,从而影响网页的正常加载。比如,华为Mate7手机升级到Android 7.0后,部分网站可能无法打开,但在更新了WebView的补丁后问题即可得到解决。这突显了系统bug对混合开发中WebView加载HTTPS地址的影响。
当WebView尝试加载HTTPS地址并遇到证书错误时,它会触发`onReceivedSslError()`回调方法。默认情况下,系统会调用`super.onReceivedSslError()`,这会导致加载页面显示为白屏,因为错误处理机制选择了安全的取消加载。开发者有时会选择调用`handler.proceed()`来强制加载页面,但这将使HTTPS证书的验证失去作用,可能导致安全风险。
为了解决这个问题,可以采取手动校验HTTPS证书的方式来确保安全性和正确性。具体步骤如下:
1. 首先,需要获取目标网站的证书。这可以通过使用谷歌浏览器访问网站,开启开发者工具(按F12键),然后在开发者工具中找到并导出证书。
2. 导出的证书通常为PEM格式,可以使用文本编辑器查看其内容。证书信息中包含了SHA256指纹,这是用于验证证书的哈希值。
3. 使用在线工具,如`http://www.atool.org/file_hash.php`或`http://tools.jb51.net/`, 计算导出的证书文件的SHA256哈希值。将这个计算出的哈希值与服务器提供的证书哈希值进行比对。
4. 在`onReceivedSslError()`回调中,添加自定义的证书校验逻辑。如果手动校验通过,即SHA256哈希值匹配,则调用`handler.proceed()`继续加载页面;若校验失败,可以选择显示错误信息或者直接结束应用,以避免加载不受信任的网页。
通过这样的手动校验,可以在系统bug导致默认验证失败的情况下,依然保证对HTTPS证书的严谨检查,从而保护用户的网络安全,同时也解决了因系统问题导致的加载异常。需要注意的是,这种方法应该作为临时解决方案,因为长期忽视证书验证可能会引入安全隐患。在可能的情况下,应优先修复系统bug或更新WebView组件以获得更安全的行为。
点击了解资源详情
2016-10-21 上传
2014-02-20 上传
2019-07-31 上传
2017-04-25 上传
2015-11-19 上传
weixin_38737630
- 粉丝: 1
- 资源: 929
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍