# Error SSL en solicitudes y respuestas HTTPS

> Soluciona «SSL Handshake Failed» y otros errores SSL en Proxyman. Comprueba que el certificado de Proxyman esté instalado y sea de confianza, y descarta el SSL pinning.

## 1. Problemas {#1-problems}

* No ves ningún tráfico HTTPS en la app de Proxyman.
* Recibes errores SSL en las solicitudes y respuestas HTTPS.
* Ves **SSL Handshake Failed** o **Possible Certificate Pinning** en el panel Response.

![Panel Response de Proxyman que muestra Client SSL Handshake Failed con el código de error -9806](https://proxyman.com/docs/assets/Screen%20Shot%202020-04-25%20at%2019.52.38.png)

## 2. Solución {#2-solution}

Un fallo en el handshake SSL puede deberse a muchas causas. Sigue los pasos que aparecen a continuación para encontrar el problema.

## 2.1 Dispositivos móviles {#21-mobile-devices}

### Dispositivo iOS {#ios-device}

* Sigue la [guía de configuración de iOS](https://proxyman.com/docs/es/debug-devices/ios-device) -> Asegúrate de haber instalado el certificado CA de Proxyman en tu dispositivo y de confiar en él.
* Si intentas interceptar apps populares (por ejemplo Facebook, Instagram, Apple, WhatsApp, ...): están protegidas por SSL pinning -> no es posible interceptarlas.
* Comprueba si tu app de iOS usa SSL pinning. Si es así, desactívalo.

### Simulador de iOS {#ios-simulator}

Sigue la [guía de configuración del simulador de iOS](https://proxyman.com/docs/es/debug-devices/ios-simulator) -> Asegúrate de haber instalado el certificado CA de Proxyman en el simulador y de confiar en él.

### Dispositivo Android {#android-device}

* Sigue la [guía de configuración de dispositivos Android](https://proxyman.com/docs/es/debug-devices/android-device) -> Asegúrate de haber instalado el certificado CA de Proxyman en tu dispositivo y de confiar en él.
* Comprueba que has completado el quinto paso (añade tu dominio a dos archivos: **res/xml/network\_security\_config.xml** y **AndroidManifest.xml**).
* Si intentas interceptar apps de Android que no son tuyas -> no es posible interceptarlas -> ❌

### Emulador de Android {#android-emulator}

* Sigue la [guía de configuración del emulador de Android](https://proxyman.com/docs/es/debug-devices/android-device/automatic-script-for-android-emulator) -> Asegúrate de haber instalado el certificado CA de Proxyman en el emulador y de confiar en él.
* Comprueba que has completado el quinto paso (añade tu dominio a dos archivos: **res/xml/network\_security\_config.xml** y **AndroidManifest.xml**).
* Si intentas interceptar apps de Android que no son tuyas -> no es posible interceptarlas -> ❌

### App de React Native {#react-native-app}

* Si tu app es de React Native, sigue la [guía de React Native](https://proxyman.com/docs/es/debug-devices/react-native).

### Flutter {#flutter}

* Sigue la [guía de configuración de Flutter](https://proxyman.com/docs/es/debug-devices/flutter).

¿Has probado y comprobado todos los pasos anteriores, pero sigues recibiendo errores SSL?

### Comprueba que puedes ver la solicitud/respuesta HTTPS de https://google.com sin errores {#verify-that-youre-able-to-see-https-requestresponse-from-httpsgooglecom-without-any-errors}

1. Ten a mano tu dispositivo.
2. Abre el navegador web (Safari en iOS o Google Chrome en Android).
3. Visita **https://google.com**
4. En Proxyman para macOS, haz clic con el botón derecho en la solicitud y selecciona **Enable SSL Proxying** para este dominio. Después, recarga la página.
5. Comprueba si puedes ver la respuesta HTTPS.

#### ✅ Éxito {#-success}

1. Puedes ver la respuesta HTTPS de https://google.com, lo que significa que has configurado bien el certificado ✅
2. El problema puede estar en tu app. Vuelve a probar con tus dominios o apps -> si el error SSL sigue apareciendo, lo más probable es que la app esté protegida por SSL pinning.
3. Si crees que no se trata de un caso de SSL pinning, abre un ticket en [GitHub](https://github.com/ProxymanApp/Proxyman/issues) (indica tu dispositivo, la versión del sistema operativo, el nombre de la app, etc.).

#### ❌ ¡Ha fallado! {#-failed}

* Es probable que el certificado de Proxyman no esté instalado o no sea de confianza en tu dispositivo. Vuelve a la sección [2.1 Dispositivos móviles](https://proxyman.com/docs/es/troubleshooting/get-ssl-error-from-https-request-and-response#21-mobile-devices) y sigue sus pasos.
* Si has hecho todo y el error SSL sigue apareciendo, abre un ticket en [GitHub](https://github.com/ProxymanApp/Proxyman/issues) (indica tu dispositivo, la versión del sistema operativo, el nombre de la app, etc.).

## 2.2 MacBook o PC con Windows {#22-macbook-or-windows-pc}

Recibo errores SSL desde:

* **Mac (MacBook, Mac mini, Mac Studio)** -> Instala y confía en el certificado en tu Mac -> Sigue la [guía de macOS](https://proxyman.com/docs/es/debug-devices/macos)
* **Windows** -> Instala y confía en el certificado en tu equipo con Windows -> Sigue la [guía de Windows](https://proxyman.com/docs/es/proxyman-windows/install-certificate)
* Java -> Sigue la [guía de la máquina virtual de Java](https://proxyman.com/docs/es/debug-devices/java)
* Firefox -> Sigue la [guía de Firefox](https://proxyman.com/docs/es/debug-devices/firefox)
* Python -> Sigue la [guía de Python](https://proxyman.com/docs/es/debug-devices/python)
* Ruby -> Sigue la [guía de Ruby](https://proxyman.com/docs/es/debug-devices/ruby)

> **Aviso:** Algunas bibliotecas de red (Ruby, NodeJS, Python, Golang) no confían en el certificado autofirmado de forma predeterminada. Debes indicarle a la biblioteca que confíe en el certificado.
>
> \=> Para solucionarlo, usa [Automatic Setup](https://proxyman.com/docs/es/automatic-setup/automatic-setup): abre **Setup** -> **Automatic Setup…** -> **Open New Terminal…** y ejecuta tu script en esa terminal. Así se configura la confianza del certificado para las bibliotecas compatibles de NodeJS, Python, Ruby y Golang. Para el resto de bibliotecas, busca **"\<Your framework/library> self-signed certificate"**.

## 2.3 ¿SSL pinning? {#23-ssl-pinning}

* Si sigues sin poder ver la respuesta HTTPS de tu app, es probable que esté protegida por [SSL pinning](https://en.wikipedia.org/wiki/HTTP_Public_Key_Pinning), lo que impide que las herramientas MitM vean el contenido. La mayoría de las apps populares (Facebook, Apple, Instagram, Messenger, etc.) lo usan.
* Desactiva temporalmente el **SSL pinning** en tu app y vuelve a intentarlo.

Lee más sobre el SSL pinning: [Cómo prevenir los ataques Man-in-the-Middle en iOS con SSL pinning](https://www.kodeco.com/1484288-preventing-man-in-the-middle-attacks-in-ios-with-ssl-pinning)

> **Nota:** ¿Has probado todo y aún no sabes qué está fallando? Abre un [ticket en GitHub](https://github.com/ProxymanApp/Proxyman/issues).
>
> Indica también: Proxyman para macOS/Windows, tu versión de Proxyman, tu dispositivo iOS/Android, etc.

## Vídeo {#video}

[Video: Captura tráfico HTTP y HTTPS con Proxyman](https://proxyman.com/videos/capture-http-https-traffic) (25 seconds)

## Más información {#learn-more}

* [¿Se puede evitar el SSL pinning?](https://proxyman.com/posts/2019-11-15-Can-we-bypass-ssl-pinning)
