English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
众所周知,苹果有言,从2017년부터, http의 자원을 차단하고 https를 강력히 추천할 것입니다
楼主이最近http를https로 전환했는데, 아직 손을 대지 않은 친구들에게 몇 가지 공유합니다
1.준비서명
먼저 백엔드에서 인증서를 요청합니다(SSL 인증서, 일반적으로 https를 설정하려면 백엔드에 요청하고 인증서를 제공받으면 그것을 알게 됩니다). 우리가 필요한 것은.cer 인증서입니다. 하지만 백엔드에서 제공된 것은.crt 인증서일 수 있습니다. 변환해야 합니다: 터미널을 열고}} -> cd로 이동하여.crt 인증서 경로 -> openssl x509 -in 你的证书.crt -out 你的证书.cer -outform der, 인증서가 준비되면, 프로젝트에 드래그하여 추가합니다. copy를 선택합니다.
2. 새로운 클래스나 메서드를 생성합니다
이 코드는 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의 요청을 수정합니다 (AFNetworking3.0을 예로 들어
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.responseSerializer = [AFHTTPResponseSerializer serializer]; manager.requestSerializer.timeoutInterval = 5.0; [manager setSecurityPolicy:[FactoryUI customSecurityPolicy]];//예2提及된 FactoryUI의 클래스 메서드
···그 이후에는 그대로입니다
추가: App Transport Security Settings을 설정해야 합니다
이것이 이 문서의 전체 내용입니다. 많은 도움이 되었기를 바랍니다. 또한,呐喊 강의에 많은 지원을 부탁드립니다.
선언: 이 문서의 내용은 인터넷에서 가져왔으며, 저작권자는 본사가 소유하고 있으며, 인터넷 사용자가 자발적으로 기여하고 업로드한 내용이며, 이 사이트는 소유권을 가지지 않으며, 인공적인 편집 처리를 하지 않았으며, 관련 법적 책임도 부담하지 않습니다. 저작권 위반 내용이 발견되면 notice#w로 이메일을 보내 주시기 바랍니다.3codebox.com에 (메일 보내기 시 #을 @으로 변경하시오) 신고를 하시고 관련 증거를 제공하시면, 실제로 확인되면 이 사이트는 즉시 위반된 내용을 삭제할 것입니다.