English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

iOS에서 https 인증서에 대한 조정 문제(AFNetworking3.0을 예로 들어

众所周知,苹果有言,从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에 (메일 보내기 시 #을 @으로 변경하시오) 신고를 하시고 관련 증거를 제공하시면, 실제로 확인되면 이 사이트는 즉시 위반된 내용을 삭제할 것입니다.

추천 항목