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 de autoridade de certificação 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

      Pode ser necessário habilitar extensões como PackageHub para instalar todos os pacotes acima

    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 da Autoridade de Certificação Raiz (CA).
    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 de 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 pcscd não for iniciado após a reinicialização da VM, o primeiro logon via pam_pkcs11 falhará.
  7. Desabilite 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. Atualize a biblioteca do PC/SC Lite para a versão 1.8.8.
    1. Habilite as extensões e os módulos necessários para a instalação de pacotes dependentes.
      • (SLED/SLES 12.x) Execute o seguinte comando, substituindo <SUSE-version> pelo número da versão da sua distribuição, por exemplo, 12.5 para SLED/SLES 12 SP5.
        SUSEConnect -p sle-sdk/<SUSE-version>/x86_64
      • (SLED/SLES 15.x) Execute o seguinte comando, substituindo <SUSE-version> pelo número da versão da sua distribuição, por exemplo, 15.3 para SLED/SLES 15 SP3.
        SUSEConnect -p PackageHub/<SUSE-version>/x86_64
    2. Atualize a biblioteca do PC/SC Lite.
      zypper in git autoconf automake libtool flex libudev-devel gcc
      git clone https://salsa.debian.org/rousseau/PCSC.git
      cd PCSC/
      git checkout -b pcsc-1.8.8 1.8.8
      ./bootstrap
      ./configure -program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr 
        --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include  
        --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib64 
        --mandir=/usr/share/man --infodir=/usr/share/info --disable-static --enable-usbdropdir=/usr/lib64/pcsc/drivers
      make
      make install
  9. (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.
  10. Instale o pacote Horizon Agent, com o redirecionamento de cartão inteligente ativado.
    sudo ./install_viewagent.sh -m yes
  11. Reinicie a VM e faça login novamente.