Seguridad de la capa de transporte (TLS) 1.2

Usar la versión más reciente de Seguridad de la capa de transporte (TLS) es importante para asegurarse de que las comunicaciones de red de las aplicaciones son seguras.

Advertencia

Abril de 2018: debido a un aumento de los requisitos de seguridad, incluido el cumplimiento del estándar PCI, se espera que los principales proveedores de nube y los servidores web dejen de admitir versiones de TLS anteriores a la versión 1.2. Los proyectos de Xamarin creados en versiones anteriores de Visual Studio usan de forma predeterminada versiones anteriores de TLS.

Para asegurarse de que las aplicaciones siguen funcionando con estos servidores y servicios, debe actualizar los proyectos de Xamarin con la siguiente configuración y volver a compilar e implementar las aplicaciones en los usuarios.

Los proyectos deben hacer referencia al ensamblado System.Net.Http y deben configurarse como se muestra a continuación.

Actualización de Xamarin.Android a TLS 1.2

Actualice las opciones Implementación de HttpClient e Implementación de SSL/TLS para habilitar la seguridad de TLS 1.2.

Nota:

Se necesita Android 5.0 o una versión posterior.

Estas opciones de configuración se pueden encontrar en Propiedades del proyecto > Opciones de Android y, después, haciendo clic en el botón Opciones avanzadas:

Configurar HttpClient y TLS en Visual Studio para dispositivos Android.

Actualización de Xamarin.iOS a TLS 1.2

Actualice la opción Implementación de HttpClient para habilitar la seguridad de TLS 1.2.

Esta opción de configuración se puede encontrar en Propiedades del proyecto > Compilación de iOS:

Configurar HttpClient y TLS en Visual Studio para dispositivos iOS.

Actualización de Xamarin.Mac a TLS 1.2

En Visual Studio para Mac, para habilitar TLS 1.2 en una aplicación de Xamarin.Mac, actualice la opción Implementación de HttpClient en Opciones del proyecto > Compilar > Compilación para Mac:

Configurar HttpClient en Visual Studio para Mac

Advertencia

La próxima versión de Xamarin.Mac 4.8 solo será compatible con macOS 10.9 o versiones posteriores. Las versiones anteriores de Xamarin.Mac son compatibles con macOS 10.7 o versiones posteriores, pero estas versiones anteriores de macOS carecen de infraestructura TLS suficiente para admitir TLS 1.2. Para macOS 10.7 o Mac OS 10.8 de destino, use Xamarin.Mac 4.6 o una versión anterior.

Opciones de configuración alternativas

En esta sección se describen las alternativas a las configuraciones para admitir TLS 1.2 indicadas anteriormente. Los desarrolladores de aplicaciones solo deben tener en cuenta estas alternativas si comprenden los riesgos de usar distintos niveles de compatibilidad con TLS.

Implementación de HttpClient

Los desarrolladores de Xamarin siempre han podido usar las clases de redes nativas en su código, pero también hay una opción que determina qué pila de redes usan las clases HttpClient. Esto proporciona una API de .NET conocida que ofrece las ventajas de velocidad y seguridad de la plataforma nativa.

Las opciones son:

  • Pila administrada: la funcionalidad de red proporcionada por Mono.
  • Pila nativa: varias API de red proporcionadas por las plataformas subyacentes (Android, iOS o macOS).

La pila administrada proporciona el mayor nivel de compatibilidad con código .NET ya existente, pero puede ser más lenta y dar lugar a un tamaño de archivo ejecutable mayor.

Las opciones nativas pueden ser más rápidas y proporcionan mayor seguridad (incluido TLS 1.2), pero no ofrecen toda la funcionalidad y las opciones de la clase HttpClient.

Implementación de SSL/TLS (Android)

Las opciones de los proyectos de Android también le permiten elegir la implementación de SSL/TLS que quiere admitir:

  • Mono/Administrada: TLS 1.1 en Android
  • Nativa: TLS 1.2 en Android

Los nuevos proyectos de Xamarin tienen como valor predeterminado la implementación nativa que admite TLS 1.2 (recomendado para todos los proyectos), pero puede volver al código administrado si es necesario por motivos de compatibilidad.

Importante

La opción Mono/Administrada se ha quitado de iOS y Mac en las opciones del proyecto.

La opción Nativa siempre se usa en plataformas iOS y Mac.

Detalles específicos de la plataforma

En el resumen anterior se explica la configuración a nivel de proyecto para la implementación de HttpClient y SSL/TLS en proyectos de Xamarin. La implementación de HttpClient también se puede establecer dinámicamente en el código. Consulte estas guías específicas de la plataforma para obtener más información:

Resumen

Las aplicaciones deben usar la seguridad de la capa de transporte (TLS) 1.2 siempre que sea posible. Debe actualizar la configuración en las aplicaciones existentes según las instrucciones de este artículo y volver a compilar e implementar las aplicaciones en los clientes.