[Résolu] Https + ssl autosignés = TIC SSL Trust Error

Bonjour à toutes et tous,

Je suis en train de créer une application basée sur un API.
l’API est pour le moment en local accessible via HTTPS avec un certif auto signé. (Certificat qui fonctionne parfaitement car sur chrome ou firefox j’ai bien le petit bouton “sécurisé” a côte de mon URL.

Maintenant ca se corse, car quand je fais mon appel, (avec Alamo mais la n’est pas le soucis) j’ai un beau message dans ma console :

2018-03-20 15:56:43.905130+0100 myapp[26833:12758596] **TIC SSL Trust Error** [1:0x60800016b940]: 3:0
2018-03-20 15:56:43.905577+0100 myapp[26833:12758596] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)
2018-03-20 15:56:43.905708+0100 myapp[26833:12758596] Task <B7388A45-1EC8-44F9-8093-20D892A97B84>.<1> HTTP load failed (error code: -1202 [3:-9813])
2018-03-20 15:56:43.905925+0100 myapp[26833:12758600] Task <B7388A45-1EC8-44F9-8093-20D892A97B84>.<1> finished with error - code: -1202

Si je met l’ip de l’API en ligne, ca fonctionne donc c’est bien une histoire de certificat autosigné qui me bloque.
Comment faire ?

Merci d’avance.

Edit : Solution trouvée, cf ma réponse.
TL:DR : pas de https en local, que du http + ATS spécifique au domaine local

Une piste à essayer : Handling App Transport Security

En changeant bien entendu le domaine de la nasa par ton domaine local…

A enlever avant publication App Store (surtout si tu choisis la 2nde option qui est globale à tous les domaines) car c’est sans doute un motif de rejet (et de risque de sécurité).

Hello,

Merci pour la réponse. Cet onglet était déjà ouvert à côté du forum et je n’arrivais pas à comprendre pourquoi cela ne marchait pas non plus.
Après plusieurs tests (et une nuit de repos) j’ai tenté de nouveaux reglages.
En fait, j’ai du regler mon serveur local pour qu’il ne fournisse pas en HTTPS, mais uniquement en HTTP pour que mon appel alamo se fasse comme ca :

Alamofire.request("**http**://xxxxx", method: method, parameters: withParameters, encoding: URLEncoding.httpBody)

au lieu de

Alamofire.request("**https**://xxxxx", method: method, parameters: withParameters, encoding: URLEncoding.httpBody)

Et aussi, la seconde méthode globale ne fonctionne plus il me semble depuis ios11. Mais quoi qu’il en soit je n’aime pas les config globales :slight_smile:

C’est sans doute plus simple comme cela.

Sinon Apple suggère d’installer une copie du certificat auto signé sur le device de test :
https://developer.apple.com/library/content/qa/qa1948/_index.html#//apple_ref/doc/uid/DTS40017603-CH1-SECINSTALLING

Bon dév :wink: