Linux Kamarada

Configurando certificado digital no Linux openSUSE

Um certificado digital permite identificar e autenticar pessoas físicas, empresas ou computadores em sites e sistemas. Ele garante princípios da segurança da informação às operações realizadas por meio dele, como autenticidade e não repúdio, atribuindo-lhes validade jurídica e dispensando o reconhecimento de firma.

A ICP-Brasil define 11 tipos de certificados digitais, dois quais 2 são mais comuns:

  • o Certificado A1, que é um arquivo armazenado no computador ou dispositivo móvel (como smartphone ou tablet) e tem validade de 1 ano; e
  • o Certificado A3, que é armazenado em uma mídia criptográfica, como um cartão inteligente (smart card) ou token, e tem validade de 1 a 3 anos.

Você precisa de uma leitora de cartão para usar um cartão inteligente. Um token possui a mesma tecnologia, mas é um dispositivo completo que você pode plugar diretamente ao computador (como se fosse uma leitora de cartão com um cartão não removível dentro).

Um cartão inteligente parece um cartão de crédito e requer o uso de uma leitora.

Um cartão inteligente parece um cartão de crédito e requer o uso de uma leitora.

Um token parece um pendrive, mas é uma mídia criptográfica: armazena apenas certificados digitais.

Um token parece um pendrive, mas é uma mídia criptográfica: armazena apenas certificados digitais.

Algumas utilidades do certificado digital para pessoas físicas e jurídicas são:

  • Assinar e enviar documentos com validade jurídica pela Internet;
  • Assinar Nota Fiscal eletrônica (NF-e);
  • Entrar em ambientes seguros;
  • Acessar sistemas seguros do governo que possibilitam atendimentos antes possíveis apenas presencialmente, como o eCAC da Receita Federal;
  • Enviar declarações de imposto de renda, seja de pessoa física ou jurídica; e
  • Realizar transações bancárias com mais segurança.

Para uma lista completa de tipos de certificados digitais e suas possíveis utilizações para pessoas físicas e jurídicas, consulte estas páginas:

Há também os certificados digitais que identificam sites. Quando você acessa um site que apresenta um certificado válido, o navegador exibe o ícone de um cadeado verde, indicando que o site é autêntico e seguro. Já falamos sobre certificados de sites em outro post.

Neste post, você verá como utilizar um token para acessar um sistema do governo com certificado digital no Linux openSUSE. Para referência futura, utilizo a versão 15.0 Beta.

Na demonstração, vou utilizar um token USB igual ao da imagem, modelo eToken PRO, da fabricante SafeNet (antiga Aladdin).

Cartões inteligentes e tokens são semelhantes em funcionamento, instalação e uso. Se você possui um cartão e uma leitora, pode seguir essas mesmas instruções.

Instalando os pacotes necessários

No Linux, a utilização de mídias criptográficas é gerenciada principalmente pelos softwares PC/SC e OpenSC.

Para instalá-los no openSUSE, execute o seguinte comando (observe a notação para executá-lo como usuário root):

1
# zypper in opensc pcsc-ccid pcsc-lite pcsc-tools

Inicie o serviço do PC/SC, que disponibiliza as mídias criptográficas para os aplicativos, e habilite-o para que seja iniciado automaticamente junto com o sistema:

1
2
# systemctl start pcscd
# systemctl enable pcscd

Você pode verificar que o serviço está funcionando com:

1
2
3
4
5
6
7
8
9
10
# systemctl status pcscd
● pcscd.service - PC/SC Smart Card Daemon
   Loaded: loaded (/usr/lib/systemd/system/pcscd.service; indirect; vendor preset: disabled)
   Active: active (running) since Sun 2018-04-15 17:43:24 -03; 10s ago
 Main PID: 10394 (pcscd)
    Tasks: 3 (limit: 4915)
   CGroup: /system.slice/pcscd.service
           └─10394 /usr/sbin/pcscd --foreground

Apr 15 17:43:24 localhost.localdomain systemd[1]: Started PC/SC Smart Card Daemon.

Conecte o token e verifique que ele é reconhecido como um dispositivo USB (note que você pode executar o comando a seguir como usuário root ou comum):

1
2
3
4
5
6
7
8
9
10
$ lsusb
Bus 001 Device 002: ID 8087:8001 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 005: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 002 Device 004: ID 1bcf:2c81 Sunplus Innovation Technology Inc.
Bus 002 Device 002: ID 13fe:4200 Kingston Technology Company Inc.
Bus 002 Device 006: ID 045e:0745 Microsoft Corp. Nano Transceiver v1.0 for Bluetooth
Bus 002 Device 007: ID 0529:0620 Aladdin Knowledge Systems Token JC
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Observe o token listado na penúltima linha.

Verifique que o PC/SC reconhece o token com o comando:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
$ pcsc_scan
PC/SC device scanner
V 1.5.2 (c) 2001-2017, Ludovic Rousseau <ludovic.rousseau@free.fr>
Using reader plug'n play mechanism
Scanning present readers...
0: SafeNet eToken 5100 [Main Interface] 00 00

Sun Apr 15 17:45:37 2018
 Reader 0: SafeNet eToken 5100 [Main Interface] 00 00
  Card state: Card inserted,
  ATR: 3B D5 18 00 81 31 FE 7D 80 73 C8 21 10 F4

ATR: 3B D5 18 00 81 31 FE 7D 80 73 C8 21 10 F4
+ TS = 3B --> Direct Convention
+ T0 = D5, Y(1): 1101, K: 5 (historical bytes)
  TA(1) = 18 --> Fi=372, Di=12, 31 cycles/ETU
    129032 bits/s at 4 MHz, fMax for Fi = 5 MHz => 161290 bits/s
  TC(1) = 00 --> Extra guard time: 0
  TD(1) = 81 --> Y(i+1) = 1000, Protocol T = 1
-----
  TD(2) = 31 --> Y(i+1) = 0011, Protocol T = 1
-----
  TA(3) = FE --> IFSC: 254
  TB(3) = 7D --> Block Waiting Integer: 7 - Character Waiting Integer: 13
+ Historical bytes: 80 73 C8 21 10
  Category indicator byte: 80 (compact TLV data object)
    Tag: 7, len: 3 (card capabilities)
      Selection methods: C8
        - DF selection by full DF name
        - DF selection by partial DF name
        - Implicit DF selection
      Data coding byte: 21
        - Behaviour of write functions: proprietary
        - Value 'FF' for the first byte of BER-TLV tag fields: invalid
        - Data unit in quartets: 2
      Command chaining, length fields and logical channels: 10
        - Logical channel number assignment: by the card
        - Maximum number of logical channels: 1
+ TCK = F4 (correct checksum)

Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
3B D5 18 00 81 31 FE 7D 80 73 C8 21 10 F4
	Bank of Lithuania Identification card
	Gemalto SafeNet eToken Java Based Cards
	https://safenet.gemalto.com/multi-factor-authentication/authenticators/pki-usb-authentication/

Observe que esse comando não para, você deve teclar Ctrl + C para interrompê-lo.

O OpenSC pode ser testado com o comando:

1
2
3
4
$ opensc-tool -l
# Detected readers (pcsc)
Nr.  Card  Features  Name
0    Yes             SafeNet eToken 5100 [Main Interface] 00 00

Especificidades do token Aladdin/SafeNet

Observe que ambos os softwares reconhecem o token, mas o atribuem um modelo errado: SafeNet eToken 5100, que é outro token da mesma fabricante.

A consequência disso é que não é possível, a priori, utilizar o token. Os comandos a seguir que deveriam retornar mais informações sobre o token resultam em erro:

1
2
3
4
5
$ opensc-tool -r 0 -f
SELECT FILE failed: Incorrect parameters in APDU

$ pkcs15-tool --reader 0 --list-pins
Failed to connect to card: Card is invalid or cannot be handled

Vários tokens já são reconhecidos e funcionam bem com a dupla PC/SC e OpenSC, mas no caso específico do Aladdin/SafeNet eToken PRO é necessário instalar também um software proprietário da SafeNet, que é o SafeNet Authentication Client.

O ideal é que você obtenha esse software da certificadora onde adquiriu o token, mas você pode obtê-lo do site da Soluti, que é uma certificadora que suporta a utilização de Linux.

Acesse o site da Soluti e clique, na sequência, em:

  • Dúvidas e suporte
  • Token
  • SafeNet
  • Linux

Por fim, clique no link SafeNet Authentication Client 9.1 para distribuições Red Hat/Fedora de 32 ou 64 bits (o primeiro da lista):

Salve o arquivo.

Ele é criado com o nome safenet_rpm_9.1.7-0.tar.gz na pasta Downloads.

Abra essa pasta, clique com o botão direito do mouse no arquivo baixado e clique em Extrair aqui:

É criada a pasta safenet_rpm_9.1.7-0 com o conteúdo extraído do arquivo.

Clique com o botão direito nessa pasta e depois clique em Abrir no terminal:

Alterne para o usuário root, para realizar a instalação:

1
$ su

Instale os requisitos do SafeNet Authentication Client:

1
2
# zypper in libcrypto43 openssl
# ln -s /usr/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.6

E, por fim, instale o SafeNet Authentication Client em si:

1
2
3
4
5
6
7
8
9
10
11
# cd safenet_rpm/x86_64
# ./install.sh
################################# [100%]
Updating / installing...
################################# [100%]
could not find mozilla directory
Enable pcscd service
Enable SACSrv service
SafeNet Authentication Client installation completed.
Installing Language code pt-BR.
logout and login to apply changes

Reinicie o computador (fazer logout e login como sugere o script de instalação não funcionou ao menos para mim).

Quando voltar, inicie o SafeNet Authentication Client Tools:

(na dúvida, tente clicar em ambos os ícones, acontece comigo também)

Observe que ele reconhece o token devidamente:

Configurando o token no Firefox

Para poder utilizar o token no navegador Mozilla Firefox, vamos cadastrá-lo como um dispositivo de segurança.

Antes, certifique-se de adicionar o certificado da sua Autoridade Certificadora ao navegador, do contrário o navegador não conseguirá verificar a hierarquia e validar seu certificado. Para mais informações, leia:

Para cadastrar seu token como um dispositivo de segurança, com o Firefox aberto, abra o menu do Firefox e clique em Preferências.

Depois, clique em Privacidade e Segurança e, por último, no botão Dispositivos de Segurança, no final:

Na caixa de diálogo que aparece, Gerenciador de dispositivos, clique em Carregar.

Na caixa de diálogo seguinte, em Nome do módulo, digite um nome que identifique o token (por exemplo, eToken).

Em Nome do arquivo do módulo, informe o caminho para a biblioteca do token:

  • se seu token foi reconhecido pelo OpenSC, informe /usr/lib64/opensc-pkcs11.so;
  • se você instalou o SafeNet Authentication Client (meu caso), informe /usr/lib64/libeToken.so;
  • para outros tokens, siga as instruções fornecidas pela fabricante ou certificadora.

Quando terminar, clique em OK:

O token é adicionado à lista de Dispositivos e módulos de segurança. Clique em OK:

Acessando o sistema eCAC

O eCAC é um sistema da Receita Federal que disponibiliza pela Internet vários serviços para pessoas físicas e jurídicas, antes disponíveis apenas presencialmente. É possível acessá-lo por meio de um código de acesso gerado na hora, mas menos serviços estão disponíveis por esse meio, que é menos seguro. A totalidade dos serviços está disponível apenas para quem o acessa com certificado digital.

Alguns dos serviços mais úteis para pessoas físicas incluem consultar declarações e recibos já enviados do imposto de renda e verificar se a declaração caiu na malha fina, assim como tomar ações para regularizar a situação.

Observação: o eCAC é um sistema do governo assinado com um certificado de segurança próprio. Para acessá-lo, você deve instalar o certificado da Autoridade Certificadora Raiz Brasileira. Se ainda não fez isso, veja como fazer neste post:

Para acessar o eCAC, certifique-se de que o token está conectado ao computador.

Depois, clique no link:

https://cav.receita.fazenda.gov.br/

Na tela de login, clique em Certificado Digital:

Digite a senha PIN do token e clique em OK:

Confirme as informações do certificado a ser utilizado e clique em OK:

Verifique suas informações na parte superior da tela:

Pronto! Agora você está no ambiente seguro da Receita Federal e sabe que configurou corretamente seu certificado digital no Linux openSUSE!

Divirta-se bastante… (have a lot of fun…)

Referências

Gostou? Que tal compartilhar?

Me paga um café?
Se você gostou muito, se foi muito útil pra você, será que vale um café? Se quiser, você pode "me pagar um café" pelo PayPal ou contribuir com o projeto de outras formas.

Comentários

Sobre

O Projeto Linux Kamarada visa divulgar e promover o Linux como um sistema operacional robusto, seguro, versátil e fácil de usar, adequado para o uso diário seja em casa, no trabalho ou no servidor. Os focos do projeto são principalmente distribuição e documentação.

Facebook

Autor