Para configurar el redireccionamiento de tarjetas inteligentes en una máquina virtual Ubuntu, instale las bibliotecas de las que depende la función y el certificado de la 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 las bibliotecas requeridas en la máquina virtual Ubuntu.
apt-get install -y pcscd pcsc-tools pkg-config libpam-pkcs11 opensc
libengine-pkcs11-openssl libnss3-tools
- Instale un certificado de CA raíz.
- Descargue un certificado de CA raíz y guárdelo en /tmp/certificate.cer en la máquina virtual Ubuntu. 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ó y transfiéralo a un archivo .pem.
openssl x509 -inform der -in /tmp/certificate.cer -out /tmp/certificate.pem
- El comando certutil le permitirá instalar el certificado CA raíz en la base de datos del sistema /etc/pki/nssdb.
Reemplace el certificado de CA raíz en el siguiente comando de ejemplo con el nombre del certificado de CA raíz en la base de datos del sistema.
certutil -A -d /etc/pki/nssdb -n "root CA cert" -t "CT,C,C" -i /tmp/certificate.pem
- Copie el certificado de CA raíz en el directorio /etc/pam_pkcs11/cacerts.
mkdir -p /etc/pam_pkcs11/cacerts
cp /tmp/certificate.pem /etc/pam_pkcs11/cacerts
- Cree un archivo de hash pkcs11.
chmod a+r certificate.pem
pkcs11_make_hash_link
- Copie los controladores requeridos y agregue los archivos de biblioteca necesarios al directorio nssdb.
- Ejecute comandos similares al siguiente ejemplo.
Estos comandos de ejemplo muestran cómo agregar
libcmP11.so, el archivo de controlador de la tarjeta Gemalto PIV 2.0, al directorio
nssdb. En lugar de
libcmP11.so, puede sustituir el archivo del controlador por la tarjeta inteligente.
cp libcmP11.so /usr/lib/
mkdir -p /etc/pki/nssdb
certutil -N -d /etc/pki/nssdb
certutil -A -n rootca -i certificate.pem -t "CT,CT,CT" -d /etc/pki/nssdb
modutil -dbdir /etc/pki/nssdb/ -add "piv card 2.0" -libfile /usr/lib/libcmP11.so
- Compruebe que el certificado esperado se haya cargado correctamente ejecutando el siguiente comando.
# certutil -L -d /etc/pki/nssdb
Compruebe que el comando devuelve un resultado similar al siguiente ejemplo.
Certificate Nickname
rootca
- Compruebe que las bibliotecas esperadas se hayan agregado correctamente ejecutando el siguiente comando.
modutil -dbdir /etc/pki/nssdb -list
Compruebe que el comando devuelve un resultado similar al siguiente ejemplo.
Listing of PKCS #11 Modules
–-----------------------------------------------------------
1. NSS Internal PKCS #11 Module
slots: 2 slots attached
status: loaded
slot: NSS Internal Cryptographic Services
token: NSS Generic Crypto Services
slot: NSS User Private Key and Certificate Services
token: NSS Certificate DB
2. piv card 2.0
library name: /usr/lib/libcmP11.so
slots: There are no slots attached to this module
status: loaded
–-----------------------------------------------------------
- Configure la biblioteca pam_pkcs11.
- Cree un archivo pam_pkcs11.conf con el contenido de ejemplo predeterminado.
- Para Ubuntu 18.04 o 20.04, ejecute la siguiente secuencia de comandos.
mkdir /etc/pam_pkcs11
zcat /usr/share/doc/libpam-pkcs11/examples/pam_pkcs11.conf.example.gz | tee /etc/pam_pkcs11/pam_pkcs11.conf
- Para Ubuntu 20.04.1 o una versión posterior, ejecute la siguiente secuencia de comandos.
mkdir /etc/pam_pkcs11
cat /usr/share/doc/libpam-pkcs11/examples/pam_pkcs11.conf.example | tee /etc/pam_pkcs11/pam_pkcs11.conf
- Edite el archivo /etc/pam_pkcs11/pam_pkcs11.conf, tal y como se muestra en el siguiente ejemplo.
use_pkcs11_module = mysc;
pkcs11_module mysc {
module = /usr/lib/libcmP11.so;
description = "LIBCMP11";
slot_num = 0;
ca_dir = /etc/pam_pkcs11/cacerts;
nss_dir = /etc/pki/nssdb;
cert_policy = ca;
}
...
use_mappers = cn, null;
...
mapper cn {
debug = false;
module = internal;
# module = /lib/pam_pkcs11/cn_mapper.so;
ignorecase = true;
mapfile = file:///etc/pam_pkcs11/cn_map;
# mapfile = "none";
}
- Edite el archivo /etc/pam_pkcs11/cn_map para que incluya la siguiente línea.
- Edite el archivo de configuración /etc/pam.d/gdm-password. Coloque la línea de autorización pam_pkcs11.so antes de la línea common-auth, tal y como se muestra en el siguiente ejemplo.
#%PAM-1.0
auth requisite pam_nologin.so
auth required pam_succeed_if.so user != root quiet_success
auth sufficient pam_pkcs11.so
@include common-auth
auth optional pam_gnome_keyring.so
@include common-account
- Para verificar el hardware de la tarjeta inteligente y los certificados instalados en ella, ejecute los siguientes comandos.
pcsc_scan
pkcs11_listcerts
pkcs11_inspect
- 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.
- Configure el servicio pcscd para que se inicie automáticamente después de que se reinicie la máquina virtual.
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 intente iniciar sesión a través de pam_pkcs11.
- Para editar el archivo /lib/systemd/system/pcscd.service, agregue la línea
WantedBy=multi-user.target a la sección [Install].
Compruebe que el archivo editado sea similar 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]
WantedBy=multi-user.target
Also=pcscd.socket
- Habilite el servicio pcscd.
systemctl enable pcscd.service
- 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.
apt-get install --reinstall pcscd 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 Ubuntu y vuelva a iniciar sesión.