Millones de ficheros de 4 KB bloquean tu servidor: se multiplican en C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\Microsoft\Crypto\RSA
, no se dejan borrar y amenazan con saturar el disco. Esta guía explica qué son, por qué se acumulan y cómo eliminarlos sin romper nada.
Entendiendo la carpeta RSA en el perfil LocalService
La carpeta pertenece al perfil interno LocalService, una cuenta que Windows usa para ejecutar numerosos servicios con privilegios limitados. Dentro de …\Microsoft\Crypto\RSA
se almacenan contenedores de clave privada creados por la pila criptográfica del sistema (CryptoAPI o CNG). Cada archivo —identificado por un GUID y la extensión .tmp
, .prv
o sin extensión— encapsula:
- El par de claves RSA (pública y privada).
- Los metadatos que le asignan un proveedor criptográfico.
- La ACL que liga el contenedor al proceso que lo creó.
En condiciones normales son pocos y efímeros: nacen cuando un proceso necesita firmar o descifrar y mueren cuando la clave deja de ser útil.
Mecanismo de creación de los contenedores
Al servir un sitio HTTPS en IIS, negociar TLS con RDP, validar firmas de código o levantar túneles VPN, Windows solicita claves temporales a través de CryptAcquireContext o NCryptCreatePersistedKey. Si el llamador pide contenedor “new key set”, el motor crea un sub‑archivo en la carpeta RSA del perfil que ejecute el proceso:
C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\Microsoft\Crypto\RSA\{6a56…-…-…}
Los atributos principales del archivo son:
Atributo | Propósito |
---|---|
Nombre (GUID) | Evitar colisiones entre procesos concurrentes. |
Tamaño ≈ 4 KB | Suficiente para contener claves RSA ≤ 4096 bits y metadatos. |
Propietario = SID del proceso | Impide que otros servicios accedan a la clave. |
Por qué una carpeta criptográfica se vuelve infinita
Cuando aparecen cientos de miles o millones de contenedores, casi siempre hay un bucle de creación sin reciclaje. Los escenarios más comunes son:
Servicios que generan certificados efímeros. Ciertos proxies SSL, antivirus con inspección TLS o agentes de escucha de Kubernetes emiten nuevos certificados en caliente y descuidan la limpieza.
Aplicaciones que usan run‑as o perfiles desechables. Cada instancia levanta un perfil temporal; al cerrarse, el perfil se elimina y con él la referencia al contenedor, que pasa a estar “huérfano”.
Errores tras actualizaciones. Un parche de Windows o del proveedor introduce un cambio en CNG; los servicios crean la clave pero fallan al registrarla, dejando el archivo atrás.
Riesgos de eliminar sin un plan
- Interrupción de TLS. IIS, WinRM o RDP podrían no encontrar su clave y rechazar conexiones.
- Fallos de arranque. Servicios firmados digitalmente que verifican su propia firma necesitan la clave aún montada.
- Pérdida de datos cifrados. Si la clave se usó para cifrar tokens o archivos, estos quedarán ilegibles.
Por eso primero hay que identificar qué claves están “abandonadas” y cuáles siguen vivas.
Diagnóstico: quién está llenando la carpeta y por qué
Process Monitor en modo traza ligera
1. Descarga Process Monitor y crea un filtro:
Path contains Crypto\RSA → Include
2. Reinicia el servicio sospechoso y observa qué ejecutable abre archivos nuevos. Apunta el PID y la ruta.
Visor de eventos
- Schannel / System. Errores de certificado o negociaciones fallidas indican bucles TLS.
- CAPI2 / Microsoft‑Windows‑Crypto‑API. Entradas 4112 y 5125 revelan fallos al persistir contenedores.
- KeyIso / Service. Alertas 272 y 275 indican claves no limpias.
Scripts de PowerShell para cuantificar el problema
$path = 'C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\Microsoft\Crypto\RSA'
$items = Get-ChildItem $path -File -ErrorAction SilentlyContinue
$items.Count
$items | Group-Object Extension | Select-Object Count,Name
Así obtienes el número total y la distribución por tipo de archivo.
Preparar el entorno antes de borrar
- Parchea el sistema. Instala todas las actualizaciones de Windows Server 2019 y del software afectado.
- Detén el servicio implicado. Sin su bloqueo, los contenedores pueden cambiar de propietario.
- Crea una copia de seguridad. Exporta la carpeta a un ZIP o copia a disco externo; si algo falla puedes restaurar.
Tomar posesión y otorgar permisos de administración
Por diseño, los archivos son propiedad del proceso que los creó; la cuenta Administrators no siempre tiene acceso directo. Desbloquéalos:
@echo off
setlocal
set TARGET="C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\Microsoft\Crypto\RSA"
takeown /f %TARGET% /r /d y /a
icacls %TARGET% /grant Administrators:F /inheritance:e /t
endlocal
Limpieza selectiva con PowerShell
Borrar según antigüedad
Eliminar todo lo viejo preserva las claves generadas recientemente — las más probables de estar en uso.
$cutoff = (Get-Date).AddDays(-30) # ajusta el umbral
Get-ChildItem $path -File |
Where-Object { $_.LastWriteTime -lt $cutoff } |
Remove-Item -Force
Análisis por tamaño
Si los contenedores válidos deberían ser mayores (por ej. 8 KB porque usan RSA‑4096) puedes filtrar:
Get-ChildItem $path -File |
Where-Object { $_.Length -lt 5000 } |
Remove-Item -Force
Uso de WinPE o Modo seguro
Cuando ningún servicio puede detenerse (por ejemplo, en un controlador de dominio crítico), arranca con WinPE y ejecuta la limpieza sin cargar los servicios dependientes.
Verificación posterior
- Vuelve a iniciar los servicios detenidos. Observa el Visor de eventos 10–15 min.
- Lanza pruebas de conectividad:
Invoke-WebRequest
para IIS,mstsc
para RDP,openssl s_client
desde otra máquina. - Revisa de nuevo la carpeta RSA. ¿El contador se mantiene estable? Has eliminado solo residuos.
Estrategias de prevención a largo plazo
Estrategia | Acción práctica | Beneficio |
---|---|---|
Persistencia de claves | Configura aplicaciones para reutilizar contenedores en lugar de «new key set» cada vez. | Elimina la creación masiva de archivos. |
Tareas de mantenimiento | Programa un Scheduled Task mensual que ejecute el script de limpieza. | Evita que la carpeta crezca sin control. |
Cuotas y alertas | Activa cuotas de disco o monitoriza el contador de archivos con PerfMon y alertas SNMP. | Detecta derivas antes de agotar espacio. |
Auditoría CAPI2 | Habilita la canalización, nivel Verbose. | Identifica procesos que crean claves desechables. |
Preguntas frecuentes
¿Puedo eliminar toda la carpeta RSA sin más?
No. Muchos servicios almacenan en ella claves persistentes. Borra solo los archivos que cumplas criterios de antigüedad o confirma que el servicio está detenido.
¿Por qué incluso takeown dice «Acceso denegado»?
Si el archivo está abierto por un proceso con privilegios de Sistema, Force Del o handle.exe –c pueden liberar el handle. En casos extremos, solo WinPE.
¿Es mejor mover la carpeta a otra unidad?
No está soportado; romperías rutas de sistema. Usa puntos de montaje NTFS si el disco C: es muy pequeño.
Conclusión
Los millones de archivos en …\Crypto\RSA
no son virus ni basura aleatoria: son contenedores de claves legítimos. Su exceso indica un servicio que crea claves temporales sin eliminarlas. Para recuperar el espacio sin dañar el servidor: identifica primero el origen, actualiza el software, toma posesión de los archivos, elimina solo los contenedores huérfanos y establece tareas de prevención.