2016-04-07 11 views
0

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!

+0

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/ –

+0

Bu örnek nasıl çalışıyor? https://github.com/antekarin/ssl-pinning-swift –

cevap

1

Son olarak, sorun doğru görünse bile, sorun sertifikamdaydı. Onları kurtarıcı olarak kurtararak kurtardım ve bu düzeltildi. Garip bir şekilde .cer olarak yediye kaydetmeyi denediğimde, Xcode her ikisinden de basılana kadar Xcode bunları görüntülemiş olsa bile çalışmadı ve farklı olduklarını gösterdi.

+0

Teşekkürler. Günümü kurtardın! – rmvz3