SSL sertifikamın genel anahtarını xcode projemde .crt olarak kaydettim ve Web siteme https üzerinden bağlanmak için Alamofire'i kullanmaya çalışıyorum. Aşağıdaki gösterisi olarak nil döndürür SecCertificateCreateWithData kullanıyor başarısız tutar kısmı:ios: Genel Anahtar SSL Pinning İade Red
func configureAlamoFireSSLPinningWithCertificateData() {
let cert = "nameOfCert"
let pathToCert = NSBundle.mainBundle().pathForResource(cert, ofType: "crt")
let certificateData:NSData = NSData(contentsOfFile: pathToCert!)!
let localCertificate = SecCertificateCreateWithData(nil, certificateData)! //RETURNS NIL
self.serverTrustPolicy = ServerTrustPolicy.PinCertificates(
certificates: [localCertificate],
// Choose to validate the complete certificate chain, not only the certificate itself
validateCertificateChain: true,
// Check that the certificate mathches the host who provided it
validateHost: true
)
self.serverTrustPolicies = [
"nameOfTrustedServer": self.serverTrustPolicy!
]
self.afManager = Manager(
configuration: NSURLSessionConfiguration.defaultSessionConfiguration(),
serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies)
)
}
ben projede sertifikası baktık ve her şey güzel gibi gözüküyor, ve ben de certificateData yazdırmak ve doğru olarak elde edebilirsiniz biçimlendirilmiş sonuç.
Sorun yalnızca genel anahtarın sertifikanın tamamı değil kaydedildi mi? Bariz güvenlik nedenleriyle bunu yapmaktan kaçınmak isterim, ancak Sec Sertifikasını oluşturmaya çalışırken neden sıfırlayacağını anlayamıyorum.
Şimdiden teşekkürler!
Biçim, iOS'un beklediğinden farklı olduğu için genel anahtarı içe aktaramazsınız. Buradan okuyun: http://blog.flirble.org/2011/01/05/rsa-public-key-openssl-ios/ –
Bu örnek nasıl çalışıyor? https://github.com/antekarin/ssl-pinning-swift –