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: 20.394 ]

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

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

Linux Group Policy

Leitura recomendada

Ångström: Linux em Palmtops, portáteis e embarcados sem mistério

Artigo número 100: AR.Drone - O robô voador com Linux embarcado

Processador - Tipos e características

Instalando scanner HP PSC 1500 series e outros no Debian Etch

Instalação da placa de rede D-Link DWL-G520 no 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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts