Skip to content

[BUG] iOS 订阅会接受系统不信任的 HTTPS 证书 #44

Description

@Mavlan

你好,跟你说一下这个安全问题。

我用自己控制的服务器搭了一个自签名 HTTPS 测试地址,没有测试任何第三方服务器。

同一个地址,在 iPhone Safari 里会直接提示“此连接非私人连接”,因为证书不受系统信任。但是把完全相同的地址添加到 Clash/Hako 里却可以正常导入,而且测试 YAML 里的代理名称也正常显示出来了。

所以这个不是只看源码猜的,是在 iPhone 上实际复现成功了。

测试版本:

  • Clash 1.0.6 (82)
  • App 里显示的源码版本:9c06292b73d5683e9fb72c072b98868e0f1c212d
  • Hako 内核:1.19.30

看了下现在仓库里的 ResourceDownloader.swift,处理 server trust challenge 时直接用了:

URLCredential(trust: trust)
completionHandler(.useCredential, credential)

但是没有看到 SecTrustEvaluateWithError 或系统默认的证书信任验证。

TV 目录里的 HakoTVNetwork.swift 好像也有类似处理。

正常情况下这里应该交给系统默认验证,例如:

completionHandler(.performDefaultHandling, nil)

我这边测试完成后,已经把测试服务器和端口关闭了。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions