gpt4 book ai didi

alamofire - 在 Alamofire 中使用指纹进行 SSL 固定

转载 作者:行者123 更新时间:2023-12-01 00:41:49 29 4
gpt4 key购买 nike

有没有人看到用指纹而不是公钥来固定 Alamofire 的方法?

对不起,如果这已经得到回答,我还没有在任何地方看到它。

谢谢

最佳答案

这最终变得非常简单。下面的代码可能并不完美,我的真实代码正在做一些额外的检查,但这就是其中的大部分。

.SHA1Fingerprint 是 SecCertificate 上的扩展方法,可将其复制到 NSData 中,然后将其转换为 SHA1。我使用 RNCryptor 来做到这一点,但你可以做到。

isValidFingerprint 只是将结果与我已知的每个指纹进行比较。

这一切都卡在我的静态 Alamofire.Manager 上。

manager.delegate.sessionDidReceiveChallenge = { session, challenge in
var disposition: NSURLSessionAuthChallengeDisposition = .PerformDefaultHandling
var credential: NSURLCredential?

if challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodServerTrust {
let host = challenge.protectionSpace.host

if let serverTrust = challenge.protectionSpace.serverTrust {

let serverTrustPolicy = ServerTrustPolicy.PerformDefaultEvaluation(validateHost: true)

if serverTrustPolicy.evaluateServerTrust(serverTrust, isValidForHost: host) {
disposition = .UseCredential
credential = NSURLCredential(forTrust: serverTrust)
} else {
disposition = .CancelAuthenticationChallenge
return (disposition, credential)
}

for index in 0..<SecTrustGetCertificateCount(serverTrust) {
if let certificate = SecTrustGetCertificateAtIndex(serverTrust, index) {
if let fingerPrint = certificate.SHA1Fingerprint {
if isValidFingerprint(fingerPrint) {
return (disposition, credential)
}
}
}
}
}
}
disposition = .CancelAuthenticationChallenge
return (disposition, credential)
}

关于alamofire - 在 Alamofire 中使用指纹进行 SSL 固定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37128831/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com