iOS9 GoogleAnalytics und NSAppTransportSecurity

Ich habe Probleme aufgrund der neuen Sicherheitsmöglichkeit von Apples iOS9, SSL-Anforderungen auf alle Arten von Servern zu beschränken.

Siehe Referenz:https: //developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW3

Eigentlich möchte ich die Standardeinstellung verwenden und keine Verbindung zulassen. NSAllowsArbitraryLoads: false

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <false/>
    </dict>

atürlich sind einige Verbindungen vorgesehen und ich rufe Daten sowohl von eigenen Servern als auch von Servern von Drittanbietern a

Entweder können Sie jetzt den Datenverkehr der App, der von Tools von Drittanbietern generiert wird, abhören, oder Sie verwenden die Protokollierung des gesamten Netzwerkdatenverkehrs, auf den hier verwiesen wird:Wie kann ich herausfinden, welche URL von App Transport Security blockiert wird?

Es ist einfach, alle auftretenden Fehler in diesem Protokoll aufzuspüren (nicht zu schwer, nach einem Fehlercode zu suchen). Auf diese Weise konnte ich leicht erkennen, welche Verbindungen hergestellt wurden und möglicherweise aufgrund von Lastbeschränkungen fehlschlugen (natürlich wissen gute Software-Ingenieure auswendig;))

Alle Arten von Trackern von Drittanbietern oder das eigene Netzwerk-Setup funktionieren trotz Google Analytics einwandfrei. Zuerst habe ich die letzten Beispielcodes heruntergeladen und sie mir angesehen. Natürlich kann man nicht erwarten, dass eine Bibliothek bereits die neuesten Betasysteme unterstützt, aber ich habe es versucht. Und es ist fehlgeschlagen, sobald NSAllowsArbitraryLoads auf false / NO @ gesetzt is

Sogar mit der Einschränkung so wenig wie möglich für den Dritten konnte ich es nicht zum Laufen bringen:

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <false/>
            <key>NSExceptionDomains</key>
            <dict>
        <key>ssl.google-analytics.com</key>
        <dict>
            <key>NSRequiresCertificateTransparency</key>
            <true/>
            <key>NSThirdPartyExceptionMinimumTLSVersion</key>
            <string>TLSv1.2</string>
            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
            <false/>
            <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>

Auch versucht, google-analytics.com und Subdomains NSIncludesSubdomains einzuschließen: true. Und, wie die einfache Website im Browser aufrufen "https: //google-analytics.co "leitet weiter zu"https: //www.google.com/analytics "Ich habe auch versucht, google.com als zusätzliche Ausnahmedomain zuzulassen, was ebenfalls fehlschlägt.

Selbst die unterstützten SSL-Chiffren angeschaut, ich denke sie sind hier kein Problem:

nmap --script ssl-enum-ciphers -p 443 ssl.google-analytics.com

|   TLSv1.2: 
|     ciphers: 
|       TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (dh 256) - C
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (dh 256) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (dh 256) - A
|       TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (dh 256) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (dh 256) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (dh 256) - A
|       TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (dh 256) - A
|       TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (dh 256) - A
|       TLS_ECDHE_RSA_WITH_RC4_128_SHA (dh 256) - A
|       TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_GCM_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_GCM_SHA384 (rsa 2048) - A
|       TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - A
|       TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - A

So schlägt das Google Analytics-Tracking immer noch fehl für Anfragen wie:https: //ssl.google-analytics.com/collect? [....]

Hat jemand eine Lösung gefunden oder einen Fehler in meiner Herangehensweise entdeckt?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage