使用 SSL 证书为 iOS 9 开发时管理开发环境
Managing dev environments when developing for iOS 9 with SSL certificate
有了iOS9,苹果是mandating the use of HTTPS。虽然这一切都很好而且很安全,但它迫使我将所有 dev/testing 服务器转换为 HTTPS。我正在为 Android 和 iOS 开发。
我已经 tried/looked 在:
- 运行 iOS 8 - 不是长期解决方案
- 自签名服务器 - 需要向两个平台添加代码。
- 添加根证书 - 可能是要走的路,但就花在这上面的时间而言成本很高。
我想知道其他人是如何处理这个问题的。理想情况下,我想要一个基于 3(或不基于 1 和 2)的解决方案,它与 simulator/emulator 配合得很好并且不需要在各种设备上跳过箍和不断修补根证书。
我也会为 iOS 采取解决方案(例如 #ifdef),因为 Android 可以保留在 HTTP 上。
============================================= ========================
更新:12 月 20 日
- 我的服务器只有 IP 地址。没有域名。
- 使用 plist 设置是一种选择。但是,答案必须具体和完整。我希望看到类似删除 'release' 构建的 plist 设置的脚本。
我不是安全人员,但我怀疑将白名单 IP 地址留给攻击者使用是个坏主意。
如果您想与 HTTP/HTTPS 和 iOS9 一起工作,请将此 属性 放入您的 info.plist。
在 iOS9 中使用 NSURLSession、NSURLConnection 时默认启用应用程序传输安全
您可以使用 NSExceptionDomains 为 Info.plist 中的某些 URL 选择退出 ATS。在 NSExceptionDomains 字典中,您可以明确定义需要 ATS 例外的 URL。您可以使用的例外是:
NSIncludesSubdomains
NSExceptionAllowsInsecureHTTPLoads
NSExceptionRequiresForwardSecrecy
NSExceptionMinimumTLSVersion
NSThirdPartyExceptionAllowsInsecureHTTPLoads
NSThirdPartyExceptionMinimumTLSVersion
NSThirdPartyExceptionRequiresForwardSecrecy
这些键中的每一个都允许您在您无法支持的域上精细地禁用 ATS 或特定的 ATS 选项。
你可以在这里参考这个问题的答案,
您可以使用免费的 DNS 提供商轻松地为您的开发服务器添加域名。我使用 http://freedns.afraid.org/,他们有一些共享域名,您可以在其中添加所需 IP 的名称。我有时只为内部服务器这样做,以便更容易记住它们在哪里!
至于plist;当您将这样的名称列入白名单时,您所做的就是告诉 phone 应用程序它可以使用 HTTP 与该服务器通信。如果您 #ifdef DEBUG
让您的应用能够与这些端点对话,那么您应该已经编译出最终用户切换到它的能力!
如果您仍然担心它并希望有一个构建步骤来删除豁免,那么 PlistBuddy 是您的朋友。您可以使用以下命令行删除豁免。
/usr/libexec/PlistBuddy -c "Delete :NSAppTransportSecurity:NSExceptionDomains:my.devserver.com" Info.plist
有了iOS9,苹果是mandating the use of HTTPS。虽然这一切都很好而且很安全,但它迫使我将所有 dev/testing 服务器转换为 HTTPS。我正在为 Android 和 iOS 开发。
我已经 tried/looked 在:
- 运行 iOS 8 - 不是长期解决方案
- 自签名服务器 - 需要向两个平台添加代码。
- 添加根证书 - 可能是要走的路,但就花在这上面的时间而言成本很高。
我想知道其他人是如何处理这个问题的。理想情况下,我想要一个基于 3(或不基于 1 和 2)的解决方案,它与 simulator/emulator 配合得很好并且不需要在各种设备上跳过箍和不断修补根证书。
我也会为 iOS 采取解决方案(例如 #ifdef),因为 Android 可以保留在 HTTP 上。
============================================= ======================== 更新:12 月 20 日
- 我的服务器只有 IP 地址。没有域名。
- 使用 plist 设置是一种选择。但是,答案必须具体和完整。我希望看到类似删除 'release' 构建的 plist 设置的脚本。 我不是安全人员,但我怀疑将白名单 IP 地址留给攻击者使用是个坏主意。
如果您想与 HTTP/HTTPS 和 iOS9 一起工作,请将此 属性 放入您的 info.plist。
在 iOS9 中使用 NSURLSession、NSURLConnection 时默认启用应用程序传输安全 您可以使用 NSExceptionDomains 为 Info.plist 中的某些 URL 选择退出 ATS。在 NSExceptionDomains 字典中,您可以明确定义需要 ATS 例外的 URL。您可以使用的例外是:
NSIncludesSubdomains
NSExceptionAllowsInsecureHTTPLoads
NSExceptionRequiresForwardSecrecy
NSExceptionMinimumTLSVersion
NSThirdPartyExceptionAllowsInsecureHTTPLoads
NSThirdPartyExceptionMinimumTLSVersion
NSThirdPartyExceptionRequiresForwardSecrecy
这些键中的每一个都允许您在您无法支持的域上精细地禁用 ATS 或特定的 ATS 选项。 你可以在这里参考这个问题的答案,
您可以使用免费的 DNS 提供商轻松地为您的开发服务器添加域名。我使用 http://freedns.afraid.org/,他们有一些共享域名,您可以在其中添加所需 IP 的名称。我有时只为内部服务器这样做,以便更容易记住它们在哪里!
至于plist;当您将这样的名称列入白名单时,您所做的就是告诉 phone 应用程序它可以使用 HTTP 与该服务器通信。如果您 #ifdef DEBUG
让您的应用能够与这些端点对话,那么您应该已经编译出最终用户切换到它的能力!
如果您仍然担心它并希望有一个构建步骤来删除豁免,那么 PlistBuddy 是您的朋友。您可以使用以下命令行删除豁免。
/usr/libexec/PlistBuddy -c "Delete :NSAppTransportSecurity:NSExceptionDomains:my.devserver.com" Info.plist