关于 APP 预埋检查策略优化

本文涉及的产品
Digicert DV 证书 单域名,20个 3个月
.cn 域名,1个 12个月
简介: APP 预埋检查策略优化的建议

背景

在 APP 海量时代,很多APP 都进行过证书预埋检查功能设置。当预埋的APP 更新服务器端证书时,发现部分客户出现证书更新之后,APP 无法正常通信等情况出现。经过技术排查发现由于APP 中进行了证书预埋检查,并预埋了服务器证书(公钥)文件等信息,导致证书更新后新证书无法通过 APP 预埋检查验证,提示网络中止连接。

如果你的 APP 做了以下的预埋,都会存在隐患:

1.在APP 中预埋了服务器证书(公钥)做证书检查

2.在APP 中预埋了服务器证书的指纹值做证书检查

3.在APP 中预埋了中级证书文件或者根证书文件做证书检查

4.在APP 中预埋了中级证书指纹值或者根证书指纹值做证书检查

证书预埋检查隐患

1.服务器证书(公钥)存在有效期限制,目前最高 3 年有效期,未来 CA/B 组织会逐渐缩短证书最长生命周期。如果将服务器证书进行 APP 预埋证书检查,当服务器证书因为生命周期终止导致证书更新时,经过预埋的 APP 会出现无法正常通信等情况。
2.根证书和中级证书也会存在失效、策略变更或者过期,如果将根证书或者中级证书进行

APP 预埋,一旦根证书和中级证书发生了更新,经过预埋的 APP 会出现无法正常通信等情况。虽然在大多数情况下,检查机制能够防御中间人攻击。因为当黑客窃听通信时,他提供
的拦截证书多为自签名证书,TrustManager 不能识别这个证书,于是拒绝 HTTPS 连接。但是,一旦预埋的这张证书由于证书生命周期的终止,触发服务器端进行证书更新替换机制时, APP 应用端将无法验证请求证书的有效性,从而导致业务中断。

建议

为了 APP 业务灵活性和可续性,天威建议使用系统默认的系统信任库来做证书认证, 并且开启域名强验证来增强 APP 安全性。

对服务器证书域名进行强校验(仅供开发人员参考):
图片1.png

实现 HostnameVerifier 的 verify()方法:
图片2.png

由于 SSL 证书本身存在生命周期基本属性,加上中级 CA 和根证书存在可变更的因素, 一旦应用中添加了证书检查功能之后,在后期业务发展过程中势必会带来不可预估的影响。
建议在安全策略允许的情况下取消证书检查功能,改为使用系统自带信任库方式验证,并配合使用其他比如域名强验证,使用 Proguard 混淆代码,使用编译库等手段来确保APP 安全。

TLS/SSL 证书链

保证通信安全至少要使用 HTTPS 协议,也就是说使用安全传输层协议(TLS)或是它的前身安全套接层协议(SSL)加密的通信。

SSL 证书链结构关系
公网可信 SSL 证书(至少)包括三个证书:

1、根证书:这是由证书认证机构(CA)颁发的,也就是一个可以确保整个通信时安全的值得信任的组织。

2、中级证书:一个根证书下有多个中级证书。它们建立服务器证书和根证书的信任桥梁,是连接服务器证书和根证书的证书链,由根证书签名的证书。
3、服务器证书:服务器证书是绑定最终请求域名的证书,为最终的加解密证书文件。

证书检查
1、Certificate Pinning
其实 Certificate Pinning 是 OkHttp 实现的一个类似于 HPKP 的技术,目的是为了使客户端可以有主动的信任CA 的权利,它的工作原理就是使用预先设置的证书指纹和服务器传过来的证书链中的证书指纹进行匹配,只要有任何一对指纹匹配成功,则认为是一次合法的连接,否则禁止本次链接。
2、预埋证书
把数字证书以文件或者字符串的形式写在本地,在 SSL 握手的时候用本地预埋的证书和服务器传过来的证书进行匹配,如果匹配不成功则禁止本次通信。
Certificate Pinning 和预埋证书做法的比较(以 OkHttp 为例)
3、预埋证书的写法
首先定义一个类实现类实现 X509TrustManager 接口,实现对客户端证书链的校验方法和服务端证书链的校验方法,不写的话表示不做任何校验,默认信任所有证书链中的证书。
图片3.png

由于证书存在生命周期和可变性,证书更新和证书链变更都会导致这种预埋失效,从而带来业务中断风险。

Certificate Pinning 的写法

范例代码:
图片4.png

