Tengo:
- Una máquina cliente con Windows 7. No soy administrador de esa máquina.
- Un servidor Windows 2008R2, en el que quiero abrir una sesión mediante Escritorio remoto.
- APuerta de enlace de escritorio remoto, también ejecuta Windows 2008R2.
- Una tarjeta inteligente.
El servidor está configurado para permitir el inicio de sesión con tarjeta inteligente. La puerta de enlace también requiere autenticación con tarjeta inteligente. Todos los clientes y servidores conocen y confían en todos los certificados de CA relevantes, ningún certificado caduca y todas las CRL se publican donde deberían.
Fundamentalmente, el certificado de la tarjeta inteligente tiene unUso extendido de clavesextensión (EKU) que NO contiene el OID de "inicio de sesión con tarjeta inteligente". Sin embargo, cuenta con "autenticación de cliente". El servidor y la puerta de enlace se han configurado para aceptar el certificado: esta es una configuración de política llamada "Permitir certificados sin atributo de certificado de uso de clave extendida", como se describeallá.
El problema
El cliente utiliza un archivo .rdp en el que se especifica el nombre del servidor.yel nombre de la puerta de enlace. Dado que la puerta de enlace es una puerta de enlace y no un servidor de escritorio remoto real, no tiene una "pantalla de inicio de sesión" para mostrar. En cambio, la autenticación con tarjeta inteligente se basa en una GUI manejada por el cliente ( mstsc.exe
, el cliente RD estándar en Windows) para permitir al usuario seleccionar su tarjeta inteligente e ingresar su código PIN. Así es como debería verse la ventana emergente:
(Perdón por la ventana emergente en francés; no tengo a mano un Windows 7 en inglés).
Desafortunadamente, esa ventana emergente no aparece así. En cambio, me sale esto:
Análisis
Como se describeaquí, la aplicación cliente (mstsc.exe) permitirá que el sistema operativo (Windows 7) "enumere" las tarjetas inteligentes. El sistema operativo buscará tarjetas inteligentes que contengan certificados que cumplan algunos criterios, en particular que cualquier extensión EKU encontrada en dicho certificado contenga el OID de "inicio de sesión de tarjeta inteligente". Esto se hace antes de intentar comunicarse con la puerta de enlace, y mucho menos con el servidor de destino final. La puerta de enlace y el servidor estarían perfectamente satisfechos con mi certificado; han sido configurados de esa manera. Sin embargo, el sistema operativo del clientehace cumplirlas mismas reglas, según su propia configuración. En mi caso, Windows 7 se niega a permitirme usar mi tarjeta inteligente porque su política local la rechazaría para abrir una sesión local (aunque no estoy intentando abrir una sesión local en absoluto).
Esto solía funcionar con un cliente de Windows XP, porque la "ventana emergente de selección de tarjeta inteligente" de Windows XP no aplica estas comprobaciones (Windows XP comprueba el EKU de una manera aún más restrictiva, porque no tolera la falta de extensión EKU, pero aplica estas comprobaciones sólo cuando se intenta abrir una sesión local, no cuando se selecciona un certificado para una sesión remota).
La solución que no puedo usar
La solución "normal" es configurar el cliente local (Windows 7) con el mismo "Permitir certificados sin atributo de certificado de uso de clave extendida" que el servidor. De esa manera, la ventana emergente de selección de tarjeta inteligente ahora acepta mostrar la tarjeta inteligente y todo está bien. Lo probé en otro sistema. Sin embargo, no puedo hacer eso en mis sistemas de destino porque cambiar la política local requiere derechos de administrador que no tengo. De manera similar, para los clientes que forman parte de un dominio, la configuración podría enviarse desde un GPO en el servidor AD, lo cual nuevamente está prohibido para mí por falta de privilegios adecuados.
También se puede decir que esta configuración de política en realidad permite iniciar sesión en la máquina cliente con un certificado que no tiene el OID adecuado en su EKU, y eso puede considerarse como un efecto secundario indeseable. Estoy intentando abrir una sesión en unservidor remoto; No debería tener que cambiar las condiciones para abrir una sesión en elcliente local.
Las versiones anteriores de mstsc.exe (de Windows XP) aparentemente podían conectarse al servidor sin requerir ninguna autenticación del cliente; en ese caso, el servidor remoto mostraría su pantalla de inicio de sesión (la "gran pantalla azul-verde") y manejaría él mismo la enumeración de tarjetas inteligentes. Dado que el servidor tiene la política adecuada, esto funcionaría. Sin embargo, no puedo utilizar dicha solución por dos razones:
- El mstsc.exe de Windows 7 aparentemente insiste en realizar la autenticación con sus propias ventanas emergentes.
- Hay unpuerta, que, a diferencia del servidor de destino final, no tiene una "pantalla de inicio de sesión" para mostrar. Cuando se utiliza una puerta de enlace que requiere autenticación con tarjeta inteligente del cliente, la selección de tarjeta inteligente del clientedebeser gestionado por el software del cliente.
La pregunta
Entonces aquí está mi pregunta: ¿hay alguna salida a este problema? Idealmente, algún tipo de configuración en mstsc.exe (un modificador de línea de comandos o una cláusula en un archivo .rdp) que indique a mstsc.exeNOpara usar la ventana emergente de selección de tarjeta inteligente del sistema operativo, pero para hacer la enumeración por sí solo,sintratando de hacer cumplir cualquier cosa sobre el EKU. No he encontrado ningún rastro de tal característica, pero la ausencia de prueba no es prueba de ausencia. Puede que simplemente me lo haya perdido.
Respuesta1
Cree un archivo .rdp para la conexión, configure enablecredsspsupport:i:0 dentro del archivo .rdp y asegúrese de tener habilitada la opción de tarjeta inteligente para el mapeo de recursos locales (está activada de forma predeterminada, por lo que ese ya debería ser el caso a menos que cambió explícitamente la configuración.)
Consulte la siguiente entrada para obtener más detalles: http://blogs.msdn.com/b/rds/archive/2007/01/22/vista-remote-desktop-connection-authentication-faq.aspx#_When_to_use
no soybastanteEstoy seguro de que esto funcionará para resolver su problema debido a la puerta de enlace en el medio, pero, francamente, no se me ocurre ninguna otra solución posible para este problema.