ios - 动态证书固定

标签 ios objective-c swift ssl pinning

我有一个将分发给多个客户的 iOS 应用程序,每个客户都使用自己的网络基础设施。我想添加一些证书固定功能,但我需要以动态方式进行,因为我无法在捆绑证书/公钥的情况下发布应用程序,因为这样做需要为每个客户构建不同的版本。

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

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

最佳答案

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

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

关于ios - 动态证书固定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39498671/

相关文章:

ios - 如何在 Swift 中使用 IAP 正确恢复购买

ios - 表中单元格的自定义组件

iPhone 应用程序崩溃(仅限 iOS4)

ios - AutoLayout:在 UIStackView/UITableViewCell 中缩放 UIImageView 时出现问题

ios - 了解一对多的核心数据删除规则

ios - 延迟 20 秒调用 multipeer 方法中的代码

ios - "CoreData: error: NULL _cd_rawData but the object is not being turned into a fault"

iphone - 在字符串中搜索某个字符串,并在原字符串中将其设为粗体

objective-c - 找不到 Cocoa 静态库的输出 .a(在 xcode 4 中)

ios - 在 didUpdateLocations 中重绘方向路径