Estoy recibiendo algunos SSL Errors (que son causantes de mi proyecto para que deje de colgar/sin caída, ya que tengo un DispatchGroup la espera de la solicitud), que no sé cómo son causados, lo que son, o qué hacer al respecto.

He leído muchas páginas aproximadamente acerca de este problema, pero no hay mucha documentación o personas que tienen el mismo problema. He intentado cambio de la información.plist pero que no parecen haber ayudado. Ambos plist‘s tener este aspecto: (accounts.spotify.com es el dominio de la URL de acceso a la solicitud de token)

SSL_ERROR_SSL(1): error en la operación dentro de la biblioteca

Puedo ver que mi código está fallando cuando puedo presentar una solicitud para el servidor. (Esto es en mi marco). Como se mencionó anteriormente, tengo una DispatchGroup de espera para esta solicitud, pero el código se detiene.

self.currentToken = try self.spotifyRequest("https://accounts.spotify.com/api/token", method: .post, parameters: parameters)

Mi método de solicitud:

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
    }
}

No estoy exactamente seguro de lo que causó el problema, porque todo lo que hice fue ligeramente editar y archivar el marco de nuevo.

Sin embargo, anteriormente se trabajó en tanto (como yo lo estoy usando este marco universal de secuencia de comandos)

Aquí está mi registro de bloqueo (que yo no puedo entender de ninguna de!):

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): error en la operación dentro de la biblioteca

2018-08-18 21:36:45.748123+0100 Songvote[4854:1517160] [BoringSSL] boringssl_session_handshake_error_print(205) [C2.1:2][0x107d7c600] 4427428040:error:100000d7:SSL routines:OPENSSL_internal:SSL_HANDSHAKE_FAILURE:/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): error en la operación dentro de la biblioteca

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 routines:OPENSSL_internal:SSL_HANDSHAKE_FAILURE:/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): error en la operación dentro de la biblioteca

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 routines:OPENSSL_internal:SSL_HANDSHAKE_FAILURE:/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): error en la operación dentro de la biblioteca

2018-08-18 21:36:45.754796+0100 Songvote[4854:1517160] [BoringSSL] boringssl_session_handshake_error_print(205) [C2.1:2][0x107d7c600] 4427428040:error:100000d7:SSL routines:OPENSSL_internal:SSL_HANDSHAKE_FAILURE:/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] obtener la salida de marcos de error, el estado de 8196

2018-08-18 21:38:43.427656+0100 Songvote[4854:1517503] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C1.1:2][0x107e1b4c0] obtener la salida de marcos de error, el estado de 8196

2018-08-18 21:38:43.429723+0100 Songvote[4854:1517503] TIC Leer el Estado [1:0 x 0]: 1:57

2018-08-18 21:38:43.429976+0100 Songvote[4854:1517503] TIC Leer el Estado [1:0 x 0]: 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] obtener la salida de marcos de error, el estado de 8196

2018-08-18 21:38:46.008664+0100 Songvote[4854:1517503] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C2.1:2][0x107d7c600] obtener la salida de marcos de error, el estado de 8196

2018-08-18 21:38:46.010037+0100 Songvote[4854:1517503] TIC Leer el Estado [2:0 x 0]: 1:57

2018-08-18 21:38:46.010215+0100 Songvote[4854:1517503] TIC Leer el Estado [2:0 x 0]: 1:57

SSL_ERROR_SSL(1): error en la operación dentro de la biblioteca

Todo esto es para un Spotify solicitud a través de Alamofire que había trabajado anteriormente y ahora misteriosamente no. No funciona en mi dispositivo O el simulador.

Se trata de un problema relativo a conexiones seguras? O es otro problema?

Algunos enlaces a lo que he mirado:

Ediciones:

Se trata de un problema en los servidores de Spotify? O un error en Xcode 10? Moví mis marco .swift archivos de mi proyecto, y aún así obtener los registros.

También tengo estos errores antes de que mi solicitud, extraño 🤔.

Esto es lo que un apretón de manos es error, pero yo no hago ninguna configuración de este:

El protocolo de enlace SSL se inicia cuando su navegador de problemas de una conexión segura solicitud a un servidor Web. El servidor envía una clave pública a su equipo, y el equipo comprueba el certificado contra una conocida lista de autoridades de certificación. … Prueba de su funcionalidad SSL por que causen intencionalmente el apretón de manos a fallar.

Incluso he intentado pagar en una versión anterior para revertir todos los cambios (que trabajó definitivamente completamente bien en versiones anteriores), utilizando git, que no tuvo ningún efecto sobre este.


Edit: La solución temporal:

Parece como si iOS 12 ya no funciona con estos requerimientos de la red. He enviado un informe de errores a Apple hace 2 días, así que espero que se arregle esto pronto. Así que, ¿qué puedo hacer?

Bueno, por ahora, mi iPhone 7 es inútil como estoy en iOS 12 beta. Así que la única opción por ahora es ejecutar mi proyecto en el simulador. Para hacer esto (como si usted está en Xcode 10 beta porque los simuladores son iOS 12), ir a Xcode -> Preferences -> Components -> iOS 11.4 Simulator y luego descargarlo. Ahora, cuando usted seleccione un simulador, seleccione los que dicen iOS 11.4.

  • Esta parte no es cierto.

