Tarjetas inteligentes
-
Puedes usar una tarjeta inteligente conectada al dispositivo cliente para la autenticación al iniciar sesión en una sesión de escritorio virtual Linux. Esta función se implementa mediante la redirección de tarjetas inteligentes a través del canal virtual de tarjetas inteligentes ICA®. También puedes usar la tarjeta inteligente dentro de la sesión. Los casos de uso incluyen:
- Agregar una firma digital a un documento
- Cifrar o descifrar un correo electrónico
- Autenticarse en un sitio web
El VDA de Linux usa la misma configuración que el VDA de Windows para esta función. Para obtener más información, consulta la sección Configurar el entorno de tarjetas inteligentes en este artículo.
-
Nota:
No se admite el uso de una tarjeta inteligente asignada dentro de una sesión de VDA de Linux para iniciar sesión en Citrix Gateway.
Compatibilidad con distribuciones de Linux limitadas y métodos de integración de AD
-
La autenticación de paso de tarjeta inteligente admite distribuciones de Linux limitadas y métodos de integración de AD. Consulta la siguiente matriz:
Winbind SSSD Centrify Quest Debian 12.12 Yes Yes Yes Yes Debian 13 Yes Yes Yes No RHEL 10/9.7/9.6/9.4 Yes Yes Yes Yes -
RHEL 8.10 Yes Yes Yes Yes -
Rocky Linux 10/9.7/9.6/9.4 Yes Yes Yes Yes Rocky Linux 8.10 Yes Yes Yes Yes Ubuntu 24.04 Yes Yes Yes Yes Ubuntu 22.04 Yes Yes Yes Yes
Requisitos previos
La disponibilidad de la autenticación de paso de tarjeta inteligente depende de las siguientes condiciones:
-
Tu VDA de Linux puede registrarse con el Delivery Controller™ y puedes abrir las sesiones de escritorio Linux publicadas usando credenciales de Windows.
-
Se usan tarjetas inteligentes compatibles con OpenSC. Para obtener más información, consulta Asegúrate de que OpenSC sea compatible con tu tarjeta inteligente.
Asegúrate de que OpenSC sea compatible con tu tarjeta inteligente
OpenSC es un controlador de tarjeta inteligente muy usado en RHEL 7.4 y versiones posteriores. Como reemplazo totalmente compatible de CoolKey, OpenSC admite muchos tipos de tarjetas inteligentes (consulta Smart Card Support in Red Hat Enterprise Linux).
En este artículo, la tarjeta inteligente YubiKey se usa como ejemplo para ilustrar la configuración. YubiKey es un dispositivo USB CCID PIV todo en uno que se puede comprar fácilmente en Amazon u otros minoristas. El controlador OpenSC es compatible con YubiKey.
Si tu organización requiere otra tarjeta inteligente más avanzada, prepara una máquina física con una distribución de Linux compatible y el paquete OpenSC instalado. Para obtener información sobre la instalación de OpenSC, consulta Instalar el controlador de tarjeta inteligente. Inserta tu tarjeta inteligente y ejecuta el siguiente comando para verificar que OpenSC sea compatible con tu tarjeta inteligente:
pkcs11-tool --module opensc-pkcs11.so --list-slots
<!--NeedCopy-->
Configuración
Prepara un certificado raíz
Se usa un certificado raíz para verificar el certificado de la tarjeta inteligente. Completa los siguientes pasos para descargar e instalar un certificado raíz.
-
Obtén un certificado raíz en formato PEM, normalmente de tu servidor de CA.
Puedes ejecutar un comando similar al siguiente para convertir un archivo DER (*.crt, *.cer, *.der) a PEM. En el siguiente ejemplo de comando, certnew.cer es un archivo DER.
openssl x509 -inform der -in certnew.cer -out certnew.pem <!--NeedCopy--> -
Instala el certificado raíz en el directorio
openssl. El archivo certnew.pem se usa como ejemplo.cp certnew.pem <path where you install the root certificate> <!--NeedCopy-->Para crear una ruta para instalar el certificado raíz, ejecuta
sudo mdkir -p <ruta donde instalas el certificado raíz>.
Configurar el entorno de tarjetas inteligentes
Puedes usar el script ctxsmartlogon.sh para configurar el entorno de tarjetas inteligentes o completar la configuración manualmente.
-
(Opción 1) Usa el script ctxsmartlogon.sh para configurar el entorno de tarjetas inteligentes
-
Nota:
El script ctxsmartlogon.sh agrega información de PKINIT al dominio predeterminado. Puedes cambiar esta configuración a través del archivo de configuración /etc/krb5.conf.
Antes de usar tarjetas inteligentes por primera vez, ejecuta el script ctxsmartlogon.sh para configurar el entorno de tarjetas inteligentes.
Consejo:
Si has usado SSSD para la unión a un dominio, reinicia el servicio SSSD después de ejecutar ctxsmartlogon.sh. Para RHEL 8 y versiones posteriores, como PAM_KRB5 se ha movido al repositorio EPEL, el script intentará habilitar EPEL en esas distribuciones.
sudo /opt/Citrix/VDA/sbin/ctxsmartlogon.sh
<!--NeedCopy-->
Los resultados son similares a los siguientes:

