这个问题与在客户端应用程序中针对 Web api 和证书到期使用 SSL Pinning 有关。
场景:
我拥有example.com并有一个托管api的子域,例如:api.example.com
我希望通过SSL使用 api ,因此为子域创建了 SSL 证书。
获得证书后,我有:
- 公共证书
- 中级证书
- 私钥
据我了解,我将这些证书安装在我的网络服务器上。
然后我希望我的客户端应用程序连接到 api。为了减轻中间人攻击,我希望使用 SSL Pinning,这样客户端只会与我的 api 通信,而不是有人欺骗它。
为了固定客户端应用程序,我有两个选择,固定公共证书或中间证书。
假设我实现了这个。
当api.example.com上的证书过期时会发生什么?
据我了解,客户端应用程序将不再工作。
我是否需要重新生成一整套公共/中间/私人项目?然后在应用程序中放置一个新的公共或中间证书?
问题:
在更新 api.example.com 上的证书之前,我仍然希望客户端应用程序能够正常工作。当然,可以将新证书放入客户端应用程序中,但推出之类的事情需要时间。
我该如何处理?
我读到谷歌每个月都会更新他们的证书,但不知何故设法保持公钥不变:如何在 iOS 上固定证书的公钥
如果这是可能的,那么解决方案是简单地从服务器中提取公钥并根据本地存储的公钥检查它......但谷歌是如何做到的呢?
谢谢
克里斯