动态证书固定

时间:2016-09-14 19:56:46

标签: ios objective-c swift ssl pinning

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

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

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

2 个答案:

答案 0 :(得分:4)

在操作上,如果您在应用程序中嵌入证书或密钥,则可以更轻松地管理和从错误配置中恢复。如果您只是固定服务器第一次发送给应用程序的任何证书,则当前的证书到期或轮换时,您没有机制支持新证书。如果这仍然是您想要做的,我建议您查看HPKP规范,该规范实现了相同的机制,但适用于浏览器:https://tools.ietf.org/html/rfc7469

此外,如果应用程序服务器不在您的控制之下,那么如果服务器的证书意外更改,则固定将最终阻塞应用程序的变化很大。构建应用程序的团队是否会被告知应用程序/客户服务器上的基础架构/证书更改,以便他们能够及时发布更新?如果没有,你就不应该这样做。

答案 1 :(得分:0)

有可能。我还没有尝试过,但是我认为您正在寻找类似的东西。

https://github.com/wultra/ssl-pinning-ios