【发布时间】:2018-02-07 08:45:39
【问题描述】:
我正在我的 iOS 应用程序(用户的个人资料)中显示一个网站,其中包含购买某些服务的选项。通过在iframe 内打开第三方支付页面,即可在UIWebView 内完成购买。
尝试加载此支付页面时,向 webView:didFailLoadWithError: 委托方法发送 SSL 错误。
SSL 错误:
Error Domain=NSURLErrorDomain Code=-1200 \"发生 SSL 错误,无法与服务器建立安全连接。\" UserInfo={_kCFStreamErrorCodeKey=-9806, NSLocalizedRecoverySuggestion=您是否仍要连接到服务器?, NSUnderlyingError=0x610000255c90 {Error Domain=kCFErrorDomainCFNetwork Code=-1200 \"发生 SSL 错误,无法与服务器建立安全连接。\" UserInfo={NSErrorFailingURLStringKey=https://SOME-URL, NSLocalizedRecoverySuggestion=您要连接吗仍然到服务器?, _kCFNetworkCFStreamSSLErrorOriginalValue=-9806, _kCFStreamPropertySSLClientCertificateState=0, NSLocalizedDescription=发生 SSL 错误,无法与服务器建立安全连接。, _kCFStreamErrorDomainKey=3, NSErrorFailingURLKey=https://SOME-URL, _kCFStreamErrorCodeKey=-9806}} , NSLocalizedDescription=发生 SSL 错误,无法与服务器建立安全连接。, NSErrorFailingURLKey=https://SOME-URL, NSErrorFailingURLStringKey= https://SOME-URL, _kCFStreamErrorDomainKey=3}
我在浏览器中测试了这个 URL,发现它使用 TLSv1.2,所以我不明白问题出在哪里。
相同的 iframe 在 iOS Safari 和 Android 应用程序中按预期工作......
当我在 Info.plist 中禁用 ATS (NSAppTransportSecurity) 时,会显示付款页面,但我担心 Apple 不允许它是 AppStore(我不想这样做 - 这是一个付款页面,它应该是安全的)。
【问题讨论】:
-
您是如何验证 TLS v1.2 的?
-
如果您提供重现问题的 URL 可能会更容易。除此之外,问题可能不是 TLS 协议版本,而是提供的密码 - 浏览器和 uiwebview 之间可能不同
-
添加了付款网址。通过在我的 Mac 上从 FireFox 浏览到此 URL 来测试 TLS 版本并检查安全连接详细信息...
标签: ios ssl iframe uiwebview tls1.2