English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Wie bekannt ist, sagte Apple, dass von2017Ab dem Jahr, werden die Ressourcen, die http verwenden, blockiert und https wird stark bevorzugt
Der Hauptautor hat kürzlich die Umstellung von http auf https vorgenommen und möchte den Freunden, die noch nicht angefangen haben, einige Tipps geben
1.Vorbereitung des Zertifikats
Zunächst erhalten Sie ein Zertifikat (SSL-Zertifikat) von der Backend, das一般是 wenn Sie dem Backend sagen, dass Sie https verwenden möchten, dann gibt es ihm ein Zertifikat, dann weiß er es), wir benötigen das .cer-Zertifikat. Aber das Backend kann uns möglicherweise das .crt-Zertifikat geben. Wir müssen es umwandeln: Öffnen Sie den Terminal -> Wechseln Sie zu.crt-Zertifikatspfad -> Geben Sie openssl x509 -in dein Zertifikat.crt -out dein Zertifikat.cer -outform der, das Zertifikat ist bereit, es in das Projekt ziehen, beachte, es zu kopieren.
2.Erstelle eine neue Klasse oder einen Methoden
Die folgenden Codes sind aus der folgenden Quelle entnommen, der Autor hat sie in einer Klasse namens FactoryUI platziert
//unterstützt https + (AFSecurityPolicy *)customSecurityPolicy { //Zuerst das Zertifikat importieren, den Pfad des Zertifikats finden NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"dein Zertifikatsname" ofType:@"cer"]; NSData *certData = [NSData dataWithContentsOfFile:cerPath]; //AFSSLPinningModeCertificate, Zertifikatsvalidierungsmuster verwenden AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate]; //allowInvalidCertificates, ob ungültige Zertifikate (d.h. selbst erstellte Zertifikate) erlaubt sind, Standard ist NO //Wenn eine Validierung der selbst erstellten Zertifikate erforderlich ist, muss es auf YES gesetzt werden securityPolicy.allowInvalidCertificates = YES; //validatesDomainName, ob der Domänennamen überprüft werden muss, Standard ist YES; //Wenn der Domänennamen im Zertifikat mit dem angeforderten Domänennamen nicht übereinstimmt, muss dieses Feld auf NO gesetzt werden; wenn es auf NO gesetzt ist, kann auch eine Verbindung hergestellt werden, wenn der Server ein Zertifikat von einer anderen vertrauenswürdigen Stelle ausgestellt verwendet wird, was sehr gefährlich ist, daher wird empfohlen, es zu aktivieren. //Auf NO setzen, hauptsächlich in dieser Situation: Der Client fordert einen Subdomänennamen an, während der Zertifikatsname ein anderer ist. Da der Domänennamen im SSL-Zertifikat unabhängig ist, wenn der registrierte Domänennamen im Zertifikat www.google.com ist, kann mail.google.com nicht validiert werden; natürlich, wenn man Geld hat, kann man einen Wildcard-Domänennamen registrieren.*.google.com, aber das ist doch recht teuer. //Wenn auf NO gesetzt, wird empfohlen, die zugehörige Domänennamensvalidierungslógik selbst hinzuzufügen. securityPolicy.validatesDomainName = NO; NSSet *set = [[NSSet alloc] initWithObjects:certData, nil]; securityPolicy.pinnedCertificates = set; return securityPolicy; }
3.Ändern Sie die Anfragen von AFNetWorking (AFNetworking3(Take .0 as an example)
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.responseSerializer = [AFHTTPResponseSerializer serializer]; manager.requestSerializer.timeoutInterval = 5.0; [manager setSecurityPolicy:[FactoryUI customSecurityPolicy]];//z.B.2Wenn die Klasse von FactoryUI erwähnt wird
···Der Rest ist immer noch das gleiche
Zusatz: Die Einstellungen für App Transport Security müssen dennoch eingerichtet werden
Das ist der gesamte Inhalt dieses Artikels. Ich hoffe, er hilft Ihnen bei Ihrem Lernen und ich hoffe, dass Sie die Anleitung für Anrufe stark unterstützen.
Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet übernommen und gehört dem Urheberrecht des jeweiligen Autors. Der Inhalt wurde von Internetbenutzern freiwillig beigesteuert und hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht manuell bearbeitet. Sie übernimmt auch keine rechtlichen Verantwortlichkeiten. Wenn Sie verdächtige urheberrechtliche Inhalte finden, sind Sie herzlich eingeladen, eine E-Mail an notice#w zu senden.3codebox.com (Bitte ersetzen Sie # durch @ beim Senden von E-Mails, um zu melden, und fügen Sie relevante Beweise bei. Bei nachgewiesener Infringement wird die Website sofort den verdächtigen Inhalt löschen.)