SSL証明書の公開鍵をxcodeプロジェクトに.crtとして保存しました.Alamofireを使用してhttpsを通じて自分のWebサイトに接続しようとしています。下記のショーとしてnilを返すSecCertificateCreateWithDataを使用している失敗し続ける一部、:ios:公開鍵SSLピンニングは返さない
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)
)
}
私は、プロジェクト内の証明書を見てきたし、すべてがうまくなるようだ、と私はまたcertificateDataを印刷し、正しく得ることができますフォーマットされた結果。
証明書全体ではなく、公開鍵だけが保存されているという問題はありますか?明らかなセキュリティ上の理由からこれを避けたいのですが、なぜSec証明書を作成しようとするとnilを返すのか分かりません。
ありがとうございます!
公開鍵をインポートすることはできません。その形式は、iOSが期待するものとは異なるためです。ここをクリックしてください:http://blog.flirble.org/2011/01/05/rsa-public-key-openssl-ios/ –
この例はどのように動作しますか? https://github.com/antekarin/ssl-pinning-swift –