English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Как известно, Apple заявила, что с 2017 года будет блокировать ресурсы http и активно продвижать https
Я недавно перешел с http на https и хочу поделиться несколькими советами с теми, кто еще не начал этим заниматься
1. Подготовка сертификата
Сначала запросите у техподдержки сертификат (SSL-сертификат, обычно вам нужно сказать техподдержке, чтобы сделать https, затем попросите сертификат, и они поймут), нам нужен сертификат в формате .cer. Но техподдержка может дать нам сертификат в формате .crt. Нам нужно преобразовать его: откройте терминал -> перейдите в папку с сертификатом.crt -> введите openssl x509 -in ваш_сертификат.crt -out ваш_сертификат.cer -outform der, сертификат готов, перетащите его в проект, не забудьте выбрать опцию copy.
2. Создайте новый класс или метод класса
Следующий код заимствован, автор himself поместил его в класс под названием FactoryUI
//Поддержка https + (AFSecurityPolicy *)customSecurityPolicy { //Сначала импортируется сертификат, находит путь к сертификату NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"Ваше имя сертификата" ofType:@"cer"]; NSData *certData = [NSData dataWithContentsOfFile:cerPath]; //AFSSLPinningModeCertificate использует режим проверки сертификата AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate]; //allowInvalidCertificates позволяет ли использовать недействительные сертификаты (например, собственные сертификаты), по умолчанию NO //Если необходимо проверять собственный сертификат, его следует установить в YES securityPolicy.allowInvalidCertificates = YES; //validatesDomainName требует ли проверки доменного имени, по умолчанию YES; //Если доменное имя сертификата не совпадает с запрашиваемым доменным именем,该项 следует установить в NO; если установлено NO, то сервер может устанавливать соединение с сертификатом другой доверенной организации, что очень опасно, рекомендуется включить. //Установлено NO,主要用于 такие случаи: клиент запрашивает поддомен, а сертификат - другой домен. Поскольку доменное имя SSL-сертификата является независимым, если зарегистрировано доменное имя www.google.com, то mail.google.com не может быть проверено; конечно, можно зарегистрировать доменное имя с подстановочным знаком *.google.com, но это довольно дорого. //Если установлено NO, рекомендуется добавить свою логику проверки доменного имени. securityPolicy.validatesDomainName = NO; NSSet *set = [[NSSet alloc] initWithObjects:certData, nil]; securityPolicy.pinnedCertificates = set; return securityPolicy; }
3. Изменение запросов AFNetWorking (например, AFNetworking 3.0)
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.responseSerializer = [AFHTTPResponseSerializer serializer]; manager.requestSerializer.timeoutInterval = 5.0; [manager setSecurityPolicy:[FactoryUI customSecurityPolicy]]; // Как упоминалось в разделе 2, метод класса FactoryUI
Следующее все еще такое же
Дополнение: все еще нужно установить настройки App Transport Security
Это все, что есть в этой статье, надеюсь, это поможет вам в изучении, и希望大家多多支持呐喊教程。
Декларация: контент этой статьи взят из Интернета, авторские права принадлежат их владельцам, контент предоставлен пользователями Интернета в порядке самостоятельного участия и загрузки, этот сайт не имеет права собственности, не был обработан вручную, и не несет ответственности за связанные с этим юридические обязательства. Если вы обнаружите контент,涉嫌侵犯版权, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (во время отправки письма, пожалуйста, замените # на @) для сообщения о нарушении, и предоставьте соответствующие доказательства. При подтверждении факта нарушения, этот сайт немедленно удалят涉嫌侵权的内容。