Para configurar el redireccionamiento de tarjetas inteligentes en una máquina virtual SLED/SLES, instale las bibliotecas de las que depende la función y el certificado de entidad de certificación (CA) raíz para permitir la autenticación de confianza de las tarjetas inteligentes. Además, debe editar algunos archivos de configuración para completar la configuración de autenticación.
Algunos ejemplos incluidos en el procedimiento utilizan valores de marcador de posición para representar entidades en su configuración de red, como el nombre de DNS de su dominio de AD. Reemplace los valores de marcador de posición con información específica de su configuración, tal y como se describe en la siguiente tabla.
| Valor del marcador de posición |
Descripción |
| DIRECCIÓN_IP_dns |
Dirección IP del servidor de nombres DNS |
| midominio.com |
Nombre DNS de su dominio de AD |
| MIDOMINIO.COM |
Nombre DNS de su dominio de AD, en mayúsculas |
| MIDOMINIO |
Nombre DNS del grupo de trabajo o el dominio NT que incluye su servidor Samba, en mayúsculas |
| nombredehost-ads |
Nombre de host del servidor de AD |
| nombredehost-ads.midominio.com |
Nombre de dominio completo (FQDN) del servidor de AD |
| miservidordetiempo.miempresa.com |
Nombre DNS del servidor de tiempo NTP |
| AdminUser |
Nombre de usuario del administrador de la máquina virtual |
Procedimiento
- Instale los paquetes de biblioteca necesarios.
- Instale la biblioteca PAM y otros paquetes.
zypper install pam_pkcs11 mozilla-nss mozilla-nss-tools
pcsc-lite pcsc-ccid opensc coolkey pcsc-tools
Es posible que deba habilitar extensiones como PackageHub para instalar todos los paquetes anteriores.
- Para usar los paquetes instalados, habilite extensiones como PackageHub e instale las herramientas de PC/SC. Por ejemplo, puede ejecutar los siguientes comandos para SLED/SLES 12 SP3.
SUSEConnect --list-extensions
SUSEConnect -p PackageHub/12.3/x86_64
zypper in pcsc-tools
- Instale un certificado de CA raíz.
- Descargue un certificado de CA raíz y guárdelo en /tmp/certificate.cer en el sistema. Consulte la sección Cómo exportar el certificado raíz firmado por una entidad de certificación.
- Busque el certificado de CA raíz que descargó, transfiéralo a un archivo .pem y cree un archivo hash.
openssl x509 -inform der -in /tmp/certificate.cer -out /tmp/certificate.pem
cp /tmp/certificate.pem /etc/pam_pkcs11/cacerts
chmod a+r /etc/pam_pkcs11/cacerts/certificate.pem
cd /etc/pam_pkcs11/cacerts
pkcs11_make_hash_link
- Instale los anclajes de veracidad en la base de datos de NSS.
mkdir /etc/pam_pkcs11/nssdb
certutil -N -d /etc/pam_pkcs11/nssdb
certutil -L -d /etc/pam_pkcs11/nssdb
certutil -A -n rootca -i certificate.pem -t "CT,CT,CT" -d /etc/pam_pkcs11/nssdb
- Instale los controladores necesarios.
cp libcmP11.so /usr/lib64/
modutil -add "piv card 2.0" -libfile /usr/lib64/libcmP11.so -dbdir /etc/pam_pkcs11/nssdb/
- Edite el archivo /etc/pam_pkcs11/pam_pkcs11.conf.
- Elimine la línea use_pkcs11_module = nss. En su lugar, agregue la línea use_pkcs11_module = mysc.
- Agregue el módulo mysc, tal y como se muestra en el siguiente ejemplo.
pkcs11_module mysc {
module = /usr/lib64/libcmP11.so;
description = "MY Smartcard";
slot_num = 0;
nss_dir = /etc/pam_pkcs11/nssdb;
cert_policy = ca, ocsp_on, signature, crl_auto;
}
- Actualice la configuración del asignador de nombres comunes, tal y como se muestra en el siguiente ejemplo.
# Assume common name (CN) to be the login
mapper cn {
debug = false;
module = internal;
# module = /usr/lib64/pam_pkcs11/cn_mapper.so;
ignorecase = true;
mapfile = file:///etc/pam_pkcs11/cn_map;}
- Elimine la línea use_mappers = ms. En su lugar, agregue la línea use_mappers = cn, null.
- Edite el archivo de configuración /etc/pam_pkcs11/cn_map para que incluya la siguiente línea.
ads-hostname -> ads-hostname
- Modifique la configuración PAM.
- Para poder configurar la autenticación con tarjeta inteligente, desactive primero la herramienta pam_config.
find /etc/pam.d/ -type l -iname "common-*" -delete
for X in /etc/pam.d/common-*-pc; do cp -ivp $X ${X:0:-3}; done
- Cree un archivo llamado common-auth-smartcard en el directorio /etc/pam.d/. Agregue el siguiente contenido al archivo.
auth required pam_env.so
auth sufficient pam_pkcs11.so
auth optional pam_gnome_keyring.so
auth [success=1 default=ignore] pam_unix.so nullok_secure try_first_pass
auth required pam_winbind.so use_first_pass
- Reemplace la línea auth include common-auth por la línea auth include common-auth-smartcard en los archivos /etc/pam.d/gdm y /etc/pam.d/xscreensaver.
- Para configurar el servicio pcscd para que se inicie automáticamente después de que se reinicie la máquina virtual, edite el archivo correspondiente a su versión de SLED/SLES.
- (SLED/SLES 12.x) Agregue la línea
rcpcscd start a de/etc/init.d/after.local para que el archivo se parezca al siguiente ejemplo. #! /bin/sh
#
# Copyright (c) 2010 SuSE LINUX Products GmbH, Germany. All rights reserved.
#
# Author: Werner Fink, 2010
#
# /etc/init.d/after.local
#
# script with local commands to be executed from init after all scripts
# of a runlevel have been executed.
#
# Here you should add things, that should happen directly after
# runlevel has been reached.
#
rcpcscd start
- (SLED/SLES 15.x) Agregue la línea
WantedBy=multi-user.target a de/usr/lib/systemd/system/pcscd.service para que el archivo se parezca al siguiente ejemplo.[Unit]
Description=PC/SC Smart Card Daemon
Requires=pcscd.socket
[Service]
ExecStart=/usr/sbin/pcscd --foreground --auto-exit
ExecReload=/usr/sbin/pcscd --hotplug
[Install]
Also=pcscd.socket
WantedBy=multi-user.target
Después de editar el archivo
pcscd.service, ejecute el siguiente comando.
systemctl enable pcscd
Nota: Si el servicio pcscd no se inicia después de reiniciar la máquina virtual, se producirá un error la primera vez que se inicie sesión a través de pam_pkcs11.
- Desactive el firewall.
rcSuSEfirewall2 stop
chkconfig SuSEfirewall2_setup off
chkconfig SuSEfirewall2_init off
Nota: A veces se produce un error en el redireccionamiento de tarjetas inteligentes cuando el firewall está habilitado.
- (SLED/SLES 15.x) Para asegurarse de que la pantalla de inicio de las tarjetas inteligentes funcione correctamente, modifique el archivo org.gnome.Shell.desktop en la máquina virtual.
- Abra el archivo /usr/share/applications/org.gnome.Shell.desktop.
- En el archivo, busque y reemplace
Exec=/usr/bin/gnome-shell con la siguiente línea.
Exec=sh -c "DISPLAY=:${DISPLAY##*:} exec /usr/bin/gnome-shell"
- Guarde y cierre el archivo.
- Para admitir la función de inicio de sesión único (SSO) en tarjetas inteligentes, configure el archivo /etc/vmware/viewagent-greeter.conf. Consulte Opciones de configuración en los archivos de configuración de un escritorio Linux.
- Instale el paquete Horizon Agent con el redireccionamiento de tarjetas inteligentes habilitado.
sudo ./install_viewagent.sh -m yes
Nota: Si recibe un mensaje de error que le indica que instale la biblioteca PC/SC Lite predeterminada, desinstale la biblioteca PC/SC Lite personalizada que se encuentra actualmente en la máquina e instale la biblioteca PC/SC Lite predeterminada mediante el siguiente comando.
zypper install -f -y pcsc-lite libpcsclite1
A continuación, puede ejecutar el instalador de Horizon Agent.
- Si utiliza una biblioteca PC/SC Lite personalizada, configure las opciones pcscd.maxReaderContext y pcscd.readBody en el archivo /etc/vmware/config.
- Reinicie la máquina virtual y vuelva a iniciar sesión.