美文网首页
App SSL证书校验

App SSL证书校验

作者: 学开船不会开船 | 来源:发表于2016-10-25 00:24 被阅读702次

使用HTTPS已经是个大的趋势了,未来肯定也是全站HTTPS。Apple也规定所有开发者在2017年1月1日前,要开启ATS功能(App Transport Security),它会强制App在连接Web服务时经过HTTPS链接而不是 HTTP,以保护用户数据在传输过程中的安全。

HTTPS能有效的防止中间人攻击,前提是App做好证书校验。但是很多APP用上了HTTPS,但并未做做证书校验,这样其实是没什么意义的。

如果网络层使用AFN,那么直接把证书放入App中就好了,AFN会读取App中的所有证书进行校验。HTTPS效率上肯定不如HTTP,但是安全性是不可比的,如果用上HTTPS,都建议校验完整的证书链。

AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];

AFN中一句代码即可。

这样有很高的安全性,但是维护成本却很高了很多。因为证书是有有效期的,如果服务器证书过期,更换新证书,App不升级那么就不能继续使用了,这并不是一个好的用户体验。
有没有什么一劳永逸的方法呢?

比如像浏览器那样,拿到服务器的证书,然后去CA进行校验。方法听上去很棒,但是Apple并没有这样的API。官方文档中只有这样一句话。

"Do not implicitly trust self-signed certificates as anchors (kSecTrustOptionImplicitAnchors).Instead, add your own (self-signed) CA certificate to the list of trusted anchors."

也就是说Apple希望你把证书打包放进App中,那就只能在想其他方法了。

从服务器把证书载下来,先生成一对RSA的公私钥,公钥硬编码在App中,私钥放在服务器。HTTPS握手前通过服务器下发证书信息(公钥,签名,机构等),下发的信息服务器使用私钥进行签名,通过App中的公钥验签存在内容中后,然后发起正常的HTTPS请求,对比两个证书信息是否一致进行证书校验。但是这样做效率低太多,而且很复杂。

相关文章

  • App SSL证书校验

    使用HTTPS已经是个大的趋势了,未来肯定也是全站HTTPS。Apple也规定所有开发者在2017年1月1日前,要...

  • android webview ssl校验

    防止webview捉包,添加ssl证书校验。网上有很多的是在onReceivedSslError校验证书,其实这个...

  • Charles规则配置

    Charles规则配置 背景 开发的App中一部分请求开启了本地证书校验,使Charles默认的ssl证书无效。从...

  • SSL证书校验

    今天在检查安卓端一个https图片不能显示的问题,打印log,发现证书验证失败,拿到浏览器发现图片可以访问,iOS...

  • 安卓APP抓包教程(三)——使用frida破解flutter A

    本章接上一章,为了解决APP对SSL证书的内部校验,我们可以使用frida对app内存进行hook,修改内存的数据...

  • SSL证书生成过程

    SSL证书结构 结构图 SSL证书包括两部分,证书信息和签名信息,签名信息在证书合法性形校验使用。 根证书生成 根...

  • SSL证书校验失败……

    昨天一个晚上,我的简书页面都显示“SSL证书校验失败……” 快到晚上十点半左右,我放弃了昨天的文字记录,洗洗上床睡...

  • 一天一道面试题—— HTTPS

    HTTPS = HTTP + SSL + 完整性校验 证书验证 CA生成证书的指纹 将持有者的公钥、用途、颁发者、...

  • 个人用户选择哪种免费SSL证书 DV证书和泛域名

    SSL证书又称数字证书.SSL证书将为您的网站、移动 App、Web API 等应用提供身份验证和数据加密传输等整...

  • retrofit 添加SSL证书校验

    使用https时添加证书防止捉包 读取ssl证书 添加到retrofit中方

网友评论

      本文标题:App SSL证书校验

      本文链接:https://www.haomeiwen.com/subject/ozxruttx.html