使用AFNetworking进行SSL固定 - validatesCertificateChain = true

时间:2015-07-07 02:46:49

标签: ios ssl afnetworking afnetworking-2

我尝试使用AFNetworking 2.5.4(带有Comodo证书)制作固定SSL。 我从服务器上获取证书(CER)。

openssl s_client -connect example.com:443 -showcerts

在第一个----- BEGIN CERTIFICATE -----和----- END CERTIFICATE -----之间抓取输出并将其保存到example.pem

从PEM转换为CER(DER):

openssl x509 -outform der -in example.pem -out example.cer

然后,我将example.cer添加到我的Xcode项目中,然后将其添加到' Copy Bundle Resources'构建阶段。我的SecurityPolicy是:

let securityPolicy = AFSecurityPolicy(pinningMode: AFSSLPinningMode.PublicKey)
    let certificatePath = NSBundle.mainBundle().pathForResource("example", ofType: "cer")!
    let certificateData = NSData(contentsOfFile: certificatePath)!

    securityPolicy.pinnedCertificates = [certificateData];

    securityPolicy.validatesDomainName = true
    securityPolicy.allowInvalidCertificates = false
    securityPolicy.validatesCertificateChain = false

    manager.securityPolicy = securityPolicy

使用此SSL Pininning可以工作,但我不仅要验证我更改的叶证书

securityPolicy.validatesCertificateChain = true

但是使用该配置会引发以下错误:

Domain=NSURLErrorDomain Code=-1012 "The operation couldn’t be completed. (NSURLErrorDomain error -1012.)

我已经读过如果securityPolicy.validatesCertificateChain = true我必须输入整个SSL证书链但我不知道如何生成它。

我尝试使用以下代码但不能正常工作(我得到同样的错误):

openssl s_client -connect example.com:443 </dev/null 2>/dev/null | openssl x509 -outform DER > example.cer

如何获取整个SSL证书链以添加到Xcode?

0 个答案:

没有答案