我有一个iOS应用程序,将分发给多个客户,每个客户都使用自己的网络基础架构。我想添加一些证书固定功能,但我需要以动态的方式进行,因为我无法发送带有cert / pubkey捆绑的应用程序,因为这样做需要为每个客户提供不同的构建。
我的想法是在应用启动时查询每个客户端配置的HTTPS服务器,获取证书,可能提取公钥然后固定它。
是否可以在Swift或Objective-C中执行此操作?我无法找到相关的代码示例或文档。
答案 0 :(得分:4)
在操作上,如果您在应用程序中嵌入证书或密钥,则可以更轻松地管理和从错误配置中恢复。如果您只是固定服务器第一次发送给应用程序的任何证书,则当前的证书到期或轮换时,您没有机制支持新证书。如果这仍然是您想要做的,我建议您查看HPKP规范,该规范实现了相同的机制,但适用于浏览器:https://tools.ietf.org/html/rfc7469
此外,如果应用程序服务器不在您的控制之下,那么如果服务器的证书意外更改,则固定将最终阻塞应用程序的变化很大。构建应用程序的团队是否会被告知应用程序/客户服务器上的基础架构/证书更改,以便他们能够及时发布更新?如果没有,你就不应该这样做。
答案 1 :(得分:0)
有可能。我还没有尝试过,但是我认为您正在寻找类似的东西。