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

iOS适配https证书问题(AFNetworking)3(以0.0为例)

Comme tout le monde le sait, Apple a dit, à partir de2017À partir de cette année, les ressources http seront bloquées et https sera fortement recommandé

Le propriétaire du forum a récemment changé http en https et partage quelques conseils avec ceux qui n'ont pas encore pris l'initiative

1.Préparer le certificat

Tout d'abord, obtenez un certificat à partir du backend (certificat SSL, généralement vous dites au backend que vous voulez https, puis il vous donne un certificat, il le sait), nous avons besoin du certificat .cer. Mais le backend peut nous donner un certificat .crt. Nous devons le convertir: ouvrez le terminal -> cd dans le chemin du certificat.crt -> Entrez openssl x509 -in votre certificat.crt -out votre certificat.cer -outform der, le certificat est prêt, glissez-le dans le projet, n'oubliez pas de copier.

2.Créez une classe ou une méthode de classe

Le code suivant est inspiré, l'auteur l'a placé dans une classe appelée FactoryUI

//supporte https
+ (AFSecurityPolicy *)customSecurityPolicy
{
  //Tous d'abord, importez le certificat, trouvez le chemin du certificat
  NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"votre nom de certificat" ofType:@"cer"];
  NSData *certData = [NSData dataWithContentsOfFile:cerPath];
  //AFSSLPinningModeCertificate utilise le mode de vérification du certificat
  AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
  //allowInvalidCertificates permet-il les certificats invalides (c'est-à-dire les certificats auto-signés), la valeur par défaut est NO
  //Si vous avez besoin de vérifier le certificat auto-signé, il doit être réglé sur YES
  securityPolicy.allowInvalidCertificates = YES;
  //validatesDomainName nécessite-t-il une vérification du domaine, la valeur par défaut est YES;
  //Si le domaine du certificat n'est pas le même que le domaine demandé, il est nécessaire de régler cette option sur NO; si elle est réglée sur NO, c'est-à-dire que le serveur utilise un certificat délivré par une autre autorité de confiance, une connexion peut également être établie, ce qui est très dangereux, il est recommandé de l'ouvrir.
  //Réglé sur NO, principalement utilisé dans ce cas: le client demande un sous-domaine, tandis que le domaine sur le certificat est un autre. Comme le domaine du certificat SSL est indépendant, si le domaine enregistré sur le certificat est www.google.com, alors mail.google.com ne peut pas être vérifié; bien sûr, avec de l'argent, vous pouvez enregistrer un domaine wildcard.*.google.com, mais cela est assez cher.
  //Si la valeur est réglée sur NO, il est recommandé d'ajouter la logique de vérification du domaine correspondant vous-même.
  securityPolicy.validatesDomainName = NON;
  NSSet *set = [[NSSet alloc] initWithObjects:certData, nil];
  securityPolicy.pinnedCertificates = set;
  return securityPolicy;
}

3.modifier les demandes d'AFNetWorking (AFNetworking3(以0.0为例)

  AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  manager.responseSerializer = [AFHTTPResponseSerializer serializer];
  manager.requestSerializer.timeoutInterval = 5.0;
  [manager setSecurityPolicy:[FactoryUI customSecurityPolicy]];//comme2Si les méthodes de classe mentionnées dans FactoryUI

 ···et cela continue de la même manière

Remarque : les paramètres de sécurité du transport d'application doivent toujours être définis

Voici la totalité du contenu de cet article, j'espère qu'il vous sera utile dans vos études, et j'espère que vous soutiendrez également le tutoriel à cri

Déclaration : le contenu de cet article est tiré d'Internet, propriété de ses auteurs respectifs, contribué et téléversé par les utilisateurs d'Internet de manière spontanée. Ce site ne détient pas de droits de propriété, n'a pas été édité par l'homme, et n'assume aucune responsabilité juridique connexe. Si vous trouvez du contenu suspect de violation de droits d'auteur, veuillez envoyer un e-mail à : notice#oldtoolbag.com (veuillez remplacer # par @ lors de l'envoi d'un e-mail pour signaler une violation, et fournir des preuves pertinentes. Une fois vérifié, ce site supprimera immédiatement le contenu suspect de violation de droits d'auteur.