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 os pacotes de biblioteca necessários.
    1. Instale a biblioteca PAM e outros pacotes.
      zypper install pam_pkcs11 mozilla-nss mozilla-nss-tools 
          pcsc-lite pcsc-ccid opensc coolkey pcsc-tools

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

    2. Para usar os pacotes instalados, ative extensões como PackageHub e instale as ferramentas PC/SC. Por exemplo, você pode executar os seguintes comandos para o SLED/SLES 12 SP3.
      SUSEConnect --list-extensions
      SUSEConnect -p PackageHub/12.3/x86_64
      zypper in pcsc-tools
  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. Localize o certificado de CA raiz que você baixou, transfira-o para um arquivo .pem e crie um arquivo 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
    3. Instale âncoras de confiança no banco de dados do 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
    4. Instale os drivers necessários.
      cp libcmP11.so /usr/lib64/
      modutil -add "piv card 2.0" -libfile /usr/lib64/libcmP11.so -dbdir /etc/pam_pkcs11/nssdb/
  3. Edite o arquivo /etc/pam_pkcs11/pam_pkcs11.conf.
    1. Exclua a linha use_pkcs11_module = nss. Em seu lugar, adicione a linha use_pkcs11_module = mysc.
    2. Adicione o módulo mysc, conforme mostrado no exemplo a seguir.
      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;
      }
    3. Atualize a configuração do mapeador de Nome Comum, conforme mostrado no exemplo a seguir.
      # 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;}
    4. Exclua a linha use_mappers = ms. Em seu lugar, adicione a linha use_mappers = cn, null.
  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.
      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
    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 apropriado para sua versão do SLED/SLES.
    • (SLED/SLES 12.x) Adicione a linha rcpcscd start a /etc/init.d/after.local para que o arquivo seja semelhante ao exemplo a seguir.
      #! /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) 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
      Depois de editar o arquivo pcscd.service, execute o seguinte comando.
      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.
    rcSuSEfirewall2 stop
    chkconfig SuSEfirewall2_setup off
    chkconfig SuSEfirewall2_init off
    Observação: Às vezes, o redirecionamento de cartão inteligente falha quando o firewall está ativado.
  8. (SLED/SLES 15.x) Para garantir que a saudação do cartão inteligente funcione corretamente, modifique o arquivo org.gnome.Shell.desktop na VM.
    1. Abra o arquivo /usr/share/applications/org.gnome.Shell.desktop.
    2. No arquivo, localize e substitua Exec=/usr/bin/gnome-shellpela linha a seguir.
      Exec=sh -c "DISPLAY=:${DISPLAY##*:} exec /usr/bin/gnome-shell"
      
    3. Salve e feche o arquivo.
  9. 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.
  10. 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.
    zypper install -f -y pcsc-lite libpcsclite1

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

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