【问题标题】:iOS client fails server verification / authentication with f5 BigIP only when server requires client certificate仅当服务器需要客户端证书时,iOS 客户端才会使用 f5 BigIP 进行服务器验证/身份验证失败
【发布时间】:2013-10-24 10:31:22
【问题描述】:

当我尝试通过 2 路 SSL (HTTPS) 连接到 f5 BigIP 服务器时,我的 iOS 客户端遇到了一个奇怪的错误 - 只有在服务器不需要时,客户端才能通过其证书验证服务器SSL 协商期间的客户端证书。签署服务器和我的客户端证书的根 CA 的证书已经在我的受信任锚证书列表中。

以下是我尝试过的每个测试的步骤,以及它们的 SSL 协商结果:

  1. 服务器不需要客户端证书,客户端验证服务器证书(1-way ssl:客户端 -> 服务器)
    • 客户端验证服务器证书(通过)
    • 客户端将其证书提供给服务器(未选中 - 服务器不需要)
    • 连接已建立,服务器允许客户端访问
  2. 服务器需要客户端证书,客户端验证服务器证书(2 路 SSL:客户端 服务器)
    • 客户端验证服务器证书(失败!!)
    • 没有其他事情发生
  3. 服务器需要客户端证书,客户端接受任何受信任的服务器(单向 SSL:客户端
  4. 客户端不验证服务器证书(setAllowsAnyHTTPSCertificate:YES - 仅用于测试目的)
  5. 客户端将其证书提供给服务器(通过)
  6. 连接已建立,服务器允许客户端访问

在情况 1 和 2 之间,只有服务器被更改为需要客户端证书(从而启用 2-way SSL),而客户端在这两种情况下都会验证服务器证书。在情况 2 和 3 之间,客户端更改为接受所有服务器证书,而服务器在这两种情况下都需要客户端证书。

看来我只能在任一方向上实现 1-way SSL,但不能实现 2-way SSL。这很奇怪,因为客户端验证服务器的初始步骤应该发生在服务器请求客户端证书之前,因此每次都会产生相同的结果。我从测试用例 2 得到的错误如下:

此服务器的证书无效。您可能正在连接到 一个伪装成“server.myexample.com”的服务器,它可以 将您的机密信息置于危险之中。发生错误时 获取https://server.myexample.com/service:错误 Domain=NSURLErrorDomain Code=-1202 "此服务器的证书是 无效的。您可能正在连接到假装的服务器 “server.myexample.com” 可以放置您的机密信息 有风险。

我收到了包含相同信息但指定错误的其他消息:NSErrorFailingURLStringKeyNSErrorFailingURLKeyNSUnderlyingErrorNSURLErrorFailingURLPeerTrustErrorKey

我认为我不需要为 2-way 和 1-way SSL 提供不同的服务器证书,或者我需要吗?

提前致谢!

【问题讨论】:

    标签: ios security ssl https f5


    【解决方案1】:

    问题是我在 f5 服务器上的 iRule 中有客户端请求。我删除了 iRule 的这一部分并将请求添加到客户端 SSL 配置文件中。这似乎适用于 iOS 客户端,这意味着 iOS 代码可能有些奇怪,因为我测试过的所有浏览器都可以以我发出请求的任何方式工作(iRule 或客户端 SSL 配置文件)。 iOS 应用程序仅适用于在客户端 SSL 配置文件中发出请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-28
      • 2012-06-10
      • 1970-01-01
      • 1970-01-01
      • 2011-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多