Compatibilidad con 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 de Linux. Esta función se implementa mediante la redirección de tarjetas inteligentes a través del canal virtual de tarjeta inteligente 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, o autenticarse en un sitio web que requiera autenticación con tarjeta inteligente.
-
El VDA de Linux utiliza 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 la tarjeta inteligente de este artículo.
-
La disponibilidad de la autenticación de paso a través mediante tarjetas inteligentes depende de las siguientes condiciones:
- El VDA de Linux está instalado en RHEL 7.7.
- Se utilizan tarjetas inteligentes compatibles con CoolKey.
- Se utiliza la aplicación Citrix Workspace™ para Windows.
Nota:
El uso de una tarjeta inteligente asignada dentro de una sesión de VDA de Linux para iniciar sesión en Citrix Gateway no es oficialmente compatible.
Instalar el software del VDA de Linux en RHEL 7.7
Instala el software del VDA de Linux mediante el administrador de paquetes RPM o la instalación sencilla; consulta la sección Información general sobre la instalación.
Una vez completada la instalación del VDA, verifica que el VDA pueda registrarse en Delivery Controller™ y que las sesiones de escritorio Linux publicadas se puedan iniciar correctamente mediante autenticación con contraseña.
Asegúrate de que CoolKey sea compatible con tu tarjeta inteligente
CoolKey es un controlador de tarjeta inteligente ampliamente utilizado en RHEL. CoolKey admite cuatro tipos de tarjetas inteligentes: tarjetas CoolKey, CAC, PIV y PKCS#15. Sin embargo, el número de tarjetas que son formalmente compatibles y validadas sigue siendo limitado (consulta Smart Card Support in Red Hat Enterprise Linux).
En este artículo, la tarjeta inteligente YubiKey 4 se utiliza como ejemplo para ilustrar la configuración. YubiKey 4 es un dispositivo USB CCID PIV todo en uno que se puede adquirir fácilmente en Amazon u otros proveedores minoristas. El controlador CoolKey es compatible con YubiKey 4.

Si tu organización requiere alguna otra tarjeta inteligente más avanzada, prepara una máquina física con RHEL 7.7 y el paquete CoolKey instalado. Para obtener información sobre la instalación de CoolKey, consulta Instalar el controlador de tarjeta inteligente. Inserta tu tarjeta inteligente y ejecuta el siguiente comando para verificar que CoolKey es compatible con ella:
pkcs11-tool --module libcoolkeypk11.so --list-slots
<!--NeedCopy-->
Si CoolKey es compatible con tu tarjeta inteligente, la salida del comando es similar a la siguiente, donde se incluye la información de la ranura.
s
Configuración
Preparar un certificado raíz
Un certificado raíz se utiliza para verificar el certificado de la tarjeta inteligente. Sigue estos 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 utiliza 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 la base de datos NSS
El módulo de inicio de sesión del VDA de Linux depende de la base de datos NSS para acceder a tarjetas inteligentes y certificados. Sigue estos pasos para configurar la base de datos NSS.
-
Agrega el certificado raíz mencionado anteriormente a la base de datos NSS.
certutil -A -n "My Corp Root" -t "CT,C,C" -a -d /etc/pki/nssdb -i /etc/pki/CA/certs/certnew.pem <!--NeedCopy--> -
Ejecuta el siguiente comando para verificar que el certificado raíz se ha agregado correctamente a la base de datos NSS.
certutil -L -d /etc/pki/nssdb <!--NeedCopy-->La salida del comando es similar a la siguiente si el certificado raíz se agrega correctamente.

-
Comprueba si CoolKey está instalado en la biblioteca NSS PKCS#11.
modutil -list -dbdir /etc/pki/nssdb <!--NeedCopy-->La salida del comando es similar a la siguiente si el módulo CoolKey está instalado.

Si el módulo CoolKey no está instalado, ejecuta el siguiente comando para instalarlo manualmente y, a continuación, vuelve a comprobar la instalación.
modutil -add "CoolKey PKCS #11 Module" -libfile libcoolkeypk11.so -dbdir /etc/pki/nssdb <!--NeedCopy--> -
Configura el módulo pam_pkcs11.
El módulo pam_pkcs11 depende de la configuración local del VDA para verificar los certificados de usuario. El certificado raíz predeterminado utilizado por pam_pkcs11 se encuentra en /etc/pam_pkcs11/cacerts/. Cada certificado raíz en esta ruta tiene un enlace hash. Ejecuta los siguientes comandos para instalar el certificado raíz preparado y configurar pam_pkcs11.
yum install pam_pkcs11 mkdir /etc/pam_pkcs11/cacerts/ cp certnew.pem /etc/pam_pkcs11/cacerts/ cacertdir_rehash /etc/pam_pkcs11/cacerts <!--NeedCopy-->
Configurar el entorno de la tarjeta inteligente
Puedes usar el script ctxsmartlogon.sh para configurar el entorno de la tarjeta inteligente o realizar la configuración manualmente.
-
Usa el script ctxsmartlogon.sh para configurar el entorno de la tarjeta inteligente
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 la tarjeta inteligente.
Sugerencia:
Si has utilizado SSSD para la unión a un dominio, reinicia el servicio SSSD después de ejecutar ctxsmartlogon.sh.
sudo /opt/Citrix/VDA/sbin/ctxsmartlogon.sh <!--NeedCopy-->Los resultados son similares a los siguientes:

