首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS9 GoogleAnalytics和NSAppTransportSecurity

iOS9 GoogleAnalytics和NSAppTransportSecurity
EN

Stack Overflow用户
提问于 2015-07-23 06:17:56
回答 1查看 4K关注 0票数 20

我遇到了麻烦,因为苹果的iOS9提供了一个新的安全机会,将ssl请求限制在任何类型的服务器上。

参见参考资料:ref/doc/uid/TP40009251-SW33

实际上,我想使用默认值,不允许任何类型的连接( NSAllowsArbitraryLoads: false )

代码语言:javascript
复制
<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <false/>
    </dict>

当然,有些连接是有意的,我从自己的服务器以及第三方服务器检索数据。

现在,您可以嗅探由第三方工具生成的应用程序的流量,也可以使用在此处引用的所有网络流量记录:How can I figure out which URL is being blocked by App Transport Security?

很容易跟踪这个日志中发生的所有错误(不太难查找错误代码)。通过这种方式,我可以很容易地看到哪些连接正在建立,并且可能由于负载限制而失败(当然,优秀的软件工程师都知道这一点);

任何类型的第三方跟踪器或自己的网络设置都运行得很好,尽管来自。起初,我下载了最后一个示例代码,并查看了它们,当然,您不能期望库已经支持最新的beta系统,不过,我还是尝试了一下。当NSAllowsArbitraryLoads设置为false/NO时,它就失败了。

即使对第三方限制尽可能少,我也无法让它运行:

代码语言:javascript
复制
<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>

还尝试了GoogleAnalytics.com并包括子域NSIncludesSubdomains:true。而且,当简单的网站在浏览器中调用"https://google-analytics.com“重定向到"https://www.google.com/analytics/”时,我也尝试允许google.com作为额外的异常域,这也失败了。

即使查看了支持的ssl-密码,我认为它们在这里没有问题:

代码语言:javascript
复制
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

因此,google分析跟踪仍然失败,请求如下:https://ssl.google-analytics.com/collect?[....]

有没有人想出解决办法,或者在我的方法中发现了某种错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-29 07:43:10

实际上,上面的配置有点错误,我找到了一种工作方法。

-短篇小说开始--

基本上,上面的方法基本上是正确的,但是当我查看从MacOS10.10和OS10.11建立的网络连接时,我再次检查了配置

代码语言:javascript
复制
openssl s_client -connect ssl.google-analytics.com:443 -status

MacOS10.10使用TLSv1.2,而MacOS10.11出于任何原因使用TLSv1.0

-短篇小说结尾--

因此,在重新考虑属性之后,我删除了证书透明度NSRequiresCertificateTransparency,因为默认设置也是false,而不是true。下面的配置现在适用于我:

代码语言:javascript
复制
<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <false/>
        <key>NSExceptionDomains</key>
        <dict>
            <key>ssl.google-analytics.com</key>
            <dict>
                <key>NSThirdPartyExceptionMinimumTLSVersion</key>
                <string>TLSv1.2</string>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                <false/>
                <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
                <true/>
            </dict>
        </dict>
    </dict>

附加注意:虽然google使用了这个“实验标准”(证书透明性):Transparency,但似乎没有在google分析中使用它:-)

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31579507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档