【发布时间】:2019-01-25 12:01:08
【问题描述】:
我收到了一些 SSL Errors(这导致我的项目停止/挂起而没有崩溃,因为我有一个 DispatchGroup 等待请求),我不知道它们是如何引起的,它们是什么是,或者如何处理它。
我已经大致阅读了很多关于这个问题的页面,但是没有太多文档或遇到同样问题的人。我试过changing the info.plist 但这似乎没有帮助。两个plist 看起来都是这样的:(accounts.spotify.com 是访问令牌请求的 URL 的域)
当我向服务器发出请求时,我可以看到我的代码失败了。 (这是在我的框架中)。如前所述,我有一个DispatchGroup 等待此请求,但代码停止。
self.currentToken = try self.spotifyRequest("https://accounts.spotify.com/api/token", method: .post, parameters: parameters)
我的请求方式:
private func spotifyRequest(_ url: URLConvertible, method: HTTPMethod, parameters: Parameters? = nil, headers: HTTPHeaders? = nil) throws -> JSONStandard {
// Create a dispatch group to handle threads
let group = DispatchGroup()
group.enter()
// Status of the request (starts as nil)
var status: JSONStandard?
DispatchQueue.global(qos: .userInitiated).async {
Alamofire.request(url, method: method, parameters: parameters, headers: headers).responseJSON(completionHandler: { response in
// Check if response is valid
if let requestResponse = response.result.value as? JSONStandard {
status = requestResponse
} else {
status = nil
}
// Let the next tasks be completed, it has finished waiting for the request
group.leave()
})
}
// Wait for a result
group.wait()
// Return value or throw an error
if let safeStatus = status {
return safeStatus
} else {
getAccessToken()
throw SpotifyError.failedToCompleteRequest
}
}
我不确定是什么导致了问题,因为我所做的只是稍微编辑并再次归档框架。
但是,之前它对两者都有效(因为我使用的是this universal framework script)
这是我的崩溃日志(我什么都看不懂!):
2018-08-18 21:36:45.747984+0100 Songvote[4854:1517160] [BoringSSL]boringssl_session_errorlog(224) [C2.1:2][0x107d7c600] [boringssl_session_read] SSL_ERROR_SSL(1):操作失败图书馆
2018-08-18 21:36:45.748123+0100 Songvote[4854:1517160] [BoringSSL]boringssl_session_handshake_error_print(205) [C2.1:2][0x107d7c600] 4427428040:错误:100000d7:SSL_HANDS 例程:OPENFAILUREH :/BuildRoot/Library/Caches/com.apple.xbs/Sources/boringssl/boringssl-109.200.32/ssl/ssl_lib.cc:1081:
2018-08-18 21:36:45.748238+0100 Songvote[4854:1517160] [BoringSSL]boringssl_session_errorlog(224) [C2.1:2][0x107d7c600] [boringssl_session_read] SSL_ERROR_SSL(1):操作失败图书馆
2018-08-18 21:36:45.748432+0100 Songvote[4854:1517160] [BoringSSL]boringssl_session_handshake_error_print(205) [C2.1:2][0x107d7c600] 4427428040:error:100000d7:SSL_HANDS 例程:OPENFAILUREH :/BuildRoot/Library/Caches/com.apple.xbs/Sources/boringssl/boringssl-109.200.32/ssl/ssl_lib.cc:1081:
2018-08-18 21:36:45.754554+0100 Songvote[4854:1517160] [BoringSSL]boringssl_session_errorlog(224) [C2.1:2][0x107d7c600] [boringssl_session_read] SSL_ERROR_SSL(1):操作失败图书馆
2018-08-18 21:36:45.754640+0100 Songvote[4854:1517160] [BoringSSL]boringssl_session_handshake_error_print(205) [C2.1:2][0x107d7c600] 4427428040:error:100000d7:SSL_HANDSroutines:OPENFAILUREH :/BuildRoot/Library/Caches/com.apple.xbs/Sources/boringssl/boringssl-109.200.32/ssl/ssl_lib.cc:1081:
2018-08-18 21:36:45.754717+0100 Songvote[4854:1517160] [BoringSSL]boringssl_session_errorlog(224) [C2.1:2][0x107d7c600] [boringssl_session_read] SSL_ERROR_SSL(1):操作失败图书馆
2018-08-18 21:36:45.754796+0100 Songvote[4854:1517160] [BoringSSL]boringssl_session_handshake_error_print(205) [C2.1:2][0x107d7c600] 4427428040:错误:100000d7:SSL_HANDS 例程:OPENFAILUREH :/BuildRoot/Library/Caches/com.apple.xbs/Sources/boringssl/boringssl-109.200.32/ssl/ssl_lib.cc:1081:
2018-08-18 21:38:43.427156+0100 Songvote[4854:1517503] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C1.1:2][0x107e1b4c0] 获取输出帧失败,状态 8196
2018-08-18 21:38:43.427656+0100 Songvote[4854:1517503] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C1.1:2][0x107e1b4c0] 获取输出帧失败,状态 8196
2018-08-18 21:38:43.429723+0100 Songvote[4854:1517503] TIC 读取状态 [1:0x0]: 1:57
2018-08-18 21:38:43.429976+0100 Songvote[4854:1517503] TIC 读取状态 [1:0x0]: 1:57
2018-08-18 21:38:46.008365+0100 Songvote[4854:1517503] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C2.1:2][0x107d7c600] 获取输出帧失败,状态 8196
2018-08-18 21:38:46.008664+0100 Songvote[4854:1517503] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C2.1:2][0x107d7c600] 获取输出帧失败,状态 8196
2018-08-18 21:38:46.010037+0100 Songvote[4854:1517503] TIC 读取状态 [2:0x0]: 1:57
2018-08-18 21:38:46.010215+0100 Songvote[4854:1517503] TIC 读取状态 [2:0x0]: 1:57
这都是通过Alamofire 发出的Spotify 请求,该请求以前有效,但现在神秘地无效。它不适用于我的设备或模拟器。
这是与安全互联网连接有关的问题吗?或者这是另一个问题?
我看过的一些链接:
- https://github.com/AFNetworking/AFNetworking/issues/3999
- NSURLSession "HTTP load failed kCFStreamErrorDomainSSL, -9813 ; Self signing certificate
- https://forums.developer.apple.com/thread/79025
- https://forums.developer.apple.com/thread/14221
- iOS 9.3 : An SSL error has occurred and a secure connection to the server cannot be made
- iOS9 getting error “an ssl error has occurred and a secure connection to the server cannot be made”
编辑:
这是 Spotify 服务器的问题吗?还是 Xcode 10 中的错误?我将我的框架 .swift 文件移动到我的项目中,但仍然可以获取日志。
我在请求之前也收到了这些错误,奇怪 ????。
这是握手错误,但我没有对此进行任何配置:
当您的浏览器向 Web 服务器发出安全连接请求时,将启动 SSL 握手。服务器将公钥发送到您的计算机,您的计算机将根据已知的证书颁发机构列表检查证书。 ...通过故意导致握手失败来测试您的 SSL 功能。
我什至尝试使用git 对早期版本进行结帐以撤消所有更改(在早期版本中绝对可以正常工作),这对此没有任何影响。
编辑:临时解决方案:
iOS 12 似乎不再适用于这些网络请求。两天前我向 Apple 发送了错误报告,因此希望他们能尽快修复此问题。那我做了什么?
好吧,现在我的 iPhone 7 没用,因为我在 iOS 12 测试版上。所以目前唯一的选择是在模拟器上运行我的项目。为此(就像您在 Xcode 10 测试版中一样,因为模拟器是 iOS 12),请转到 Xcode -> Preferences -> Components -> iOS 11.4 Simulator 然后下载它。现在,当您选择模拟器时,请选择带有iOS 11.4 的模拟器。
- 这部分不再正确。
是什么原因造成的?
虽然此错误不会影响任何事情,但它是在您在 iOS 12 中运行项目时引起的。据我所知,这不是安全问题。但是,我的代码没有运行的问题是由死锁引起的,而不是我认为是因为这个错误。
更新:Apple 对我的错误报告做了什么
好吧,虽然我没有收到来自 Apple 的消息或任何内容,但该报告被标记为“重复”,因为其他人在我之前报告了这件事。如果我得到任何关于何时修复的信息,我会在这里更新。
如果您有任何问题、提示或建议,请告诉我!提前致谢!
【问题讨论】:
-
我遇到了同样的问题。我的应用程序在 iOS
-
@Travo 很高兴不仅仅是我!我还连接到
https,所以AppTransportSecurity设置可能不会有什么不同,因为它应该是一个非常安全的网络(考虑到我连接到两个大型公司,Spotify和Google's Firebase)。跨度> -
我感觉到你了。新的 Swift 版本,一年两次。我还发现了很多关于 iOS 12 beta 2 中 SSL 故障的问题报告。我很想想象手头的问题仅限于当前发布的 iOS 12 beta 7。我真的不知道如何解决这个问题。这似乎是我们无法控制的操作系统故障。
-
我遇到了同样的问题。几天前,我们的应用程序在 iOS 12 之前一直运行良好,但现在我们遇到了一系列错误,这导致我们的应用程序完全死锁。你解决了这个问题吗?看我最新的帖子。渴望解决方案:stackoverflow.com/questions/52565371/…
-
哇@George_E_2...你完全正确。一旦我尝试将连接到数据库的尝试移出 AppDelegate,我就可以再次正常连接,而不会在控制台中出现错误。知道为什么会这样/为什么 iOS 12 会改变这一点吗?
标签: ios swift alamofire spotify boringssl