También puedes deshabilitar las tarjetas inteligentes ejecutando el script ctxsmartlogon.sh:
sudo /opt/Citrix/VDA/sbin/ctxsmartlogon.sh <!--NeedCopy-->Los resultados son similares a los siguientes:

-
Configura manualmente el entorno de la tarjeta inteligente
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 4, consulta el artículo de Knowledge Center CTX206156.
-
Antes de continuar con el siguiente paso, asegúrate de que todos los componentes estén configurados correctamente, de que la clave privada y el certificado de usuario se hayan descargado en la tarjeta inteligente y de que puedas iniciar sesión correctamente en el VDA de Windows con la tarjeta inteligente.
Instalar los paquetes de 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 inteligentes y lectores. 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 de PC/SC Lite.
yum install pcsc-lite pcsc-lite-ccid pcsc-lite-libs
<!--NeedCopy-->
CoolKey es un controlador de tarjeta inteligente ampliamente utilizado en RHEL. Si CoolKey no está instalado, ejecuta el siguiente comando para instalarlo.
yum install coolkey
<!--NeedCopy-->
Instala 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.
yum install pam_krb5 krb5-pkinit
<!--NeedCopy-->
El módulo pam_krb5 es un módulo de autenticación conectable que las aplicaciones compatibles con PAM pueden usar para verificar 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 usando una clave privada y un certificado.
Configura el módulo pam_krb5
El módulo pam_krb5 interactúa con el KDC para obtener tickets Kerberos usando certificados de 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 el certificado del cliente debe cumplir antes de que se use para intentar la autenticación PKINIT. La sintaxis de las reglas de coincidencia es:
[relation-operator] component-rule …donde
relation-operatorpuede 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.

Configura la autenticación PAM
Los archivos de configuración de PAM indican qué módulos se usan 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:/usr/lib64/pkcs11/libcoolkeypk11.so
El archivo de configuración se parece al siguiente después de la modificación si se usa SSSD.

El archivo de configuración se parece al siguiente después de la modificación si se usa Winbind.

El archivo de configuración se parece al siguiente después de la modificación si se usa Centrify.

(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 con el inicio de escritorios y aplicaciones virtuales. 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 del Centro de conocimientos 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 basada en HDX 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
Habilita 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-->
Deshabilita 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.
Uso
Inicia sesión en el VDA de Linux usando una tarjeta inteligente
Puedes usar una tarjeta inteligente para iniciar sesión en el VDA de Linux tanto en escenarios de SSO como sin SSO.
- En el escenario de SSO, inicias sesión automáticamente en StoreFront™ usando 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 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 como se muestra a continuación. 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 usando 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, aparecerá una ventana de caché gris en el lado del VDA de Linux y se cerrará 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.
En el lado de StoreFront, sin embargo, si no hay una tarjeta inteligente conectada cuando intentas volver a conectar a una sesión, la web de StoreFront podría mostrar una alerta como la siguiente.

Limitación
Directiva de extracción de tarjeta inteligente
El VDA de Linux solo usa el comportamiento predeterminado para la extracción de tarjetas inteligentes. Cuando quitas la tarjeta inteligente después de iniciar sesión correctamente en el VDA de Linux, la sesión permanece conectada y la pantalla de la sesión no se bloquea.
Compatibilidad con otras tarjetas inteligentes y la biblioteca PKCS#11
Aunque solo la tarjeta inteligente CoolKey aparece en nuestra lista de asistencia, puedes intentar usar otras tarjetas inteligentes y la biblioteca PKCS#11 porque Citrix proporciona una solución genérica de redirección de tarjetas inteligentes. Para cambiar a tu tarjeta inteligente específica o a la biblioteca PKCS#11:
-
Reemplaza todas las instancias de
libcoolkeypk11.socon 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/libcoolkeypk11.so
-
Deshabilita el inicio de sesión rápido con tarjeta inteligente en el cliente.