Para configurar o redirecionamento de cartão inteligente em uma máquina virtual (VM) Ubuntu/Debian, instale as bibliotecas das quais o recurso depende e o certificado da Autoridade de Certificação (CA) raiz para oferecer suporte à autenticação confiável de cartões inteligentes. Além disso, você deve editar alguns arquivos de configuração para concluir a configuração da autenticação.

Alguns exemplos no procedimento usam valores de espaço reservado para representar entidades em sua configuração de rede, como o nome DNS do seu domínio do AD. Substitua os valores do espaço reservado por informações específicas para sua configuração, conforme descrito na tabela a seguir.

Valor do espaço reservado Descrição
dns_IP_ADDRESS Endereço IP do seu servidor de nomes DNS
meudomínio.com Nome DNS do seu domínio do AD
MEUDOMÍNIO.COM Nome DNS do seu domínio do AD, em letras maiúsculas
MEUDOMÍNIO Nome DNS do grupo de trabalho ou domínio NT que inclui o servidor Samba, em letras maiúsculas
ads-hostname Nome do host do seu servidor AD
ads-hostname.mydomain.com Nome de domínio totalmente qualificado (FQDN) do seu servidor AD
mytimeserver.mycompany.com Nome DNS do seu servidor de horário NTP
AdminUser Nome de usuário do administrador da VM

Pré-requisitos

Integrar uma VM Ubuntu/Debian ao AD para redirecionamento de cartão inteligente

Procedimento

  1. Instale as bibliotecas necessárias na VM Ubuntu/Debian.
    sudo apt-get install -y pcscd pcsc-tools pkg-config libpam-pkcs11 opensc libengine-pkcs11-openssl libnss3-tools
  2. Instale um certificado de CA raiz.
    1. Baixe um certificado de CA raiz e salve-o em /tmp/certificate.cer na VM Ubuntu. Consulte Como exportar o certificado da autoridade de certificação raiz.
    2. Localize o certificado de CA raiz que você baixou e transfira-o para um arquivo .pem.
      sudo openssl x509 -inform der -in /tmp/certificate.cer -out /tmp/certificate.pem
    3. Copie o certificado da CA raiz para o diretório /etc/pam_pkcs11/cacerts.
      sudo cp /tmp/certificate.pem /etc/pam_pkcs11/cacerts
  3. Crie um arquivo hash pkcs11.
    sudo chmod a+r certificate.pem
    sudo pkcs11_make_hash_link
  4. Configure a biblioteca pam_pkcs11.
    1. Crie um arquivo pam_pkcs11.conf usando o conteúdo de exemplo padrão.
      • (Ubuntu 20.04, Debian 10.x) Execute a seguinte sequência de comandos.
        sudo mkdir /etc/pam_pkcs11
        sudo zcat /usr/share/doc/libpam-pkcs11/examples/pam_pkcs11.conf.example.gz | tee /etc/pam_pkcs11/pam_pkcs11.conf
      • (Ubuntu 20.04.1 e posterior, Ubuntu 22.04, Debian 11.x/12.x) Execute a seguinte sequência de comandos.
        sudo mkdir /etc/pam_pkcs11
        sudo cat /usr/share/doc/libpam-pkcs11/examples/pam_pkcs11.conf.example | tee /etc/pam_pkcs11/pam_pkcs11.conf
    2. Edite o arquivo /etc/pam_pkcs11/pam_pkcs11.conf conforme mostrado no exemplo a seguir.
      use_pkcs11_module = opensc;                            
      ...
      pkcs11_module opensc {                                 
           module = /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so;         
           description = "OpenSC PKCS#11 module";               
           slot_num = 0;                           
           ca_dir = /etc/pam_pkcs11/cacerts;
           crl_dir = /etc/pam_pkcs11/crls;       
           support_threads = false;
           cert_policy = ca,signature;
           token_type = "Smart card";                       
      }                                                    
      ...
      use_mappers = cn, null;                        
      ...
      mapper cn {
           debug = false;
           module = internal;
           ignorecase = true;
           mapfile = file:///etc/pam_pkcs11/cn_map; 
      }
    3. Edite o arquivo /etc/pam_pkcs11/cn_map para que ele inclua a seguinte linha.
      Common name -> Login ID
  5. Edite o arquivo de configuração /etc/pam.d/gdm-password. Coloque a linha de autorização pam_pkcs11.so antes da linha common-auth, conforme mostrado no exemplo a seguir.
    #%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
  6. Para verificar o hardware do cartão inteligente e os certificados instalados no cartão inteligente, execute os comandos a seguir.
    sudo pcsc_scan
    sudo pkcs11_listcerts
    sudo pkcs11_inspect
  7. Para oferecer suporte ao recurso de SSO de cartão inteligente e a saudação VMware quando o SSO é desativado, configure o arquivo /etc/vmware/viewagent-greeter.conf. Consulte Editar arquivos de configuração em uma área de trabalho Linux.
  8. Instale o pacote Horizon Agent, com o redirecionamento de cartão inteligente ativado.
    sudo ./install_viewagent.sh -m yes
    Observação: Se você receber uma mensagem de erro instruindo-o a instalar a biblioteca PC/SC Lite padrão, desinstale a biblioteca PC/SC Lite personalizada que está atualmente presente na máquina e instale a biblioteca PC/SC Lite padrão usando o seguinte comando.
    sudo apt-get install --reinstall pcscd libpcsclite1

    Em seguida, você pode executar o instalador Horizon Agent.

  9. Se você estiver usando uma biblioteca personalizada do PC/SC Lite, configure as opções pcscd.maxReaderContext e pcscd.readBody no arquivo /etc/vmware/config.
  10. Reinicie a VM do Ubuntu e faça login novamente.