AlamoFire:公钥固定不起作用
Posted
技术标签:
【中文标题】AlamoFire:公钥固定不起作用【英文标题】:AlamoFire: public key pinning not working 【发布时间】:2017-01-10 00:12:15 【问题描述】:我正在使用共享实例创建会话管理器,如下所示:
class Session
static let sharedInstance = Session()
private var manager : SessionManager?
func ApiManager()->SessionManager
if let m = self.manager
return m
else
let serverTrustPolicies: [String: ServerTrustPolicy] = [
"https:api-cat.example.com": .pinPublicKeys(
publicKeys:savePublicKeys(),
validateCertificateChain:true,
validateHost:true
)]
self.manager = SessionManager(
serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies))
return self.manager!
savePublicKeys
返回[SecKey]
。
即使在使用空公钥数组设置新的 ServerTrustPolicy 后,我仍然能够成功调用并获取数据。 如果我在这里犯了任何错误,有什么想法吗?
【问题讨论】:
【参考方案1】:您的"https:api-cat.payeezy.com"
看起来很可疑。
删除https:
部分或添加缺少的双斜杠https://
。 ServerTrustPolicyManager
仅在其主机属性与请求的主机匹配时应用该策略,如果不匹配,则使用 Apple 的标准行为(参见 Alamofire Documentation)。
【讨论】:
这解决了我的问题。感谢 ChaosCoder。只是想添加这个,问题出在'https:'之后缺少'//'。您可以更改您的答案以反映相同的情况。以上是关于AlamoFire:公钥固定不起作用的主要内容,如果未能解决你的问题,请参考以下文章