【发布时间】:2016-09-14 19:56:46
【问题描述】:
我有一个 iOS 应用程序,它将分发给多个客户,每个客户都使用自己的网络基础设施。我想添加一些证书固定功能,但我需要以动态方式执行此操作,因为我无法发布捆绑了 cert/pubkey 的应用程序,因为这样做需要为每个客户进行不同的构建。
我的想法是在应用启动时查询每个客户端配置的 HTTPS 服务器,获取证书,可能提取公钥,然后将其固定。
是否可以在 Swift 或 Objective-C 中做到这一点?我一直无法找到相关的代码示例或文档。
【问题讨论】:
-
你试过 SSLPinningMode 吗? this 可能会有所帮助。如果您打算在应用商店上分发它,我怀疑它会被接受(关于下载和提取证书的部分)。
-
这是一个来自 iOS Pushing the Limits 的示例:github.com/iosptl/ios7ptl/blob/master/ch14-Security/Connection/…。看看
RNSecTrustEvaluateAsX509。它包括从连接中提取证书的代码。然后,您可以将证书写入文件,然后使用标准固定做法,例如 github.com/rnapier/RNPinnedCertValidator。 -
不相关的元垃圾,但@RobNapier 您是否计划发布新版本的推动 iOS 10 的极限?
-
@JAL 没有。我无法想象这个头衔会在当前市场继续存在。与传统出版商合作太难了,而且购买它们的人太少了。可能会与一个较小的出版商合作,但这将是另一种类型的书。感谢您的提问。
标签: ios objective-c swift ssl pinning