Lo que provoca esto?

Aunque este error no debería efecto de nada, es causada cuando se ejecuta el proyecto en iOS 12. Hasta donde yo sé, esto NO es un problema de seguridad. Sin embargo, mi problema de mi código no se ejecuta fue causado por un bloqueo en lugar de lo que yo pensaba que era porque de este error.

Actualización: Lo que Apple ha hecho acerca de mi informe de error

Bien, aunque no he recibido un mensaje o cualquier cosa de Apple, el informe está marcado como un «duplicado» como alguien había informado de esto antes de que me. Si puedo obtener información acerca de cuándo va a ser fijo, voy a actualizar aquí.


Si usted tiene cualesquiera preguntas, consejos o sugerencias, por favor hágamelo saber! Gracias de antemano!

  • Estoy experimentando el mismo problema. Mi aplicación funcionaba bien con iOS <= 11 y Xcode 9. Después de los informes de bloqueo en iOS 12, me decidí a entrar Xcode 10 y trate de ejecutar la aplicación en un simulador de dispositivo con iOS 12 y esto es exactamente lo que está sucediendo. La aplicación no puede hacer cualquier solicitud para el servidor utilizando HTTPS.
  • Me alegro de que no sólo para mí! Yo soy también de la conexión a https, así AppTransportSecurity configuración probablemente no va a hacer una diferencia como debe ser un muy seguro de la red (teniendo en cuenta que me estoy conectando a dos grandes empresas, Spotify y Google's Firebase).
  • También es frustrante que Apple no admite una manera fácil de Swift hacia atrás la compatibilidad de lo contrario me gustaría crear mi todo el proyecto en Xcode 9 por ahora en su lugar. Sin embargo, la mayoría de las líneas de código que necesita ser cambiado, porque todo sigue en desuso. No me quiero gastar un montón de tiempo de rehacer mi proyecto para una más vieja versión de Xcode, hasta yo sé que es casi seguro que el problema es Xcode sí mismo más bien que lo que mis peticiones conectar.
  • Me siento de ti. Nuevo Swift versiones, dos veces al año. Yo, así, se encontró una gran cantidad de emitir informes sobre SSL fallos en iOS 12 beta 2. Me gustaría imaginar que el tema en cuestión se limita a la de iOS 12 beta 7 que se viven actualmente. Estoy literalmente de ideas sobre cómo solucionar este problema. Parece que OS falla no podemos controlar.
  • Si se puede, se debe iniciar un chat de estos comentarios, como no va a ser mucho 😂
  • He presentado un informe de error acerca de esto hace 2 días, pero conociendo a Apple, que probablemente va a regresar en una semana y decir «no podemos volver a crear el problema, por favor proporcione más información» gusta la forma en que siempre ignoran los errores graves.
  • Corrió algunos más pruebas rápidas. La aplicación funciona bien en iOS 11.4.1 (iPhone 8 real del dispositivo, el iPhone simulator X), incluso cuando se construyó con Xcode 10. iOS 12 es la única causa del problema.
  • A la derecha, que es interesante, para mí ni siquiera puedo construir mi proyecto con mi marcos, (otro problema), pero mi proyecto no funciona en mi dispositivo tengo iOS 12 beta
  • Permítanos continuar esta discusión en el chat.
  • Compruebe la discusión de chat
  • También me extrañas problemas de red con iOS 12 beta con algunos (no todos) de la prueba de iPhones. En iOS 12 simulador de Xcode 10 beta6 la solicitud de la red estaba funcionando bien en nuestra aplicación. Sin embargo, en un medio físico iPhone 7 dispositivo (iOS 12 beta12) la red de error de solicitud – respuesta. El uso de un iOS 11 prueba del dispositivo iPhone con la misma app, la misma petición se trabajó, también. También funciona en iOS 11 Simulador. Resultó que yo tenía que hacer un completo erease en nuestro iOS 12 beta12 prueba de iPhone. Después del borrado completo me encontré con la misma aplicación en Xcode 10 en el recién instalado en el iPhone y funcionó.
  • Así fue su iOS 12 corruptos, entonces? Que era un problema extraño…
  • No corrompida, sino algún tipo de pegado un certificado caducado tal vez (?) Esto explica muchas cosas: stackoverflow.com/a/38235622/7343596
  • Apple ha vuelto a usted sobre este tema @George_E_2 o has encontrado una solución más sostenible? Estoy teniendo el mismo problema con el nativo de URLSession.compartida.dataTask. Lo que es raro es que no se puede hacer una primera llamada que se ejecuta normalmente, pero si oprimo el botón de nuevo (el desencadenamiento de una nueva llamada a la API), que es donde se produce el interbloqueo y la completionHandler nunca se llama. (Estoy usando Google API de datos de YouTube (v3) por lo que vale).
  • Ellos nunca volvieron a mí por medio de un mensaje, sin embargo, se han marcado mi informe como un duplicado para que sean conscientes de la cuestión. Esperemos que ordenar el problema pronto. También, el estancamiento en mi código fue causado por los hilos de bloqueo. Esta «advertencia» no debería tener efecto cualquier cosa, incluyendo a usted URLSession. Usted debe tener un problema de lógica en el código como originalmente lo hizo.
  • gracias por volver a mí. Yo, de hecho, había algo extraño está sucediendo con mi indicador de actividad de que estaba empezando a ignorar eventos de toque, pero no se detiene a ignorar más adelante. La app parecía congelado y yo estaba investigando en la dirección equivocada. Gracias por la actualización de la advertencia, espero que se solucione pronto también 😉
  • Tengo exactamente este mismo problema. Nuestra aplicación funciona completamente bien hasta iOS 12 hace un par de días, y ahora estamos recibiendo una cadena de errores, y causando que nuestra aplicación completamente de interbloqueo. ¿Solucionar este problema? Ver mi último post. Morir por una solución: stackoverflow.com/questions/52565371/…
  • Un buen montón de personas que están teniendo este problema. Ver el fondo de mi pregunta en el negrita títulos, pero brevemente, la advertencia no debería tener efecto en su código. Para mí, llegué a un punto muerto debido a la mala administración de los subprocesos.
  • Wow @George_E_2…tienes toda la razón. Tan pronto como me muevo de mi intento de conectarse a la base de datos de AppDelegate, soy capaz de conectar con normalidad, sin errores en la consola. Alguna idea de por qué esto es/¿por qué iOS 12 cambiado esto?
  • Ni idea. Debe ser un bug, y sospecho que el iphone (y ipad) tiene una capa menos de internet de la protección de seguridad. El tiempo dirá lo que falla de seguridad es, o Apple se acaba de secreto parche de seguridad.

InformationsquelleAutor George_E | 2018-08-18

2 Comentarios

  1. 15

    Interbloqueo

    Supongo spotifyRequest será llamado en el hilo principal.

    Así que si el hilo principal llega a la línea de

    group.wait()

    y esta línea de responseJSON completionHandler no fue llamado aún:

    group.leave()

    a continuación, el hilo principal está bloqueado debido a la llamada de grupo.wait() de arriba.
    Debido a bloqueado el hilo principal del grupo.salir() no puede ser llamado. Clásico de interbloqueo.

    Verfication

    Establecer un punto de interrupción de la línea de

    if let safeStatus = status {

    muestra de que esta línea no se llama nunca.

    Ejemplo mínimo que se está ejecutando

    Como un punto de partida aquí el código de un ejemplo minimalista que ofrece un resultado.

    import UIKit
    import Alamofire
    
    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            self.contactSpotify {
                print ("result: \(String(describing: $0)) error: \(String(describing: $1))")
            }
        }
    
        func contactSpotify(completion: @escaping ([String: Any]?, Error?) -> Void) {
            let url = URL(string: "https://accounts.spotify.com/api/token")!
            Alamofire.request(url,
                              method: .post,
                              parameters: ["grant_type": "refresh_token",
                                           "client_id": "<someClientId>",
                                           "refresh_token": "<someRefreshToken>",
                                           "client_secret": "<someClientSecret>"])
                .validate()
                .responseJSON { response in
                    guard response.result.isSuccess else {
                        completion(nil, response.result.error)
                        return
                    }
    
                    completion(response.result.value as? [String: Any], nil)
            }
        }
    
    }

    Esto da como resultado en la consola:

    result: Optional(["access_token": XXX, "scope": user-read-email user-read-private, "token_type": Bearer, "expires_in": 3600]) error: nil

    ver Captura de pantalla:
    SSL_ERROR_SSL(1): error en la operación dentro de la biblioteca

    ATS Ajustes en la información.plist

    Spotify ofrece un certificado TLS válido de la cadena en su servidor. Así que no hay necesidad de eta ajustes en la información.plist.

    SSL Advertencias en la Consola de

    Tengo la misma SSL advertencias en la consola cuando ejecuto la aplicación en iOS 12 simulador como usted. No obstante, se establece la conexión y la solicitud de entrega de datos. Tal vez esto se ha ido en una de las próximas betas.

    • Me di cuenta de que tenía un punto muerto después de que… estoy arreglando ahora mismo en realidad. Pero esta es la respuesta correcta, las advertencias fueron sólo debido a iOS 12
    • Que también es un muy bien detallado respuesta así 🙂
    • Sé que ha pasado un tiempo, pero sólo por curiosidad, ¿por qué la elección de envío grupos de más de Promesas? (como BFTasks, o características observables como RxSwift) ¿Cuál fue el factor decisivo?
    • He abandonado esta app… de todos Modos, yo era muy nuevo para Alamofire y sin experiencia. Todavía me siento como yo no lo uso más. Pero no tengo idea de lo que Promete fueron, así que esta fue mi solución en el momento. El verdadero problema fue la devolución de un valor de forma sincrónica en una asincronía en el hilo, pero lo hice como que estaba tratando de hacer un marco para futuros proyectos.

Dejar respuesta

Please enter your comment!
Please enter your name here