首页>网络安全资讯>HTTPS和测试服务器

HTTPS和测试服务器

问:我的应用通过HTTPS与服务器对话。生产服务器使用由受信任的证书颁发机构颁发的证书,所以一切都很好。然而,当我的应用程序与使用自签名证书的测试服务器对话时,事情就会失败。如何在我的测试服务器上测试我的应用程序?

答:这里有两种方法,在下面的小节中讨论。

测试证书颁发机构

我们推荐的方法是通过建立一个测试证书颁发机构(CA)来做到这一点。

基本思想是:

1、创建您自己的测试CA

2、使用该CA为您的服务器创建一个数字标识

3、在您的测试设备上安装CA的根证书

这种方法有一些重要的好处:

关于步骤1,如果你没有运行CA的经验,你可以利用在macOS中内置的设施;有关详细信息,请参见为TLS测试创建证书。

关于步骤3,有很多方法可以在测试设备上安装测试CA的根证书。有关如何做到这一点的详细说明,请参阅在您的测试设备上安装CA的根证书

定制HTTPS服务器信任评估

如果您无法使用测试CA,那么您唯一的选择就是定制HTTPS服务器信任评估,以忽略您连接到一个不安全服务器的事实。这里有两个基本步骤:

1、您必须覆盖默认的HTTPS服务器信任评估。在HTTPS服务器信任评估中描述了这样做的技术。

2、如果你的应用程序使用高级的HTTPS API——NSURLSession、NSURLConnection或任何分层的东西——你必须为你的服务器禁用应用传输安全(ATS)。有关详细信息,请参阅信息属性列表的“nsapptransport security”部分。

警告:您必须在您交付给用户的生产环境中删除这些更改。如果不这样做,可能会危及你的应用程序的安全性。

在您的测试设备上安装CA的根证书

在您的测试设备上安装CA的根证书的过程因设备类型而异。下面的部分将介绍最常见的情况。

重要:这里的重点是在应用程序开发期间进行测试。如果您想要出于其他原因安装定制CA——例如,如果您正在为大型企业管理设备——您可以采用其他更好的方法(配置概要文件、MDM等等)。这些方法由AppleCare支持,并在其站点上进行描述。

MacOS

要在macOS上安装CA的根证书,请使用Keychain Access实用程序将根证书添加到系统钥匙链中,然后显式地将其标记为可信的。

IOS设备

在iOS设备上安装CA的根证书有三种常见的方法:

重要:无论您如何安装根证书,您都必须在“设置”中明确地启用证书信任设置。

IOS模拟器

在模拟器上安装CA的根证书的最快方法是将根证书拖拉到主模拟器窗口。这将启动与您在设备上看到的相同的安装过程。

或者,您可以将根证书放在web服务器上,然后在Safari中导航,就像在真实设备上一样。

重要:就像在设备上一样,您必须在“设置”中明确地启用根证书,即证书信任设置。

watchOS设备

watchOS可以通过配对的iPhone或直接在Apple Watch上运行网络请求。为了使您的CA的根证书在任何情况下都有效,它必须安装在两个设备上。

当你在你的iPhone上安装一个根证书(使用上面描述的一个过程),iOS会问你是否想在iPhone或Apple Watch上安装它。你必须经历两次这个过程,一次是在你的iPhone上安装证书,然后再把它安装在你的Apple Watch上。

重要:iOS 10.3和之后有一个bug,导致它们不显示这个警告(r.34652068)。在这个bug被解决之前,你将不能在Apple Watch上安装你的根证书。只要配对的iPhone可以运行网络请求,你仍然可以在Apple Watch上进行测试。

watchOS模拟器

watchOS模拟器总是通过配对的iPhone模拟器运行网络请求,所以在这个配对模拟器上安装CA的根证书就足以支持watchOS测试。

tvOS设备和模拟器

要在tvOS设备或模拟器上安装CA的根证书,请执行以下操作:

重要:与iOS一样,您必须在“设置”中特别启用root证书,即证书信任设置。

 

文档修订记录

2017-11-02,更新了iOS 11、mac OS 10.13、tvOS 11和watchOS 4。添加了对苹果配置器的引用。

2017-01-25,描述如何使用HTTPS测试服务器的新文档。

 

参考链接:https://developer.apple.com/library/content/qa/qa1948/_index.html#//apple_ref/doc/uid/DTS4001760