• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 无法使用 HTTPS 连接到服务器

[复制链接]
菜鸟教程小白 发表于 2022-12-12 20:44:41 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

首先,我知道有 类似的问题,但我所见过的似乎都没有解决我的设置问题(我发现的任何解决方案都没有工作)。所以请耐心等待...

  • 我的服务器主机名是 IP 地址,不是域名 (即,URL 看起来像:https://XXX.YYY.ZZZ.WWW:9443/etc...)。
  • 我的服务器有一个真实的证书(即不是自签名的)。
  • 我的应用的 plist 条目 NSAppTransportSecurity 字典为空(没有任何异常(exception) - 出厂设置 ATS)。
  • 这是生产代码,我可以禁用 ATS(我认为我也不能,因为异常(exception)仅适用于明确的域名,不是 IP 地址)。

(在 iOS 9 上测试,部署目标是 iOS 8.x)

我在尝试连接时收到此错误:

CFNetwork SSLHandshake failed (-9806) NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9806) Error: An SSL error has occurred and a secure connection to the server cannot be made.

(设备模拟器)

我尝试用命令行工具nscurl描述here .我明白了:

  • 默认 ATS 安全连接: CFNetwork SSLHandshake 失败 (-9806)
  • 允许任意加载: NSURLSession/NSURLConnection HTTP 加载失败(kCFStreamErrorDomainSSL,-9813)(“此服务器的证书无效。您可能正在连接到伪装成“XXX.YYY.ZZZ.WWW”的服务器,这可能会使您的 secret 信息面临风险。”)
  • 为 XXX.YYY.ZZZ.WWW 配置 TLS 异常(exception):(TLS 1.2、1.1 和 1.0)CFNetwork SSLHandshake 失败 (-9806)

  • 禁用完美前向保密: CFNetwork SSLHandshake 失败 (-9801)

  • 禁用完美前向保密并允许不安全的 HTTP: CFNetwork SSLHandshake 失败 (-9801)

  • 禁用 PFS 的 TLSv1.2: CFNetwork SSLHandshake 失败 (-9801)

  • 禁用 PFS 的 TLSv1.1: CFNetwork SSLHandshake 失败 (-9801)

  • 禁用 PFS 的 TLSv1.0: NSURLSession/NSURLConnection HTTP 加载失败(kCFStreamErrorDomainSSL,-9802)

  • 禁用 PFS 且允许不安全 HTTP 的 TLSv1.2: CFNetwork SSLHandshake 失败 (-9801)

...你得到了演习。

我正在检查服务器支持哪个 TLS 版本(据我研究,这是最大的嫌疑人),但也许还有其他问题我需要修复/检查客户端?



Best Answer-推荐答案


我认为您需要检查服务器上的证书。您应该能够使用 openssl 客户端来调查您的证书并获取服务器的 ssl 配置:

openssl s_client  -connect XXX.YYY.ZZZ.WWW:9443 

您应该获得有关证书的一些详细信息

SSL session : 协议(protocol):TLSv1 密码:AES256-SHA session ID:// session ID-ctx: 主 key :// 键-Arg:无 开始时间:1449693038 超时:300(秒) 验证返回码:0(ok)

或者,您可以使用 symantec 之类的网站查询证书,看看是否满足 TLS1.2、足够强的 key 和前向保密的要求。

另外,您可以尝试打开 CFNetwork 诊断日志记录。编辑 Xcode 方案并添加 CFNETWORK_DIAGNOSTICS 环境变量。将日志记录级别设置为最详细的 3:

Xcode 控制台显示日志文件的位置:

CFNetwork diagnostics log file created at: /private/var/mobile/Containers/
Data/Application/A3421F00-451A-CD70-1B82-B163D1A3BB0F/Library/Logs/
CrashReporter/CFNetwork_com.sample.app_118.nwlrb.log

您可以查看这些日志,看看是否有更多信息说明网络调用失败的原因。

关于ios - 无法使用 HTTPS 连接到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37852829/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap