2016-02-03 5 views
5

Wenn ATS in iOS 9 aktiviert ist, können viele meiner Kunden die Forward Secrecy-Anforderung nicht erfüllen. Sie können jedoch die Anforderungen von https und TLS 1.2 erfüllen. Aus diesem Grund möchte ich die Forward-Secrecy-Anforderungen lockern und gleichzeitig die https und TLS 1.2 beibehalten.iOS 9 ATS - Forward Secrecy für alle Domänen deaktivieren

Ich frage mich, ob jemand eine Möglichkeit gefunden hat, NSExceptionRequiresForwardSecrecy oder NSThirdPartyExceptionRequiresForwardSecrecy zu verwenden, um die Forward Secrecy für alle Domänen zu deaktivieren.

Ich habe versucht, mit * für NSExceptionDomains oder * .com, aber wenn ich verwendet, dass der Problem Link nicht funktioniert. Wenn ich seine Domain.com verwende, wird der Problemlink geladen. Ich schaute auf die Apple Docs auf, sah aber keine Möglichkeit, mein Ziel zu erreichen.

Ist es möglich, Forward-Geheimhaltung für alle Domänen sorta nur deaktivieren, wie Sie ATS vollständig deaktivieren können, indem Sie NSAppTransportSecurity/NSAllowsArbitraryLoads auf True setzen?

Vielen Dank!

+0

Ich denke, es ist unmöglich. Sie können entweder alle Domains Ihrer Kunden in ATS-Ausnahmen auflisten oder beliebige Ladevorgänge zulassen. Sie können auch beides tun, so dass ATS TLS 1.2 (aber ohne Forward Secrecy) für bekannte Domänen verwendet und für unbekannte deaktiviert. –

+0

Alex, ich bin zu der gleichen Schlussfolgerung gekommen, wir haben am Ende die Unterstützung für Ausnahmen auf Domain-Basis hinzugefügt. –

Antwort

5

Ja, es ist möglich. Sie haben wahrscheinlich mindestens eine Domain, mit der Sie sich sicherlich verbinden werden. Wenn es nicht wahr ist, versuchen Sie einfach, eine zuverlässige Website (google.com, facebook.com usw.) zu verwenden. Sie sollen durch die Angabe NSAppTransportSecurity Konfiguration in folgenden Weise NSExceptionDomains Regel für diese Domäne hinzufügen:

<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, Facebook-Anwendungen die gleichen Konfigurationen von NSAppTransportSecurity verwenden.

+0

Ich konnte eine Verbindung zu meinem Webserver mit TLS 1.2 mit den oben aufgeführten Einstellungen herstellen, aber während meines Autorisierungsprozesses ist das vom Web-Server generierte Ticket viel kürzer als der für meine Windows-Anwendung generierte Ticket-Server (dieses Windows-Ticket) funktioniert), wenn ich also einen anderen Anruf zum Server mit dem Ticket posten wollte, konnte der Server das Ticket nicht erkennen. Was habe ich falsch gemacht? – Aviva

1

Es ist möglich, Versuchen Sie es.

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

Auch können Sie bestimmte Ausnahme hinzufügen,

<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>