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