动态证书固定

mgv*_*mgv 15 ssl objective-c pinning ios swift

我有一个iOS应用程序,将分发给多个客户,每个客户都使用自己的网络基础设施.我想添加一些证书固定功能,但我需要以动态方式进行,因为我无法发送带有cert/pubkey捆绑的应用程序,因为这样做需要为每个客户提供不同的构建.

我的想法是在应用启动时查询每个客户端配置的HTTPS服务器,获取证书,可能提取公钥然后固定它.

是否可以在Swift或Objective-C中执行此操作?我无法找到相关的代码示例或文档.

Nab*_*bla 4

从操作上来说,如果您将证书或密钥嵌入到应用程序中,管理和从错误配置中恢复将会容易得多。如果您只是固定服务器第一次发送到应用程序的任何证书,则在当前证书过期或轮换后,您将无法支持新证书。如果这仍然是您想做的,我建议您查看 HPKP 规范,它实现了相同的机制,但针对浏览器: https: //www.rfc-editor.org/rfc/rfc7469

此外,如果应用程序服务器不直接在您的控制之下,那么如果服务器的证书意外更改,则固定最终会导致应用程序变砖。构建应用程序的团队是否会获悉应用程序/客户服务器上的基础设施/证书更改,以便他们能够及时发布更新?如果没有,你不应该这样做。