Para configurar o redirecionamento de cartão inteligente em uma máquina virtual (VM) SLED/SLES, 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

Conclua as etapas descritas em Integrar uma máquina virtual SLED/SLES ao Active Directory para redirecionamento de cartão inteligente.

Procedimento

  1. Instale a biblioteca PAM e outros pacotes necessários.
    sudo zypper install pam_pkcs11 mozilla-nss mozilla-nss-tools pcsc-lite pcsc-ccid opensc pcsc-tools

    Talvez seja necessário habilitar extensões como PackageHub para instalar todos os pacotes anteriores.

  2. Instale um certificado de CA raiz.
    1. Faça download de um certificado de CA raiz e salve-o em /tmp/certificate.cer no sistema. Consulte Como exportar o certificado da autoridade de certificação raiz.
    2. Instale âncoras de confiança no banco de dados do NSS.
      sudo mkdir /etc/pam_pkcs11/nssdb
      sudo certutil -N -d /etc/pam_pkcs11/nssdb
      sudo certutil -L -d /etc/pam_pkcs11/nssdb
      sudo certutil -A -n rootca -i certificate.pem -t "CT,CT,CT" -d /etc/pam_pkcs11/nssdb
    3. Instale os drivers necessários.
      sudo modutil -add "opensc lib" -libfile /usr/lib64/opensc-pkcs11.so -dbdir /etc/pam_pkcs11/nssdb/
  3. Edite o arquivo /etc/pam_pkcs11/pam_pkcs11.conf conforme mostrado no exemplo a seguir.
    use_pkcs11_module = opensc;
    ...
    pkcs11_module opensc {
         module = /usr/lib64/opensc-pkcs11.so;
         description = "OpenSC PKCS#11 module";
         slot_num = 0;
         nss_dir = /etc/pam_pkcs11/nssdb;
         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;         
    }
  4. Edite o arquivo de configuração /etc/pam_pkcs11/cn_map para que ele inclua a seguinte linha.
    ads-hostname -> ads-hostname
  5. Modifique a configuração do PAM.
    1. Para possibilitar a configuração da autenticação do smart card, primeiro desative a ferramenta pam_config.
      sudo find /etc/pam.d/ -type l -iname "common-*" -delete
      sudo for X in /etc/pam.d/common-*-pc; do cp -ivp $X ${X:0:-3}; done
    2. Crie um arquivo chamado common-auth-smartcard no diretório /etc/pam.d/. Adicione o seguinte conteúdo ao arquivo.
      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
    3. Substitua a linha auth include common-auth pela linha auth include common-auth-smartcard em ambos os arquivos: /etc/pam.d/gdm e /etc/pam.d/xscreensaver.
  6. Para configurar o serviço pcscd para ser iniciado automaticamente após a reinicialização da VM, edite o arquivo pcscd.service.
    1. Adicione a linha WantedBy=multi-user.target a /usr/lib/systemd/system/pcscd.service para que o arquivo seja semelhante ao exemplo a seguir.
      [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
    2. Depois de editar o arquivo pcscd.service, execute o seguinte comando.
      sudo systemctl enable pcscd
    Observação: Se o serviço pccd não for iniciado após a reinicialização da VM, o primeiro logon por meio de pam_pkcs11 falhará.
  7. Desligue o firewall.
    sudo rcSuSEfirewall2 stop
    sudo chkconfig SuSEfirewall2_setup off
    sudo chkconfig SuSEfirewall2_init off
    Observação: Às vezes, o redirecionamento de cartão inteligente falha quando o firewall está ativado.
  8. Para oferecer suporte ao recurso Single Sign-on (SSO) do cartão inteligente, configure o arquivo /etc/vmware/viewagent-greeter.conf. Consulte Definindo opções em arquivos de configuração em uma área de trabalho Linux.
  9. 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 zypper install -f -y pcsc-lite libpcsclite1

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

  10. 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.
  11. Reinicie a VM e faça login novamente.