web-dev-qa-db-fra.com

Comment réparer ‘TIC SSL Trust Error’ dans iOS?

Lorsque j’ai essayé de me connecter à l’application à l’aide d’un service Web ..__, j’ai également réglé mon plist-file comme suit: 

 enter image description here

J'ai eu l'erreur suivante . Cette erreur apparaissant sur ma console

TIC SSL Trust Error [5:0x1c017fbc0]: 3:0
NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)
Task <E0C414FF-98C7-4E6B-876F-B9006465C8FD>.<1> HTTP load failed (error code: -1200 [3:-9802]
6
IKKA

Le code suivant fonctionne pour moi. J'ai implémenté la méthode déléguée pour NSURLSessionDelegate (didReceiveChallenge)

NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfiguration delegate:self delegateQueue:Nil];
NSURLSessionDataTask *task = [session dataTaskWithRequest:request
                                            completionHandler:^(NSData *data, NSURLResponse *response, NSError *error){
                    //Handle the response
   }];
[task resume];

// Méthode NSURLSessionDelegate

- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential *))completionHandler{

  if([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]){
    if([challenge.protectionSpace.Host isEqualToString:@"yourdomain.com"]){
      NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];
  completionHandler(NSURLSessionAuthChallengeUseCredential,credential);
}

} }

3
IKKA

Vous pouvez le saisir dans Appdelegate.m 

Voici le code:

@implementation NSURLRequest(DataController)
   + (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)Host{
   return YES;
}  
1
张轶铭

IKKA - la réponse dans la version 4.2 de Swift

extension CustomViewController: URLSessionDelegate {
    func urlSession(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
        if (challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodClientCertificate) {
            completionHandler(.rejectProtectionSpace, nil)
        }
        if (challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodServerTrust) {
            let credential = URLCredential(trust: challenge.protectionSpace.serverTrust!)
            completionHandler(.useCredential, credential)
        }
    }
}
1
Ruben Nahatakyan

Guide par développeur document Apple.

ssl change iOS 11 https://forums.developer.Apple.com/thread/80197

La visionneuse de certificat a également une messagerie plus spécifique. Dans la capture d'écran ci-dessous, vous pouvez voir qu'un avertissement est affiché pour l'erreur de confiance spécifique. Dans ce cas, l'erreur indique «Ce certificat ne peut pas être vérifié (algorithme de digestion faible)» car il est signé avec SHA-1.

Dans certains cas, il est utile de se connecter à un serveur et d'émettre des commandes à des fins de test. Pour les protocoles Internet classiques (HTTP, SMTP, NNTP, etc.), vous pouvez le faire avec l'outil telnet. Cela ne fonctionne cependant pas si le protocole utilise TLS. Dans ce cas, votre meilleure option est la sous-commande s_client de l'outil openssl. Le Listing 1 montre comment utiliser cet outil pour obtenir manuellement le contenu de (rappelez-vous que HTTPS utilise le port 443).

Listing 1 Utilisation de openssl s_client

$ openssl s_client -connect www.Apple.com:443
CONNECTED(00000003)
[...]
GET / HTTP/1.1
Host: www.Apple.com

HTTP/1.1 200 OK
Server: Apache/2.2.3 (Oracle)
Content-Length: 9464
Content-Type: text/html; charset=UTF-8
ntCoent-Length: 9516
Cache-Control: max-age=47
Expires: Mon, 25 Jun 2012 16:18:24 GMT
Date: Mon, 25 Jun 2012 16:17:37 GMT
Connection: keep-alive

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
[...]
</html>
closed
$

La sous-commande s_client prend en charge un certain nombre d’options de débogage utiles. Par exemple:

Vous pouvez fournir l'argument -cert pour qu'il réponde aux demandes de certificat client . Vous pouvez spécifier l'option -showcerts pour obtenir la liste complète des certificats fournis par le serveur . Les options -debug et -msg permettent une activation faible. Fonctionnalités de débogage de niveau supérieur ... Voir la page de manuel pour plus d’informations sur ces options et plus encore.

0
BuLB JoBs