Leitora SafeSign de e-CPF no Linux

Gostaria de relatar aqui minhas experiências primárias com utilização de certificado digital no Debian. Como sempre no Brasil, essa é uma exigência do nosso maravilhoso Governo que cobra da população e das empresas sem fornecer condições necessários nível europeu de prestações de contas. Pois bem, desabafado a indignação vamos ao que interessa.

[ Hits: 21.951 ]

Por: Daniel Roque em 02/07/2015


Entendendo o funcionamento



Ao plugar o dispositivo na porta USB, o kernel Linux do Debian já reconheceu o dispositivo, dmesg mostra o algo assim aqui:

# dmesg
[12477.084422] usb 1-1: new full-speed USB device number 13 using xhci_hcd
[12477.253618] usb 1-1: New USB device found, idVendor=08e6, idProduct=3437
[12477.253622] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[12477.253626] usb 1-1: Product: USB SmartCard Reader
[12477.253628] usb 1-1: Manufacturer: Gemalto
[12477.253630] usb 1-1: SerialNumber: ABA0D442


Veja que o módulo do kernel que gerencia o dispositivo é o xhci_hcd, pois bem este é o básico, a primeira parte do funcionamento é o kernel ser capaz de gerenciar o dispositivo.

Reconhecido o dispositivo, o próximo passo é instalar o daemon que fornecerá a interface de comunicação com a leitora, no caso o software do daemon que fará a comunicação com a leitora é o pcscd (Personal Computers with Smart Cards Daemon).

Fazendo o daemon conversar com a leitora, programas adicionais como o Firefox, utilizarão bibliotecas padrões para se comunicar com o daemon.

Efetuando Instalação (Debian)

Como o Debian é a distribuição mãe (do meu coração rsrs), vou focar nela, mas com certeza servirá de referência para outras distribuições.

Como root, instale os pacotes necessários:

# apt-get install libgempc430 opensc libccid pcscd

O daemon pcscd deve gerenciar o dispositivo, mas a propósito de diagnóstico, vamos para o daemon e executar o comando em modo debug, se tudo der certo este passo não será necessário, então se você não quer debugar nada pode pular este passo.

Ainda como root, parar o daemon:

# service pcscd stop

Execute-o em primeiro plano com o debug ativo (sem a leitora):

# pcscd -f -d

Deve surgir na tela algo parecido com isto:

00000000 debuglog.c:292:DebugLogSetLevel() debug level=debug
00000329 configfile.l:283:DBGetReaderListDir() Parsing conf directory: /etc/reader.conf.d
00000075 configfile.l:355:DBGetReaderList() Parsing conf file: /etc/reader.conf.d/libccidtwin
00000131 configfile.l:317:DBGetReaderListDir() Skipping non regular file: ..
00000030 configfile.l:317:DBGetReaderListDir() Skipping non regular file: .
00000038 pcscdaemon.c:569:main() pcsc-lite 1.8.13 daemon ready.
00003546 hotplug_libudev.c:296:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/001/001
00000252 hotplug_libudev.c:296:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/001/001
00000232 hotplug_libudev.c:296:get_driver() Looking for a driver for VID: 0x1BCF, PID: 0x0005, path: /dev/bus/usb/001/002
00000213 hotplug_libudev.c:296:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/001/001
00000241 hotplug_libudev.c:296:get_driver() Looking for a driver for VID: 0x04F2, PID: 0xB40A, path: /dev/bus/usb/001/003
00000213 hotplug_libudev.c:296:get_driver() Looking for a driver for VID: 0x04F2, PID: 0xB40A, path: /dev/bus/usb/001/003
00000204 hotplug_libudev.c:296:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/001/001
00000209 hotplug_libudev.c:296:get_driver() Looking for a driver for VID: 0x058F, PID: 0x6366, path: /dev/bus/usb/001/004
00000259 hotplug_libudev.c:296:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0003, path: /dev/bus/usb/002/001


Agora plugue a leitora, se deu tudo certo algo assim deve surgir na tela:

00001000 ccid_usb.c:595:OpenUSBByName() Found Vendor/Product: 08E6/3437 (Gemalto PC Twin Reader)
00000007 ccid_usb.c:597:OpenUSBByName() Using USB bus/device: 1/15
00002564 ccid_usb.c:1125:get_data_rates() declared: 12903 bps
00000017 ccid_usb.c:1125:get_data_rates() declared: 25806 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 51613 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 103226 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 206452 bps
00000005 ccid_usb.c:1125:get_data_rates() declared: 412903 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 825806 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 154839 bps
00000005 ccid_usb.c:1125:get_data_rates() declared: 258065 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 17204 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 34409 bps
00000005 ccid_usb.c:1125:get_data_rates() declared: 68817 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 137634 bps
00000014 ccid_usb.c:1125:get_data_rates() declared: 275269 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 550538 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 172043 bps
00000005 ccid_usb.c:1125:get_data_rates() declared: 12403 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 24806 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 49612 bps
00000005 ccid_usb.c:1125:get_data_rates() declared: 99225 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 198450 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 396899 bps
00000005 ccid_usb.c:1125:get_data_rates() declared: 74419 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 124031 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 86022 bps
00000005 ccid_usb.c:1125:get_data_rates() declared: 38710 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 64516 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 10323 bps
00000005 ccid_usb.c:1125:get_data_rates() declared: 20645 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 41290 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 82581 bps
00000005 ccid_usb.c:1125:get_data_rates() declared: 165161 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 30968 bps
00000005 ccid_usb.c:1125:get_data_rates() declared: 18750 bps
00000005 ccid_usb.c:1125:get_data_rates() declared: 37500 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 75000 bps
00000005 ccid_usb.c:1125:get_data_rates() declared: 150000 bps
00000005 ccid_usb.c:1125:get_data_rates() declared: 300000 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 600000 bps
00000005 ccid_usb.c:1125:get_data_rates() declared: 112500 bps
00000005 ccid_usb.c:1125:get_data_rates() declared: 187500 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 12500 bps
00000005 ccid_usb.c:1125:get_data_rates() declared: 25000 bps
00000005 ccid_usb.c:1125:get_data_rates() declared: 50000 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 100000 bps
00000005 ccid_usb.c:1125:get_data_rates() declared: 200000 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 400000 bps
00000005 ccid_usb.c:1125:get_data_rates() declared: 125000 bps
00000005 ccid_usb.c:1125:get_data_rates() declared: 56250 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 93750 bps
00000005 ccid_usb.c:1125:get_data_rates() declared: 62500 bps
00000005 ccid_usb.c:1125:get_data_rates() declared: 28125 bps
00000006 ccid_usb.c:1125:get_data_rates() declared: 46875 bps
00004937 commands.c:997:CmdEscapeCheck error on byte 10
00000016 ccid.c:215:set_gemalto_firmware_features() GET_FIRMWARE_FEATURES failed: 612, len=0
00000011 ifdhandler.c:375:IFDHGetCapabilities() tag: 0xFB3, usb:08e6/3437:libudev:0:/dev/bus/usb/001/015 (lun: 0)
00000006 readerfactory.c:355:RFAddReader() Using the reader polling thread
00000402 ifdhandler.c:375:IFDHGetCapabilities() tag: 0xFAE, usb:08e6/3437:libudev:0:/dev/bus/usb/001/015 (lun: 0)
00000011 ifdhandler.c:463:IFDHGetCapabilities() Reader supports 1 slot(s)
00000819 ifdhandler.c:1139:IFDHPowerICC() action: PowerUp, usb:08e6/3437:libudev:0:/dev/bus/usb/001/015 (lun: 0)
00062462 eventhandler.c:289:EHStatusHandlerThread() powerState: POWER_STATE_POWERED
00000058 Card ATR: 3B 7D 18 00 02 80 57 59 50 53 49 44 30 33 83 7F 90 00
05001033 ifdhandler.c:1139:IFDHPowerICC() action: PowerDown, usb:08e6/3437:libudev:0:/dev/bus/usb/001/015 (lun: 0)
00011637 eventhandler.c:478:EHStatusHandlerThread() powerState: POWER_STATE_UNPOWERED


Em um outro terminal execute o comando que vai se comunicar com a leitora:

# opensc-tool --list-readers

Se deu tudo certo ele vai relatar a leitora, como pode ser visto abaixo:

# Detected readers (pcsc)
Nr.  Card  Features  Name
0    Yes             Gemalto PC Twin Reader (ABA0D442) 00 00


O daemon deve executar junto com o sistema, então estes passos de debug não são necessários executar toda vez, em teoria é só plugar a leitora e tocar a vida depois disto.

Vamos instalar o software do SafeSign para o Debian:

# wget http://loja.certificadodigital.com.br/Serasa/UPLOAD/Downloads/591.zip
# unzip 591.zip
# dpkg -i Debian\ 5.0.5/i386/SafeSignIdentityClient-3.0.43-admin.i386.deb


Este software instala o programa de gerenciamento do token, o tokenadmin, e as bibliotecas de comunicação com a leitora que iremos utilizar para configurar o Firefox.

Através do tokenadmin você consegue visualizar da mesma forma que em outros sistemas operacionais o seu certificado, o estado etc, bem legalzinho.

    Próxima página

Páginas do artigo
   1. Entendendo o funcionamento
   2. Configuração do Firefox
Outros artigos deste autor

Linux Group Policy

Samba 4 como controlador de domínio com Active Directory da MS

Leitura recomendada

Instalando o ATI Driver (Suse 9.1)

Esclarecendo a questão dos drivers: o problema do suporte a hardware

Netbook Positivo Mobo White 1020 com Mandriva

Drivers NVIDIA (receita de bolo)

Webcam Genius no Linux - Slackware

  
Comentários
[1] Comentário enviado por sacioz em 02/07/2015 - 16:52h


Carvalho ! Ótimo artigo , talvez deslumbre meu , mas foi um esforço e tanto , obrigado .
Sacioz...)))
.
:q

[2] Comentário enviado por Lisandro em 03/07/2015 - 13:25h

Parabéns pelo artigo. Muito bom mesmo.
Já favoritei.

[3] Comentário enviado por teccert em 04/07/2015 - 06:26h

Realmente é um ótimo artigo, contudo não funcionou com meu eToken Alladin (token usb) da certsign no ubuntu 14.04. O que acontece é que o sistema o reconhece, o programa da safenet mostra toda informação do eToken, o programa NFE do Governo de São Paulo também reconhece o eToken e instala os certificados, mas quando acesso o site da Receita Federal não funciona, ou seja, não é reconhecido, já instalei as cadeias de certificados, segui o seu tutorial, já vasculhei tudo sobre o assunto na net e até agora nada. A questão maior, é que detesto usar o sistema operacional proprietário, onde tudo é ruim, o notebook parece uma carroça, dá erros constantes, e por cima, mesmo com todo o cuidado, ainda é uma porta aberta aos piratas virtuais. No Ubuntu 10.04 e 12.04 o eToken funcionou muito bem.
Preciso que alguém me ajude, mesmo que eu tenha que contribuir financeiramente. Meu email é: jeronimo.informatica@gmail.com

[4] Comentário enviado por tiekookeit em 04/07/2015 - 18:43h


[3] Comentário enviado por teccert em 04/07/2015 - 06:26h

Realmente é um ótimo artigo, contudo não funcionou com meu eToken Alladin (token usb) da certsign no ubuntu 14.04. O que acontece é que o sistema o reconhece, o programa da safenet mostra toda informação do eToken, o programa NFE do Governo de São Paulo também reconhece o eToken e instala os certificados, mas quando acesso o site da Receita Federal não funciona, ou seja, não é reconhecido, já instalei as cadeias de certificados, segui o seu tutorial, já vasculhei tudo sobre o assunto na net e até agora nada. A questão maior, é que detesto usar o sistema operacional proprietário, onde tudo é ruim, o notebook parece uma carroça, dá erros constantes, e por cima, mesmo com todo o cuidado, ainda é uma porta aberta aos piratas virtuais. No Ubuntu 10.04 e 12.04 o eToken funcionou muito bem.
Preciso que alguém me ajude, mesmo que eu tenha que contribuir financeiramente. Meu email é: jeronimo.informatica@gmail.com


Se tu for em Editar -> Preferências -> Avançado -> Certificados -> Dispositivos

Clicar em teu certificado, o botão "Logar" ativa? Se ativa, você consegue se logar?
Outra dúvida, ainda na aba de certificado, a opção "Quando um servidor solicitar meu certificado pessoal:" está marcado "Perguntar quando necessário", se não, deixe ele marcado e teste novamente.

[5] Comentário enviado por worker em 04/07/2015 - 19:43h

Voce tem problemas de acesso soh na Receita? Consegue fazer a assinatura digital em outros sites? Qual a versao do SAC que esta usando?


[6] Comentário enviado por pinduvoz em 06/07/2015 - 09:06h


Eu tinha conseguido operar meu e-cpf de cartão no Tribunal de Justiça de São Paulo, mas não no Superior Tribunal de Justiça, em Brasília (ligando para o suporte técnico de lá, responderam que o sistema adotado só funcionaria no Windows).

Depois de um tempo, meu e-cpf de cartão parou de funcionar também no Tribunal de São Paulo.

Agora tenho um e-cpf de token, fornecido pela OAB (o anterior era da AASP). Então vou tentar novamente, até porque nunca tentei com o Ubuntu 14.4.

[7] Comentário enviado por teccert em 06/07/2015 - 14:50h

Meu problema é no acesso ao site da Receita. O interessante é que o programa de Nota Fiscal Eletrônica Paulista, encontra o token e carrega os certificados, só não funciona via navegador, firefox, goolgle chome e opera.


[8] Comentário enviado por teccert em 06/07/2015 - 14:52h

O led do token acendem e quando o safenet ou o NFE o acessa, pisca como se estivesse processando, se comunicando.


[9] Comentário enviado por worker em 06/07/2015 - 20:45h


Você seguiu o procedimento que o colega postou ? Não funcionou? Poste aqui as msg de erro do site da Receita para tentarmo achar a solução.
Em tempo em alguns sites é preciso logar como sugerido abaixo, em versões mais antigas do Firefox isso não acontecia.

[4] Comentário enviado por tiekookeit em 04/07/2015 - 18:43h

Se tu for em Editar -> Preferências -> Avançado -> Certificados -> Dispositivos

Clicar em teu certificado, o botão "Logar" ativa? Se ativa, você consegue se logar?
Outra dúvida, ainda na aba de certificado, a opção "Quando um servidor solicitar meu certificado pessoal:" está marcado "Perguntar quando necessário", se não, deixe ele marcado e teste novamente.

[10] Comentário enviado por teccert em 07/07/2015 - 07:22h

Percebi que o dispositivo não aparece na quia DISPOSITIVO da preferencia->avançado->certificado->dispositivo do Firefox.

[11] Comentário enviado por teccert em 07/07/2015 - 07:26h

Os arquivos que o artigo faz referencia deve ser para que usa outro tipo de dispositivo, tal como cartão e não o token usb, pois não são encontrados neste meu caso. Talvez esteja ai o problema, eu preciso saber em meu caso particular que módulo e caminho correto, talvez se alguém fizer uso deste token usb no ubuntu, possa me indicar os mesmos.

[12] Comentário enviado por worker em 07/07/2015 - 11:10h


Bom temos uma luz, sabemos o que falta no Firefox.

Estou no trabalho, sem o meu note, então tente o seguinte, se não der certo comunique e à noite em casa vejo melhor.

Voce precisa carregar um novo dispositivo, aí vai pedir o caminho da biblioteca, (o nome da lib vai depender da versão do SAC que voce tem, no meu caso é a 8.3, então o nome é libetoken.so.8.3....mais algoi que não lembro).
de qualquer forma o caminho é este: /lib/libetoken.so.8.3 (se sua versão do SAC for outra, procure alguma lib que começe com libetoken.so...) deve resolver.

bopa sorte!

[13] Comentário enviado por teccert em 07/07/2015 - 13:35h

Seguindo a orientação de WORKER, agora ao acessar o site da receita, é apresentado a razão social do token e solicitado a senha do certificado, quando digitado a senha, dá o erro abaixo:

Ocorreu um erro. (Código: 403)

Para acessar esta página, você deve selecionar o seu certificado digital.

Sr(a) Contribuinte, a partir do dia 05/06/2012 às 19h (horário de Brasília) o Portal e-CAC só poderá ser acessado se as novas cadeias de certificados estiverem instaladas em seu computador. Para instalá-las, acesse os três links:

ICP-BRASIL v2
Autoridade Certificadora da Secretaria da Receita Federal v3
Autoridade certificadora do SERPRORFB v3

Sistema Operacional

Se o sistema operacional for Windows, confirme se a versão instalada é Windows XP com Service Pack 3 ou superior;
Se o sistema operacional NÃO for Windows, verifique junto ao fornecedor se o sistema suporta o uso da função de hash SHA-2.

Veja mais informações no passo-a-passo de instalação da nova cadeia.

Retornar para a página inicial do e-CAC.


[14] Comentário enviado por teccert em 07/07/2015 - 13:37h

Adianto que as cadeias ICP-BRASIL v2 ; Autoridade Certificadora da Secretaria da Receita Federal v3 e Autoridade Certificadora do SERPRORFB v3, já estão instaladas.


[15] Comentário enviado por worker em 07/07/2015 - 14:26h

Abra o Firefox se você está logado no token, às vezes isso ocorre, o colega postou aí em cima como logar no token. Deposis disso abra a pagina da receita e tente novamente.

acrescentado:

Quando voce instalou a cadeia de certificados, voce marcou as caixas, para todos os certificados:
-Considerar confiável esta CA para identificar sites
-Considerar confiável esta CA para identificar autores de aplicativos

Depois que voce colocar a senha do token deve surgir uma tela com as informações do seu certificado; clicando em ok abre o site


[16] Comentário enviado por teccert em 07/07/2015 - 21:38h

Logo no token no firefox, mas quando acesso o site da receita federal dá o mesmo erro; (código 403)

[17] Comentário enviado por worker em 08/07/2015 - 10:01h

Vamos explorar mais uma possibilidade, qual seja, por alguma razão o seu certificado digital não está sendo associado às cadeias de certificação da sua certificadora. Entre no site da sua certificadora baixe e instale a cadeia de certificados dela, reinicie o Firefox e repita os procedimentos para acesso.

[18] Comentário enviado por teccert em 08/07/2015 - 16:34h

Caro Worker, graças a sua inteligência e boa vontade em ajudar aos mais simples, agora posso usar o meu certificado digital etoken alladin (usb) no Ubuntu 14.04. Foi só seguir mais uma vez a sua orientação acima, que tudo voltou a funcionar, já me loguei no site da Receita Federal.
Vale salientar que a mais de 2 anos que venho tentando fazer com que este token usb funcionasse no Ubuntu 14.04, porém só agora consegui por meio das sua orientações.
Que Deus te dê sempre mais; estarei sempre grato ao amigo!

[19] Comentário enviado por worker em 09/07/2015 - 11:07h

Fico contente que encontramos a solução.
Obrigado, fique com Deus!

Marcos

[20] Comentário enviado por diegoBrito em 21/02/2016 - 12:21h

Ward!
Vou tentar, aplicar no meu leitor chinês de smart card pra ver se rola no Fedora 20.

[21] Comentário enviado por camolesi em 26/04/2016 - 08:42h

Bom Dia.
Caro teccert, o seu ubuntu 14.04 estava em um sistema 32 ou 64 bits ?

Obrigado.

[22] Comentário enviado por fsb30 em 17/12/2016 - 14:03h

Srs, boa tarde! Sou novo entusiasta do Linux e, no momento, usuário do Linux Mint. Uma das coisas que preciso resolver para concluir a migração das "Janelas" para cá é a questão do uso dos Certificados Digitais. Faço uso constante do certificado da empresa para acessar a Receita Federal. Pesquisando, achei esse artigo acima muito bem escrito e didático. Fiz todo o procedimento, no entanto estou tendo problema de dependência com uma lib e estou tendo esse retorno de erro:

A descompactar safesignidentityclient (3.0.43) ...
dpkg: problemas com dependências impedem a configuração de safesignidentityclient:
safesignidentityclient depende de libssl0.9.8; porém:
Pacote libssl0.9.8 não está instalado.

dpkg: erro ao processar o pacote safesignidentityclient (--install):
problemas de dependência - deixando desconfigurado
Erros foram encontrados durante o processamento de:
safesignidentityclient

Qual a sugestão dos nobres amigos para resolver isso? Fico grato desde já!

[23] Comentário enviado por tiekookeit em 27/12/2016 - 08:37h

Acredito que este aqui deva servir
http://packages.ubuntu.com/precise/libssl0.9.8
ou
https://community.linuxmint.com/software/view/libssl0.9.8

Um detalhe, o firefox mais novos que o 46(+-), tem quebrado a cadeia de certificado brasileira, ou sei lá o que, o fato é que ele não reconhece os sites brasileiros como seguro, caso tenha alguma dificuldade, tenha isto em mente.


Contribuir com comentário