pinner 就是证书指纹,sha256 表示的是哈希值得一种算法,pinner 也可以是 sha1/* , 具体 pinner 要根据购买证书所支持的配置,证书指纹可以在证书详细信息中点击查看。在SSL 握手的时候,会检查配置中的指纹和服务端传过来的证书证的指纹是否相匹配,只要有一个指纹匹配,则进行下一步,否则直接抛出异常,禁止本次连接。

证书在使用过程中会存在不可避免的证书续期和替换更新,每次操作都会导致证书的指纹发现不可逆的变化,一旦使用了 Certificate Pinning 方式,都会在证书更新之后带来业务中断等情况。

目录
相关文章
|
5月前
|
Linux Shell 网络安全
【Azure 应用服务】如何来检查App Service上证书的完整性以及在实例中如何查找证书是否存在呢?
【Azure 应用服务】如何来检查App Service上证书的完整性以及在实例中如何查找证书是否存在呢?
|
16天前
|
运维 小程序 前端开发
结合圈层营销策略,打造稳定可靠的圈子app系统,圈子小程序!
圈子系统是一种社交平台,用户可按兴趣、职业等创建或加入“圈子”,进行内容发布、讨论和资源共享。开发时需考虑需求分析、技术选型(如PHP、MySQL)、页面设计、功能实现(注册、登录、发布、评论等)、测试优化及运维管理。圈层营销则通过精准化、高端化的方式传递品牌信息,增强客户归属感。圈子小程序基于微信等平台,具备跨平台、便捷性和社交性,开发过程中需明确需求、选择技术框架、设计页面并确保稳定性和流畅性。
100 9
|
3天前
|
小程序 数据挖掘
圈子系统兴趣讨论群组的创建,社群运营的重要性及策略制定,同城交友app、小程序方式的创新
### 圈子系统与社群运营简介 圈子系统是社交平台中的功能模块,允许用户创建和管理兴趣小组,设置名称、规则等,吸引志同道合者加入。通过浏览不同圈子,用户可以选择感兴趣的群体参与。社群运营则通过对具有共同需求或兴趣的用户进行组织和管理,提升品牌影响力和商业价值。有效的社群运营策略包括明确定位、制定策略、持续输出有价值内容、定期举办活动、合理分配角色及数据监测优化,从而增强用户粘性和活跃度。 **圈子系统源码获取:** [链接](https://gitee.com/multi-customer-software/qz)
26 9
|
22天前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
70 3
|
14天前
|
前端开发 搜索推荐 PHP
大开眼界!uniapp秀操作,陪玩系统新功能,陪玩app源码,可实时互动随心优化!
多客游戏陪玩系统采用前端uniapp与PHP语言,实现全开源、易改造,RTC传输协议确保低延迟语音连麦,分布式部署应对高并发。功能创新包括游戏约单、多人语音聊天室、动态广场、私信聊天等,提供高端社交和个性化服务,满足各类需求,让玩家畅享游戏乐趣。
|
2月前
|
传感器 iOS开发 UED
探索iOS生态系统:从App Store优化到用户体验提升
本文旨在深入探讨iOS生态系统的多个方面,特别是如何通过App Store优化(ASO)和改进用户体验来提升应用的市场表现。不同于常规摘要仅概述文章内容的方式,我们将直接进入主题,首先介绍ASO的重要性及其对开发者的意义;接着分析当前iOS平台上用户行为的变化趋势以及这些变化如何影响应用程序的设计思路;最后提出几点实用建议帮助开发者更好地适应市场环境,增强自身竞争力。
|
2月前
|
机器学习/深度学习 监控 安全
量化合约对冲策略交易app系统开发技术规则
量化合约对冲策略交易APP系统开发技术规则涵盖系统架构设计、量化策略实现、交易管理、风险管理、用户界面设计及性能优化等方面。通过模块化设计、分布式架构、数据持久化、策略开发、算法交易、回测优化、订单管理、持仓监控、资金安全、风险控制、实时监控、安全审计、界面设计、反馈机制、多语言支持、响应速度、资源优化和兼容性等措施,确保系统的稳定、安全、高效和易用。
|
2月前
|
数据采集 网络协议 算法
移动端弱网优化专题(十四):携程APP移动网络优化实践(弱网识别篇)
本文从方案设计、代码开发到技术落地,详尽的分享了携程在移动端弱网识别方面的实践经验,如果你也有类似需求,这篇文章会是一个不错的实操指南。
80 1
|
3月前
|
移动开发 小程序 JavaScript
uni-app多端应用开发:常见跨端兼容问题及处理策略
uni-app多端应用开发:常见跨端兼容问题及处理策略
132 0
|
3月前
|
监控 安全 Apache
构建安全的URL重定向策略:确保从Web到App平滑过渡的最佳实践
【10月更文挑战第2天】URL重定向是Web开发中常见的操作,它允许服务器根据请求的URL将用户重定向到另一个URL。然而,如果重定向过程没有得到妥善处理,可能会导致安全漏洞,如开放重定向攻击。因此,确保重定向过程的安全性至关重要。
170 0

热门文章

最新文章

下一篇
开通oss服务