【问题标题】:“an ssl error has occurred and a secure connection to the server cannot be made” connecting to Internal Development Server on phone only“发生 ssl 错误,无法与服务器建立安全连接” 仅在手机上连接到内部开发服务器
【发布时间】:2017-09-03 07:34:08
【问题描述】:

我开发了一个连接到内部网络服务器的 iOS 应用。当我使用模拟器时,它工作正常,但是当我在 iPhone 上构建相同的应用程序时,它给了我一条错误消息“发生了 ssl 错误并且无法与服务器建立安全连接。 " 为什么错误只出现在 iPhone 上而不是模拟器上?

这是我的环境 Xcode 8.2 iOS 10.3 Objective C - 我的客户端代码默认使用 ATS AFNetworking 框架 3.1 Web 服务器 -- 仅支持 TLS 1.2 Web 服务器证书尚不支持前向保密。

可能是因为我的证书不符合 ATS 标准吗?

【问题讨论】:

    标签: ios app-transport-security


    【解决方案1】:

    在我阅读了来自 Apple 的 document 之后

    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>Your Domain</key>   
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>                
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
        </dict>
    </dict>
    

    我的应用现在可以在设备上运行。我在服务器上的证书尚未准备好前向保密。

    【讨论】:

    • 还应该注意的是,Apple 不需要为此 ATS 异常提供理由,因为前向保密异常不需要 Apple 明确说明理由。也就是说,如果您可以在提交给 Apple 之前删除该异常,那将是理想的。
    • 谢谢@wottle,我的服务器是windows 2008 R2,有一个支持ECDSA和ECDHE密钥的证书,操作系统必须是Windows 2012 R2,我正在等待服务器团队升级我们的服务器。
    • 另外,这个应用是企业应用,所以不需要提交到Apple store。
    • 那很好。启用尽可能少的 ATS 异常仍然是最佳做法。它不能保证您是安全的,但它可以防止未来的开发人员在不受信任的网络上进行可能无意暴露数据的事情。
    • 原来我还不能完全实现ATS,需要支持前向保密的Cert也需要放在防火墙服务器上,我们用的是F5防火墙服务器,不兼容还没有。
    猜你喜欢
    • 2019-06-26
    • 2018-06-06
    • 2016-02-28
    • 2015-12-21
    • 2020-11-02
    • 2012-07-25
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    相关资源
    最近更新 更多