Ma question concerne Apple Transport Security (ATS) et je suis trop confus.
Je souhaite prendre en charge tous les protocoles (toutes les versions de TLS et SSL) de mon application Swift. Si je modifie NSAllowsArbitraryLoads en false, l'application fonctionnera-t-elle sur tous les protocoles par défaut? Ou dois-je spécifier un domaine dans la configuration et ajouter NSExceptionMinimumTLSVersion?
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<false/>
<key>NSExceptionDomains</key>
<dict>
<key>your.servers.domain.here</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
</dict>
</dict>
Et comment puis-je vérifier que mon application communique avec le serveur sur quel protocole?
Vous voulez lire https://developer.Apple.com/library/mac/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//Apple_ref/doc/uid/TP40009251-SW33
En bref, vous devez spécifier NSExceptionMinimumTLSVersion pour prendre en charge TLS1.0 et les versions ultérieures. 1.2+ est la valeur par défaut.
Pourquoi essayez-vous de supporter des protocoles plus anciens et moins sécurisés?
Je ne sais pas comment vous pouvez vérifier le protocole utilisé, mais si vous pouvez configurer un serveur pour qu'il fonctionne uniquement avec, par exemple, TLS 1.0, votre application se connectera uniquement avec la clé TLSv1.0 en place. et c'est facile à tester.
Connexion sécurisée à une URL
Se connecter à une URL via TLS est trivial. Lorsque vous créez un objet NSURLRequest à fournir à la méthode initWithRequest: delegate:, spécifiez https en tant que modèle de l'URL au lieu de http. La connexion utilise TLS automatiquement sans configuration supplémentaire.