这个问题涉及在客户端应用程序中针对Web API和证书到期使用SSL Pinning。
场景:
我拥有example.com,并拥有一个子域名,在该子域名上托管了一个api,即:api.example.com
我希望通过SSL使用API,因此为子域创建了一个SSL证书。
获得证书后,我有:
- 公共证书
- 中间证书
- 私钥
我理解我需要在我的Web服务器上安装这些证书。
然后,我希望我的客户端应用程序连接到API。为了减轻中间人式攻击,我希望使用SSL Pinning,以便客户端仅与我的API通信,而不是与某个伪造的API通信。
为了在客户端应用程序中执行“Pin”,我有两个选择,要么针对公共证书,要么针对中间证书。
假设我实现了这个方法。
那么,当api.example.com上的证书过期时会发生什么?
我理解客户端应用程序将无法正常工作。
我需要重新生成一组完整的公共/中间/私有项吗?然后将新的公共或中间证书放入应用程序中?
问题:
我仍然希望在api.example.com
上的证书更新之前,客户端应用程序能够正常工作。当然,可以在客户端应用程序中放置新证书,但是这样做需要时间。
该怎么处理?
我读过Google每月更新他们的证书,但是以某种方式成功地保持了公钥不变:How to pin the Public key of a certificate on iOS
如果这是可能的,则解决方案是简单地从服务器提取公钥,并将其与本地存储的公钥进行比较 ... 但是Google是如何做到的呢?
感谢
克里斯