Я пытаюсь добиться закрепления SSL с помощью библиотеки AFNetworking 3.
Я просмотрел документацию AFSecurityPolicy, но не получил никакой информации о закреплении ssl с помощью AFSSLPinningModePublicKey. Вот фрагмент кода, который я использую
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 : параметр больше не существует для версий 3+ в AFNetworking . Означает ли это, что мне придется закреплять все сертификаты моей цепочки сертификатов?
Возможно, я неправильно создаю свои сертификаты (.cer). Не могли бы вы сообщить мне, как извлечь .cer из URL-адреса?
Я использовал следующие команды в своем терминале 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