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

iOS适配https证书问题(以AFNetworking3.0为例)

Come noto, Apple ha dichiarato che a partire dal 2017, bloccerà le risorse http e promuoverà https.

Il creatore di questo thread ha recentemente convertito http in https e vuole condividere alcune informazioni con chi non ha ancora iniziato.

1. Preparare il certificato

Prima di tutto, chiedi al backend di ottenere un certificato (certificato SSL, di solito chiedi al backend di configurare https, poi chiedi un certificato, e lui sa cosa fare), quello di cui abbiamo bisogno è il certificato .cer. Ma il backend potrebbe darci un certificato .crt. Dobbiamo convertirlo: apri il terminale -> cd alla directory del certificato .crt -> inserisci openssl x509 -in il_tuo_certificato.crt -out il_tuo_certificato.cer -outform der, il certificato è pronto, trascinalo nel progetto, ricorda di selezionare copy.

2. Creare una classe o un metodo di classe

Il codice seguente è stato preso in prestito, l'autore lo ha messo in una classe chiamata FactoryUI

//Supporta https
+ (AFSecurityPolicy *)customSecurityPolicy
{
  //Importare il certificato, trovare il percorso del certificato
  NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"il nome del tuo certificato" ofType:@"cer"];
  NSData *certData = [NSData dataWithContentsOfFile:cerPath];
  //AFSSLPinningModeCertificate utilizza il modello di verifica del certificato
  AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
  //allowInvalidCertificates consente di accettare certificati non validi (cioè certificati auto-firmati), predefinito su NO
  //Se è necessario verificare il certificato auto-firmato, deve essere impostato su YES
  securityPolicy.allowInvalidCertificates = YES;
  //validatesDomainName deve verificare il nome del dominio, predefinito su YES;
  //Se il dominio del certificato non corrisponde al dominio richiesto, è necessario impostare questa opzione su NO; se impostata su NO, il server può stabilire una connessione utilizzando un certificato emesso da un'altra autorità di fiducia, il che è molto pericoloso, si consiglia di abilitarla.
  //Impostato su NO, principalmente utilizzato in questo caso: il client richiede un sottodominio, mentre il certificato è un altro dominio. Poiché il dominio del certificato SSL è indipendente, se il dominio registrato nel certificato è www.google.com, mail.google.com non può essere convalidato; naturalmente, se hai soldi puoi registrare un dominio wildcard *.google.com, ma questo è piuttosto costoso.
  //Se impostato su NO, si consiglia di aggiungere logiche di convalida del nome dominio corrispondenti.
  securityPolicy.validatesDomainName = NO;
  NSSet *set = [[NSSet alloc] initWithObjects:certData, nil];
  securityPolicy.pinnedCertificates = set;
  return securityPolicy;
}

3. Modifica la richiesta di AFNetWorking (ad esempio AFNetworking 3.0)

  AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  manager.responseSerializer = [AFHTTPResponseSerializer serializer];
  manager.requestSerializer.timeoutInterval = 5.0;
  [manager setSecurityPolicy:[FactoryUI customSecurityPolicy]];//Come menzionato nel metodo di classe FactoryUI se menzionato nel punto 2

 ···il seguito è lo stesso

Aggiunta: è necessario impostare le impostazioni di sicurezza del trasporto dell'app

Questo è tutto il contenuto dell'articolo, speriamo che sia utile per la tua apprendimento e che tu sostenga fortemente il tutorial urla.

Dichiarazione: il contenuto di questo articolo è stato tratto da Internet, il copyright spetta ai rispettivi proprietari. Il contenuto è stato contribuito e caricato autonomamente dagli utenti di Internet, il sito web non detiene i diritti di proprietà, non è stato editato manualmente e non assume alcuna responsabilità legale. Se trovi contenuti sospetti di violazione del copyright, ti preghiamo di inviare una e-mail a notice#oldtoolbag.com (sostituisci # con @) per segnalare il problema e fornire prove pertinenti. Una volta verificata la veridicità, il sito web rimuoverà immediatamente i contenuti sospetti di violazione del copyright.