2016-02-03 14 views
5

Con ATS abilitato in iOS 9 molti dei miei clienti non sono in grado di soddisfare il requisito di segretezza in avanti. Possono comunque soddisfare i requisiti https e TLS 1.2. A causa di ciò, desidero attenuare i requisiti di segretezza in avanti mantenendo gli https e TLS 1.2 in posizione.iOS 9 ATS - Disabilita segretezza inoltrata per tutti i domini

Mi chiedevo se qualcuno ha trovato un modo per utilizzare NSExceptionRequiresForwardSecrecy o NSThirdPartyExceptionRequiresForwardSecrecy per disabilitare la segretezza di inoltro per tutti i domini.

Ho provato a utilizzare * per NSExceptionDomains o * .com ma quando ho usato il collegamento problema non funzionava. Quando utilizzo il suo dominio.com, verrà caricato il link del problema. Stavo guardando lo Apple Docs ma non ho visto alcun modo per raggiungere il mio obiettivo.

È possibile disattivare la segretezza di inoltro per tutti i domini, ad esempio è possibile disabilitare completamente ATS impostando NSAppTransportSecurity/NSAllowsArbitraryLoads su true?

Grazie!

+0

penso che sia impossibile. Elenca tutti i domini dei tuoi clienti nelle eccezioni ATS o consenti carichi arbitrari. Puoi anche fare entrambe le cose, quindi ATS utilizzerà TLS 1.2 (ma senza segretezza in avanti) per i domini conosciuti e disabilitato per quelli sconosciuti. –

+0

Alex, sono giunto alla stessa conclusione, abbiamo finito per aggiungere supporto per le eccezioni su base di dominio. –

risposta

5

Sì, è possibile. Probabilmente hai almeno un dominio a cui ti connetteresti. Se non è vero, basta provare a utilizzare qualsiasi sito Web affidabile (google.com, facebook.com ecc.). Si dovrebbe aggiungere NSExceptionDomains regola per questo dominio, specificando configurazione NSAppTransportSecurity in modo seguente:

<key>NSAppTransportSecurity</key> 
    <dict> 
     <key>NSExceptionDomains</key> 
     <dict> 
      <key>google.com</key> 
      <dict> 
       <key>NSIncludesSubdomains</key> 
       <true/>     
       <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> 
       <false/> 
      </dict> 
     </dict> 
    </dict> 

FYI, applicazioni di Facebook utilizzano le stesse configurazioni di NSAppTransportSecurity.

+0

Sono stato in grado di connettermi al mio server web con TLS 1.2 con le impostazioni elencate sopra, tuttavia, durante il mio processo di autorizzazione, il ticket generato dal web server è molto più breve del ticket server generato per la mia app di windows (questo windows ticket sta funzionando), quindi quando inserisco un'altra chiamata al server con il ticket, il server non è in grado di riconoscere il ticket. Cosa ho sbagliato? – Aviva

1

È possibile, provare a seguire.

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
</dict> 

Anche è possibile aggiungere un'eccezione specifica,

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSExceptionDomains</key> 
    <dict> 
     <key>testdomain.com</key> 
     <dict> 
      <key>NSIncludesSubdomains</key> 
      <false/> 
      <key>NSExceptionAllowInsecureHTTPSLoads</key> 
      <false/> 
      <key>NSExceptionRequiresForwardSecrecy</key> 
      <true/> 
      <key>NSExceptionMinimumTLSVersion</key> 
      <string>TLSv1.2</string> 
      <key>NSThirdPartyExceptionAllowInsecureHTTPSLoads</key> 
      <false/> 
      <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> 
      <true/> 
      <key>NSThirdPartyExceptionMinimumTLSVersion</key> 
      <string>TLSv1.2</string> 
      <key>NSRequiresCertificateTransparency</key> 
      <false/> 
     </dict> 

     ... 

    </dict> 
</dict>