Cómo habilitar TLS 1.2 en Windows para una mejor seguridad
Todo esto de TLS 1.2 a veces es un poco engorroso. Si trabajas con versiones antiguas de Windows o intentas asegurar la seguridad de tus aplicaciones y las comunicaciones con el servidor, no siempre es sencillo. Básicamente, la mayoría de los sistemas Windows modernos (como 10, 11, Server 2016/2019/2022) vienen con TLS 1.2 habilitado por defecto, lo cual es positivo. Pero si usas versiones antiguas como Windows 7 o Server 2008, tendrás que hacer un poco más de trabajo: instalar actualizaciones, ajustar la configuración del registro y reiniciar. Y en algunas configuraciones, parece que Windows lo hace más confuso de lo necesario, especialmente si intentas proteger aplicaciones como Outlook o PowerShell que dependen de estos protocolos. Esta guía te explicará lo que debes hacer, incluyendo trucos para el registro y comandos de PowerShell, para que puedas habilitar TLS 1.2 por completo y que funcione sin errores.
Cómo solucionar la compatibilidad con TLS 1.2 en Windows 7 y Server 2008 R2
Asegúrese de que Windows esté actualizado e instale las actualizaciones necesarias
- En primer lugar, comprueba que tienes instalado el Service Pack 1 en Windows 7. Puedes comprobarlo yendo a Panel de control > Sistema y seguridad > Sistema.
- Luego, descargue la actualización KB3140245 del Catálogo de Microsoft Update. Es un parche crucial necesario antes de habilitar TLS 1.2 en estos sistemas operativos antiguos.
- Después de instalarlo, descargue MicrosoftEasyFix51044.msi. Este archivo agrega entradas de registro que activan la compatibilidad con TLS 1.2 para Windows 7/2008R2/2012. A veces, estas actualizaciones por sí solas no habilitan completamente TLS 1.2 en todas las aplicaciones; por eso, se incluyen las modificaciones de registro a continuación.
- Una vez instalado todo, reinicia el equipo. Sí, es necesario reiniciar para que todos estos cambios en el registro surtan efecto.
En algunas configuraciones, la actualización no siempre se instala a la primera, o puede que tengas que realizar los ajustes del registro manualmente. Pero si ves errores como que Outlook no se conecta o errores de SSL en tus navegadores, estos pasos suelen solucionarlo.
Habilitar manualmente TLS 1.2 mediante ajustes del registro
Esta es la parte fundamental: editar el registro para indicarle a Windows que use TLS 1.2 por defecto. Es importante porque las aplicaciones y los componentes del sistema, como WinHTTP, dependen de esta configuración para gestionar conexiones seguras.
- Abra el Editor del Registro presionando Win + Ry escribiendo
regedit. - Vaya a HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\
- Crea dos nuevas claves si no existen: Cliente y Servidor.
- Dentro de ambos, agregue estos valores DWORD (32 bits):
- Deshabilitado por defecto = 0
- Habilitado = 1
Esto le indica a Windows que permita TLS 1.2 tanto como predeterminado (lado del cliente) como para las conexiones del servidor.
Ahora, para que las aplicaciones WinHTTP (como PowerShell o algunos navegadores antiguos) usen TLS 1.2 explícitamente, debe agregar un DWORD de registro llamado DefaultSecureProtocols con el valor 0x00000A00en HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp. Si usa un equipo de 64 bits, repita este proceso en HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp.
Los diferentes valores para DefaultSecureProtocols son un poco confusos, pero aquí están bien:
0x00000A0– permite solo SSL 3.0 y TLS 1.0 (no es lo que quieres)0x0000AA0– permite TLS 1.1 y 1.2 además de SSL 3.0 y TLS 1.00x00000A00– solo permite TLS 1.1 y 1.20x00000800– Solo TLS 1.2; esto es lo que quieres ahora
Script de PowerShell para automatizar los cambios del registro
Porque, claro, la edición manual del registro puede ser tediosa y propensa a errores tipográficos. Alguien creó un script de PowerShell que crea todas las entradas necesarias:
$reg32bWinHttp = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp" $reg64bWinHttp = "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp" $regWinHttpDefault = "DefaultSecureProtocols" $regWinHttpValue = "0x00000800" $regTLS12Client = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" $regTLS12Server = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" $regTLSDefault = "DisabledByDefault" $regTLSValue = "0x00000000" $regTLSEnabled = "Enabled" $regTLSEnableValue = "0x00000001" # Create registry keys and set values New-ItemProperty -Path $reg32bWinHttp -Name $regWinHttpDefault -Value $regWinHttpValue -PropertyType DWORD New-ItemProperty -Path $reg64bWinHttp -Name $regWinHttpDefault -Value $regWinHttpValue -PropertyType DWORD New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2" -Force New-Item -Path $regTLS12Client -Force New-Item -Path $regTLS12Server -Force New-ItemProperty -Path $regTLS12Client -Name $regTLSDefault -Value $regTLSValue -PropertyType DWORD New-ItemProperty -Path $regTLS12Client -Name $regTLSEnabled -Value $regTLSEnableValue -PropertyType DWORD New-ItemProperty -Path $regTLS12Server -Name $regTLSDefault -Value $regTLSValue -PropertyType DWORD New-ItemProperty -Path $regTLS12Server -Name $regTLSEnabled -Value $regTLSEnableValue -PropertyType DWORD
Ejecútelo en una ventana de administración de PowerShell; después, es imprescindible reiniciar. Esto activa TLS 1.2 para la mayoría de las aplicaciones que utilizan WinHTTP.
Habilitación de TLS 1.2 para aplicaciones. NET
Sí, habilitar el registro en Windows no es suficiente. Muchas aplicaciones (como PowerShell o Outlook) se basan en. NET Framework; también necesitan ajustes del registro para usar TLS 1.2. Para versiones anteriores de. NET (como 2.0 o 3.5), deberá configurar estos valores:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727] "SystemDefaultTlsVersions"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727] "SystemDefaultTlsVersions"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727] "SchUseStrongCrypto"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727] "SchUseStrongCrypto"=dword:00000001
Para versiones más nuevas de. NET (como 4.x), haga lo mismo con:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319] "SystemDefaultTlsVersions"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319] "SystemDefaultTlsVersions"=dword:00000001
Para. NET 4.6 o superior, asegúrese de que la entrada de registro SchUseStrongCrypto también esté establecida en 1. Esto permite que PowerShell se conecte a repositorios como PSGallery sin errores, ya que ahora solo aceptan TLS 1.2+.
Sin estos ajustes, conectarse a algunos servicios seguros puede resultar bastante extraño, con errores como «No se puede descargar desde la URI» o «No se puede resolver el origen del paquete» en PowerShell. Porque, claro, PowerShell probó TLS 1.0 por defecto durante mucho tiempo.
Uso de una herramienta GUI: IISCrypto
Si editar el registro te parece demasiado tedioso, existe una herramienta gratuita llamada IISCrypto. Es una interfaz gráfica sencilla para habilitar o deshabilitar las versiones TLS y ajustar la configuración de Schannel. Simplemente marca o desmarca los protocolos que desees y pulsa «Aplicar».Nota: No activa la configuración de. NET ni WinHTTP específicamente, por lo que es posible que tengas que realizar las correcciones del registro correspondientes.
Resumen
Conseguir que TLS 1.2 funcione en Windows, especialmente en versiones anteriores, puede ser un poco complicado. Pero con las actualizaciones adecuadas, ajustes de registro y quizás un script rápido, suele ser posible. Sin embargo, vale la pena el esfuerzo, sobre todo si quieres que tus aplicaciones y servidores se mantengan seguros y compatibles con los protocolos modernos. Recuerda que, tras cambiar la configuración del registro, suele ser necesario reiniciar. Y para algunas cosas, como PowerShell, configurar las opciones de registro «engaña» a las aplicaciones para que admitan TLS 1.2, evitando así esos molestos errores de conexión.
Resumen
- Asegúrese de que su versión de Windows esté actualizada, especialmente KB3140245 para sistemas operativos más antiguos.
- Habilitar manualmente TLS 1.2 a través de claves de registro en Schannel
- Establezca DefaultSecureProtocols para aplicaciones WinHTTP para forzar TLS 1.2
- Utilice scripts de PowerShell para la automatización si es necesario
- Configurar. NET Framework para usar TLS 1.2 editando las entradas del registro
- Opcional: utilice IISCrypto para un enfoque basado en GUI