通过HTTPs和iPv6-Clarifications应用新的安全策略

Ros*_*l K 5 iphone wcf ios xamarin

我们有现有的iPhone/ipad应用程序,目前我们正在使用HTTP soap和Rest服务.根据Apple的新规则和规定,我们是否需要将现有的HTTP服务转换为HTTP?

我们可以在服务器中使用自签名证书来使服务SSL启用吗?如果我们使用自签名证书,苹果有问题吗?或者我们是否需要购买新的SSL证书?

目前我也通过ipv4地址访问webservices.我需要将其更改为ipv6吗?

苹果什么时候开始审查这些条件?我想在下个月发布我的应用程序的更新版本.我是否需要在下一次构建时遵循这些规则?

Sus*_*ver 2

就 ATS(应用程序传输安全性)而言,是的,这是对所有运行使用 Xcode 7 构建的应用程序的 iOS 9 设备的新要求。

\n\n

https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/

\n\n
\n

使用 NSURLConnection、CFURL 或 NSURLSession API 的所有连接\n 均使用为 iOS 9.0\n 或更高版本以及 OS X v10.11 或更高版本构建的应用中的应用程序传输安全默认行为。不符合要求的连接将会失败。\n

\n
\n\n

但是,如果需要,您的应用程序可以通过在 Info.plist 中添加例外来明确选择退出,至少在 Apple 更改这一点之前,假设将来的某个时候他们将强制执行 100% 合规性,也许是 iOS 10 版本(?),也许更早( ?)...

\n\n

选择退出示例:

\n\n
<key>NSAppTransportSecurity</key>\n<dict>\n    <key>NSAllowsArbitraryLoads</key>\n    <true/>\n</dict>\n
Run Code Online (Sandbox Code Playgroud)\n\n

通过:Google Ads 开发人员:http://googleadsdeveloper.blogspot.ch/2015/08/handling-app-transport-security-in-ios-9.html

\n\n

注意:您可以通过 OS-X 10.11 安装使用“nscurl --ats-diagnostics”来测试您的应用将使用的 URL 是否符合 ATS。我强烈建议在应用程序(重新)提交之前执行此操作,以确保您不需要通过 Info.plist 请求例外。

\n\n

除非您添加签名 CA 详细信息并信任它,或者再次通过 Info.plist 异常禁用 ATS,否则自签名证书将不起作用。省去麻烦,只需购买兼容的 SSL 证书即可。

\n\n
\n

目前我还通过 ipv4\n 地址访问网络服务。需要改成ipv6吗?

\n
\n\n

不,您的服务器不需要运行 IPv6,它们应该运行,但这取决于您和您的托管提供商,因为一些移动运营商仅由于缺乏 IPv4 地址而转向 IPv6,但是,当然,他们正在提供 NAT 转换IPv4。

\n\n

您的应用程序必须启用/准备好 IPv6才能与这些提供商合作,否则您将收到应用程序拒绝。我强烈建议您阅读Apple 文档

\n\n

有几种情况可能会阻止应用程序支持 IPv6,并且这些情况会被拒绝:

\n\n
    \n
  • 嵌入协议中的 IP 地址文字。许多通信协议,例如会话启动协议 (SIP)、文件传输协议 (FTP)、WebSocket 和点对点协议 (P2PP),都在协议消息中包含 IP 地址文字。请参阅使用高级网络框架和不要\xe2\x80\x99t 使用 IP 地址文字。
  • \n
  • 嵌入配置文件中的 IP 地址文字。配置文件通常包含 IP 地址文字。请参阅不要\xe2\x80\x99t 使用 IP 地址文字。\n网络预检。许多应用程序尝试通过将 IP 地址文字传递给网络可达性 API 来主动检查 Internet 连接或活动的 Wi-Fi 连接。
  • \n
  • 使用低级网络 API。某些应用程序直接使用套接字和其他原始网络 API,例如 gethostbyname、gethostbyname2 和 inet_aton。这些 API 很容易被误用,或者仅支持 IPv4\xe2\x80\x94,例如,解析 AF_INET 地址系列的主机名,而不是 AF_UNSPEC 地址系列。
  • \n
  • 使用小地址族存储容器。某些应用程序和网络库使用 32 位或更小的地址存储容器\xe2\x80\x94,例如 uint32_t、in_addr 和 sockaddr_in\xe2\x80\x94。
  • \n
\n\n

有关更多详细信息以及如何解决/解决上述问题,请参阅:\n https://developer.apple.com/library/prerelease/ios/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandandPreparingfortheIPv6Transition/UnderstandandPreparingfortheIPv6Transition.html#//apple_ref/文档/uid/TP40010220-CH213-SW1

\n