004_为什么不推荐APP使用SSL-PINNING

背景

之前工作的经历,前面技术团队的APP使用了SSL-PINNING,服务器SSL证书到期前,测试环境更换证书,在更换配置OK后,发现APP停止服务了。所有的请求全部都失败。

后来查到是APP使用了SSL-PINNING。

也就是SSL-PINNING证书到期后会导致APP拒绝服务。

改进

1.

其实,我们除了内置服务器自己的证书,也可以内置厂商中间证书。比如

像这份GeoTrust RSA CA 2018中间证书是2027年到期。一般的APP是不会10年了还可以不改版继续使用的。但假设发生一例10年不更新的用户的案例,也会发生APP停止服务。

2.

根据如何正確設定 AFNetworking 的安全連線 « Nelson 寫些 iOS 開發的東東 提供的思路,可以将证书的publicKey部分提取到客户端硬编码,每次建立TLS连接时候,匹配公钥。

服务器在更换续费证书时不要更换私钥就行了。

* 推荐需要实现防用户自己抓包的APP采取本方案。

更稳妥的做法

走默认的操作系统CA验证,但不要APP自己内置。因为APP没有证书更新、撤销机制,内置后无法对这份清单进行维护。

原文地址:https://www.cnblogs.com/itcomputer/p/9712095.html