Erreur de chargement HTTP NSURLSession / NSURLConnection échouée (kCFStreamErrorDomainSSL, -9802) dans la connexion https
Dans iOS 9, je suis frapper une requête de l'url https://s3.amazonaws.com/furniture.retailcatalog.us/products/2061/6262u9665.jpg l'aide de la base NSURLConnection.
NSOperationQueue *completionQueue = [NSOperationQueue mainQueue];
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
self.mURLSession = [NSURLSession sessionWithConfiguration:configuration delegate:nil delegateQueue:completionQueue];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://s3.amazonaws.com/furniture.retailcatalog.us/products/2061/6262u9665.jpg"]];
NSURLSessionDataTask *dataTask = [self.mURLSession dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSLog(@"%@",error);
}];
[dataTask resume];
Mais comment cette erreur
Erreur de Domaine=NSURLErrorDomain Code=-1200 "Une erreur SSL a eu lieu et d'une connexion sécurisée au serveur ne peut pas être fait." UserInfo={NSLocalizedDescription=Une erreur SSL a eu lieu et d'une connexion sécurisée au serveur ne peut pas être fait., NSLocalizedRecoverySuggestion=souhaitez-vous vous connecter au serveur de toute façon?, _kCFStreamErrorDomainKey=3, NSUnderlyingError=0x7c1075e0 {Erreur de Domaine=kCFErrorDomainCFNetwork Code=-1200 "(null)" UserInfo={_kCFStreamPropertySSLClientCertificatestate=0, _kCFNetworkCFStreamSSLErrorOriginalvalue=-9802, _kCFStreamErrorCodeKey=-9802, _kCFStreamErrorDomainKey=3, kCFStreamPropertySSLPeerTrust=, kCFStreamPropertySSLPeerCertificates={type = immuable, count = 3, les valeurs = (
0 :
1 :
2 :
)}}}, _kCFStreamErrorCodeKey=-9802, NSErrorFailingURLStringKey=https://s3.amazonaws.com/furniture.retailcatalog.us/products/2061/6262u9665.jpg, NSErrorPeerCertificateChainKey={type = immuable, count = 3, les valeurs = (
0 :
1 :
2 :
)}, NSErrorClientCertificateStateKey=0, NSURLErrorFailingURLPeerTrustErrorkey=, NSErrorFailingURLKey=https://s3.amazonaws.com/furniture.retailcatalog.us/products/2061/6262u9665.jpg}
Même si c'est la connexion https,pourquoi j'obtiens cette erreur étrange. Quelqu'un peut s'il vous plaît laissez-moi savoir.
source d'informationauteur IronMan
Vous devez vous connecter pour publier un commentaire.
Que par la Pomme note techniqueApp de la Sécurité des Transports exige que SHA-2. Le S3 (et CloudFront) les certificats SHA-1, qui est la raison de cet échec est en cours.
La solution de contournement consiste à définir la
NSExceptionRequiresForwardSecrecy
àfalse
. (C'est jusqu'à AWS se déplace à SHA-2 (d'ici le 30 septembre 2015)).J'ai rencontré avec Amazon S3. Malheureusement, je ne peux pas vous dire pourquoi ce qui se passe - S3 semble satisfaire les en avant en matière de secret (au moins en fonction de cette réponse):
La solution de contournement, que j'ai trouvé ici est d'ajouter une exception à votre application Info.fichier plist de ne pas exiger forward secrecy:
Autant que je peux dire, ce est le montant minimum que vous pouvez réduire la sécurité intégrée afin de se connecter à Amazon S3.
Avec l'aide de l'autre les réponses fournies ici, et icije fixe mon application doit se connecter à plusieurs cloudfront.net les sous-domaines avec cet ajout à la plist:
Pour moi la solution était d'ajouter cette exception pour le domaine: