7
votes

Passage de HTTP en HTTPS. Certificat invalide

J'ai une application qui se connecte à mon interface Web de mon routeurs à domicile. Je veux convertir cela pour utiliser HTTPS au lieu de http. J'utilisais à l'origine ASIHTTPQUEST , mais comme il n'est plus pris en charge, je passe à Afnetworking . Le problème est que, chaque fois que j'essaie de se connecter, je reçois cette erreur Message : xxx

Si je navigue dans l'URL i Safari, je reçois un message que Safari peut 't vérifier l'identité ... et je dois cliquer sur Continuer pour continuer. Comment puis-je atteindre cet objectif? Je ne sais pas vraiment quoi que ce soit sur SSL ou HTTPS malheureusement. Voici le code que j'utilise actuellement: xxx


3 commentaires

Le certificat n'a évidemment pas confiance en conjonction avec l'hôte que vous soumettez. Vous devrez désactiver la vérification de la validité pour obtenir ce travail - AVERTISSEMENT NE PAS soumettre à cette application à l'App Store mais n'utilisez que cette solution pour votre phase de développement.


Merci. Comment puis-je désactiver la vérification de la validité? J'ai essayé d'ajouter #define Afnetworking_allow_Invalid_ssl_certificate 1 en haut du code.


En outre, si vous dites de ne pas soumettre l'application comme celle-ci, quelle serait une solution pour rendre le certificat de confiance?


3 Réponses :


16
votes

Pour vous déplacer dans la vérification de la validité du certificat d'hôte, ajoutez le code suivant.

Ajoutez d'abord une interface pour la méthode Setter qui est déjà dans le SDK mais non exposée au public: P>

#ifdef DEBUG
#define _AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES_
#endif


11 commentaires

Merci. Cela fonctionne maintenant. Je suppose que je devrai parler à ceux qui ont demandé cela de voir s'ils ont des certificats valides.


Est-il possible d'ajouter le certificat auto-signé à l'application que vous pouvez accepter lorsque vous naviguez vers l'URL à l'aide de Safari?


Vous devez vous abstenir d'utiliser des certificats auto-signés dans un environnement de production. Utilisez un certificat correctement accepté, ce n'est vraiment pas si dur ou coûteux.


Le problème est que mon application se connecte aux serveurs d'utilisateurs. Ils auraient donc besoin de leur propre sur leur serveur. Mais les serveurs ont une auto-signée par défaut.


C'est en effet un défi. Je ne sais pas comment vous pourriez contourner la validation du certificat de manière acceptée iTunes. L'utilisation du code ci-dessus vous permettra de rejeter car elle utilise une méthode d'API privée.


Une réponse qui montre l'API publique à utiliser pour gérer un certificat auto-signé peut être trouvé ici: Je veux ignorer la vérification du certificat, où et comment le faire avec le service Web XMLRPC?


Merci. Ce lien m'a conduit à quelques choses différentes à essayer. 1, la cocoanétique suggère un moyen de contourner le certificat CERT pour un domaine spécifique. 2, GDS Blog suggère que vous pouvez ajouter un certificat auto-cert aux certificats de confiance sur un périphérique en envoyant un courrier électronique à vous-même. Je me demande si je peux l'envoyer avec une application et l'avoir installé?


@ Jayo'Conor qui est certainement une meilleure façon lorsque vous utilisez NsurlConnection. La question faisait cependant référence à l'utilisation d'Afnetworking et non de NsurlConnection.


@Till Afnetworking est construit sur NsurlConnection. AfurlConnectionOveration One implémente Méthode de délégué NsurlConnection -connection: CanauthentiCaTeagainSprotectionsPace: Afnetworking fournit AfurlConnectionOverser -SetauthenticationAgainSprotectionsPaceBlock: qui est à peu près un wrapper de bloc autour de la méthode de déléguée NsurlConnection.


@Ross: Où inclure le code "interface nsurlrequest"?


FYI: L'utilisation d'un certificat Godaddy ne résoudra malheureusement pas ce problème, car ils ne sont pas confiés par IOS. L'utilisateur devrait ouvrir le domaine dans Safari et faire confiance au certificat avant que la connexion fonctionne dans l'application.



0
votes

Je ne suis pas familier avec Afnetworking, mais il y a une solution Voici qui fonctionne autour de l'erreur que vous voyez. La réponse de Till est réputée pour vous empêcher de soumettre votre application à l'App Store.


1 commentaires

Cette solution citée n'utilise pas l'Afnetworking, il ne répond pas à la question.