我正在尝试使用 AFNetworking 3 库实现 SSL 固定。
我浏览了 AFSecurityPolicy 的文档,但没有使用AFSSLPinningModePublicKey获得有关 ssl pinning 的任何信息。这是我正在使用的代码片段
AFHTTPSessionManager * manager = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:url]];
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey];
sessionManager.securityPolicy = securityPolicy;
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"my-certificate" ofType:@"cer"];
NSData *certData = [NSData dataWithContentsOfFile:cerPath];
sessionManager.securityPolicy.pinnedCertificates = @[certData];
输出 :
在调试模式下运行时,我可以看到从捆绑包中提取的证书,但随后
我收到错误:
错误:错误域=NSURLErrorDomain 代码=-999 “已取消”
调查 :
- validateCertificateChain : AFNetworking 版本 3+ 的参数不再存在。这是否意味着我必须固定我的证书链的所有证书?
我可能错误地创建了我的证书 (.cer)。你能告诉我如何从 url 中提取 .cer 吗?
我在我的 mac 终端中使用了以下命令
echo "Get HTTP/1.0" | openssl s_client -showcerts -connect www.xxxx.xx:443 > mycertificateinpem.pem
openssl x509 -inform PEM -in mycertificateinpem.pem -outform DER -out my-certificate.cer