Nota:
Si usas Quest como método de unión a un dominio, debes especificar el nombre de host del Centro de distribución de claves (KDC). Por ejemplo:
También puedes inhabilitar las tarjetas inteligentes ejecutando el script ctxsmartlogon.sh:
sudo /opt/Citrix/VDA/sbin/ctxsmartlogon.sh
<!--NeedCopy-->
Los resultados son similares a los siguientes:

(Opción 2) Configurar el entorno de tarjetas inteligentes manualmente
El VDA de Linux utiliza el mismo entorno de tarjeta inteligente que el VDA de Windows. En este entorno, se deben configurar varios componentes, incluidos el controlador de dominio, la entidad de certificación (CA) de Microsoft, Internet Information Services, Citrix StoreFront y la aplicación Citrix Workspace. Para obtener información sobre la configuración basada en la tarjeta inteligente YubiKey, consulta el artículo de Knowledge Center CTX206156.
Antes de pasar al siguiente paso, asegúrate de que:
- Has configurado todos los componentes correctamente.
- Has descargado la clave privada y el certificado de usuario en la tarjeta inteligente.
- Puedes iniciar sesión correctamente en el VDA con la tarjeta inteligente.
Instalar los paquetes PC/SC Lite
PCSC Lite es una implementación de la especificación Personal Computer/Smart Card (PC/SC) en Linux. Proporciona una interfaz de tarjeta inteligente de Windows para comunicarse con tarjetas y lectores inteligentes. La redirección de tarjetas inteligentes en el VDA de Linux se implementa a nivel de PC/SC.
Ejecuta el siguiente comando para instalar los paquetes PC/SC Lite:
RHEL 9.x/8.x, Rocky Linux 9.x/8.x:
yum install pcsc-lite pcsc-lite-ccid pcsc-lite-libs
<!--NeedCopy-->
Ubuntu 24.04, Ubuntu 22.04, Debian 12.x, Debian 11.11:
apt-get install -y libpcsclite1 libccid
<!--NeedCopy-->
Instalar el controlador de tarjeta inteligente
OpenSC es un controlador de tarjeta inteligente muy utilizado. Si OpenSC no está instalado, ejecuta el siguiente comando para instalarlo:
RHEL 9.x/8.x, Rocky Linux 9.x/8.x:
yum install opensc
<!--NeedCopy-->
Ubuntu 24.04, Ubuntu 22.04, Debian 12.x, Debian 11.11:
- apt-get install -y opensc
<!--NeedCopy-->
Instalar los módulos PAM para la autenticación con tarjeta inteligente
Ejecuta el siguiente comando para instalar los módulos pam_krb5 y krb5-pkinit.
RHEL 9.x/8.x, Rocky Linux 9.x/8.x:
yum install krb5-pkinit
<!--NeedCopy-->
Ubuntu 24.04, Ubuntu 22.04:
apt-get install libpam-krb5 krb5-pkinit
<!--NeedCopy-->
Debian 12.x, Debian 11.11:
apt-get install -y libpam-krb5 krb5-pkinit
<!--NeedCopy-->
El módulo pam_krb5 es un módulo de autenticación conectable. Las aplicaciones compatibles con PAM pueden usar pam_krb5 para comprobar contraseñas y obtener tickets de concesión de tickets del Centro de distribución de claves (KDC). El módulo krb5-pkinit contiene el complemento PKINIT que permite a los clientes obtener credenciales iniciales del KDC mediante una clave privada y un certificado.
Configurar el módulo pam_krb5
El módulo pam_krb5 interactúa con el KDC para obtener tickets Kerberos mediante certificados en la tarjeta inteligente. Para habilitar la autenticación pam_krb5 en PAM, ejecuta el siguiente comando:
authconfig --enablekrb5 --update
<!--NeedCopy-->
En el archivo de configuración /etc/krb5.conf, agrega la información de PKINIT según el dominio real.
Nota:
La opción pkinit_cert_match especifica las reglas de coincidencia que debe cumplir el certificado de cliente antes de que se utilice para intentar la autenticación PKINIT. La sintaxis de las reglas de coincidencia es:
[operador-de-relación] regla-de-componente …
donde operador-de-relación puede ser &&, lo que significa que todas las reglas de componente deben coincidir, o ||, lo que significa que solo una regla de componente debe coincidir.
Aquí tienes un ejemplo de un archivo krb5.conf genérico:
EXAMPLE.COM = {
kdc = KDC.EXAMPLE.COM
auth_to_local = RULE:[1:$1@$0]
pkinit_anchors = FILE:<path where you install the root certificate>/certnew.pem
pkinit_kdc_hostname = KDC.EXAMPLE.COM
pkinit_cert_match = ||<EKU>msScLogin,<KU>digitalSignature
pkinit_eku_checking = kpServerAuth
}
<!--NeedCopy-->
El archivo de configuración se parece al siguiente después de agregar la información de PKINIT.

