Hat jemand einen Weg gesehen, um mit Alamofire mit dem Fingerabdruck anstelle des öffentlichen Schlüssels festzunageln?SSL Pinning mit Fingerabdruck in Alamofire
Tut mir leid, wenn dies beantwortet wurde, habe ich es nirgends gesehen.
Dank
Hat jemand einen Weg gesehen, um mit Alamofire mit dem Fingerabdruck anstelle des öffentlichen Schlüssels festzunageln?SSL Pinning mit Fingerabdruck in Alamofire
Tut mir leid, wenn dies beantwortet wurde, habe ich es nirgends gesehen.
Dank
Diese endete ziemlich geradlinig zu sein. Der unten stehende Code ist möglicherweise nicht perfekt, mein echter Code führt einige zusätzliche Prüfungen durch, aber das ist das meiste davon.
Der .SHA1Fingerprint ist eine Erweiterungsmethode auf SecCertificate, die es in NSData kopiert und dann in einen SHA1 konvertiert. Ich benutze RNCryptor, um das zu tun, aber Sie können es aber tun.
Der isValidFingerprint vergleicht nur das Ergebnis mit jedem meiner bekannten Fingerabdrücke.
Das hängt alles von meinem statischen 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)
}
Darf ich fragen, warum Sie versuchen, anstelle des öffentlichen Schlüssels oder das Zertifikat des Fingerabdrucks an Pin?
Meiner Erfahrung nach besteht der Schlüsselpunkt des Fixierens darin, etwas in Ihr Programm zu schreiben.
FYI: https://www.owasp.org/index.php/Certificate_and_Public_Key_Pinning
Edit: Ich hatte andere Worte, aber gerade den Link gelesen, den Sie gesendet haben. Unter dem Hashing-Abschnitt spricht dieser Artikel tatsächlich über die Vorteile des Fixierens mit dem Fingerabdruck anstelle des öffentlichen Schlüssels. Ich schätze die Hilfe und den Link, es war ein guter Artikel, dem ich noch nicht begegnet bin. – Bob
@Bob Oh, ich verstehe. Danke für das Teilen :) – NINJAJA