我尝试使用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? p>