Configurar la autenticación PAM
Los archivos de configuración de PAM indican qué módulos se utilizan para la autenticación PAM. Para agregar pam_krb5 como módulo de autenticación, agrega la siguiente línea al archivo /etc/pam.d/smartcard-auth:
auth [success=done ignore=ignore default=die] pam_krb5.so preauth_options=X509_user_identity=PKCS11:<path to the pkcs11 driver>/opensc-pkcs11.so
El archivo de configuración se parece al siguiente después de la modificación si se utiliza SSSD.

(Opcional) Inicio de sesión único mediante tarjetas inteligentes
El inicio de sesión único (SSO) es una función de Citrix que implementa la autenticación de paso a través con lanzamientos de escritorios virtuales y aplicaciones. Esta función reduce el número de veces que los usuarios escriben su PIN. Para usar SSO con el VDA de Linux, configura la aplicación Citrix Workspace. La configuración es la misma que con el VDA de Windows. Para obtener más información, consulta el artículo de Knowledge Center CTX133982.
Habilita la autenticación con tarjeta inteligente de la siguiente manera al configurar la directiva de grupo en la aplicación Citrix Workspace™.

Inicio de sesión rápido con tarjeta inteligente
La tarjeta inteligente rápida es una mejora con respecto a la redirección de tarjeta inteligente HDX basada en PC/SC existente. Mejora el rendimiento cuando se usan tarjetas inteligentes en entornos WAN de alta latencia. Para obtener más información, consulta Tarjetas inteligentes.
El VDA de Linux admite la tarjeta inteligente rápida en las siguientes versiones de la aplicación Citrix Workspace:
- Citrix Receiver para Windows 4.12
- Aplicación Citrix Workspace 1808 para Windows y versiones posteriores
Habilitar el inicio de sesión rápido con tarjeta inteligente en el cliente
El inicio de sesión rápido con tarjeta inteligente está habilitado de forma predeterminada en el VDA y deshabilitado de forma predeterminada en el cliente. En el cliente, para habilitar el inicio de sesión rápido con tarjeta inteligente, incluye el siguiente parámetro en el archivo default.ica del sitio de StoreFront asociado:
[WFClient]
SmartCardCryptographicRedirection=On
<!--NeedCopy-->
Deshabilitar el inicio de sesión rápido con tarjeta inteligente en el cliente
Para deshabilitar el inicio de sesión rápido con tarjeta inteligente en el cliente, quita el parámetro SmartCardCryptographicRedirection del archivo default.ica del sitio de StoreFront asociado.
Ejecuta XDPing
Después de completar los pasos anteriores, puedes usar la herramienta XDPing de Linux para comprobar si hay problemas de configuración comunes que puedan existir en tu entorno VDA de Linux.
Uso
Inicia sesión en el VDA de Linux con una tarjeta inteligente
Puedes usar una tarjeta inteligente para iniciar sesión en el VDA de Linux en escenarios de SSO y no SSO.
- En el escenario de SSO, inicias sesión en StoreFront™ automáticamente mediante el certificado de tarjeta inteligente y el PIN almacenados en caché. Cuando inicias una sesión de escritorio virtual de Linux en StoreFront, el PIN se pasa al VDA de Linux para la autenticación con tarjeta inteligente.
-
En el escenario sin SSO, se te pide que selecciones un certificado y que escribas un PIN para iniciar sesión en StoreFront.

Cuando inicias una sesión de escritorio virtual de Linux en StoreFront, aparece un cuadro de diálogo para iniciar sesión en el VDA de Linux de la siguiente manera. El nombre de usuario se extrae del certificado de la tarjeta inteligente y debes escribir el PIN de nuevo para la autenticación de inicio de sesión.
Este comportamiento es el mismo que con el VDA de Windows.

Volver a conectar a una sesión con una tarjeta inteligente
Para volver a conectar a una sesión, asegúrate de que la tarjeta inteligente esté conectada al dispositivo cliente. De lo contrario, aparece una ventana de almacenamiento en caché gris en el lado del VDA de Linux y se cierra rápidamente porque la reautenticación falla sin la tarjeta inteligente conectada. En este caso, no se proporciona ninguna otra indicación para recordarte que conectes la tarjeta inteligente.
Sin embargo, en el lado de StoreFront, si no hay una tarjeta inteligente conectada cuando vuelves a conectar a una sesión, la web de StoreFront podría mostrar una alerta de la siguiente manera:

Limitación
Configuración de extracción de tarjeta inteligente
Para especificar el comportamiento cuando se extrae la tarjeta inteligente de un usuario que ha iniciado sesión del lector de tarjetas inteligentes durante una sesión, edita la siguiente clave del Registro en el VDA de Linux:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Citrix\LocalPolicies\SecurityOptions
| Nombre del valor | Tipo | Predeterminado | Descripción |
|---|---|---|---|
| SCardRemoveOption | REG_DWORD | 0x00000000 | Esta configuración determina lo que sucede cuando se extrae la tarjeta inteligente de un usuario que ha iniciado sesión del lector de tarjetas inteligentes durante una sesión. Las opciones son las siguientes. |
| 0 Ninguna acción | |||
| 1 Forzar cierre de sesión: El usuario cierra sesión automáticamente al extraer la tarjeta inteligente. | |||
| 2 Desconectar sesión: La sesión se desconecta sin cerrar la sesión del usuario al extraer la tarjeta inteligente. El usuario puede volver a insertar la tarjeta inteligente para volver a conectar la sesión más tarde. | |||
| 3 Bloquear estación de trabajo: El escritorio virtual está bloqueado. El usuario puede volver a insertar la tarjeta inteligente e introducir el código PIN para desbloquear la pantalla. | |||
| SCardRemoveActionDelaySeconds | REG_DWORD | 15 | Si la opción de extracción se establece como Forzar cierre de sesión o Desconectar sesión, puedes especificar un retraso de varios segundos antes de que se realice la acción. Con esta configuración, aparece un cuadro de mensaje en la sesión del usuario después de extraer la tarjeta inteligente, indicando que la sesión se cerrará forzosamente o se desconectará después de los segundos especificados. Si vuelves a insertar la tarjeta inteligente antes de ese momento, la sesión continúa sin interrupciones. |
Limitaciones
El VDA de Linux admite un solo lector de tarjetas inteligentes a la vez.
Compatibilidad con otras tarjetas inteligentes y la biblioteca PKCS#11
Citrix proporciona una solución genérica de redirección de tarjetas inteligentes. Aunque solo la tarjeta inteligente OpenSC aparece en nuestra lista de compatibilidad, puedes probar a usar otras tarjetas inteligentes y la biblioteca PKCS#11. Para cambiar a tu tarjeta inteligente específica o a la biblioteca PKCS#11:
-
Reemplaza todas las instancias de
opensc-pkcs11.sopor tu biblioteca PKCS#11. -
Para establecer la ruta de tu biblioteca PKCS#11 en el Registro, ejecuta el siguiente comando:
/opt/Citrix/VDA/bin/ctxreg update -k "HKLM\System\CurrentControlSet\Control\Citrix\VirtualChannels\Scard" -v "PKCS11LibPath" -d "PATH" <!--NeedCopy-->donde PATH apunta a tu biblioteca PKCS#11, como
/usr/lib64/pkcs11/opensc-pkcs11.so -
Deshabilita el inicio de sesión rápido con tarjeta inteligente en el cliente.
