terça-feira, 19 de julho de 2011

Utilizando o certificado digital no Banco do Brasil

A Cobra é uma empresa bastante competente, e tem apresentado várias soluções interessantes para a utilização de certificação digital.

Agora, ela tem uma solução um tanto quanto interessante para a utilização dos vários tokens disponíveis no mercado...

Eu havia adquirido um token USB da Pronova, o ePass2000. Estava usando ele tranquilamente, e acessava o site do Banco do Brasil sem problemas... Em um dado momento, precisei comprar outro token, e resolvi comprar um outro token da Pronova. Acabei comprando um Protoken Auto.

Ledo engano, achar que não teria nenhum problema! O site do Banco do Brasil não aceitava o certificado de jeito nenhum!

Depois de várias ligações, reclamações e tudo o mais, resolvi tentar resolver o problema! Pesquisando aqui e ali, descobri que o problema está no padrão da certificação digital. Não existe uma interface única, utilizada por todos os tokens! Cada fornecedor cria e mantém seu próprio driver...

O site do Banco do Brasil, procura, por nome, os arquivos dos tokens criptográficos que ele suporta! Basta analisar o console de execução da máquina virtual java, que você pode ver os arquivos que ele procura:

aetpkss1.dll
gclib.dll
pk2priv.dll
w32pk2ig.dll
ngp11v211.dll
eTPkcs11.dll
acospkcs11.dll
dkck201.dll
dkck232.dll
cryptoki22.dll
cmP11.dll
acpkcs.dll
slbck.dll
libaetpkss.so
libgpkcs11.so
libgpkcs11.so.2
libepsng_p11.so
libepsng_p11.so.1
/usr/local/ngsrv/libepsng_p11.so.1
libeTPkcs11.so
libeToken.so
libeToken.so.4
opensc-pkcs11.so
/usr/lib/opensc-pkcs11.so
/usr/lib/pkcs11/opensc-pkcs11.so
libcmP11.so

Então, caso você tenha instalado um token, queria acessar o Banco do Brasil, e não tem nenhum desses arquivos, você está com problemas! (Pelo menos, foi o que aconteceu comigo...)

Agora, uma leitura do log, de maneira mais detalhada, percebe que a chamada é através do método: iaik.pkcs.pkcs11.wrapper.PKCS11Implementation.connect(Native Method). Ou seja, o aplicativo, na verdade, está usando o arquivo de driver como uma implementação do padrão PKCS11.

Então, bastou fazer uma cópia do arquivo "Pronovacsp11.dll" (que é o driver do meu token criptográfico) e renomear para qualquer um dos arquivos que o aplicativo java procura. No meu caso, eu renomeei para "aetpkss1.dll".

O que acontece é que o aplicativo encontra o arquivo de driver do token e, mesmo que não seja exatamente o arquivo esperado, como ele imlementa as interfaces do padrão PKCS#11, ele pode ser utilizado sem problemas.

7 comentários:

Anônimo disse...

cara, eu também não tenho nenhum desses arquivos. Tem como baixar??? Porque eu também não tenho o Pronovacsp11.dll

DaviAnabuki disse...

Então, como esses arquivos são arquivos de driver... Eles são específicos para o token ou o cartão que você estiver usando...

Ou seja, a não ser que o fabricante disponibilize um driver específico para o seu smartcart, não adiantaria baixar esses arquivos...

Uma opção é que, tendo em mãos o driver do seu smartcard, você pode tentar renomear para algum desses nomes, já que o PKCS#11 é um padrão. Mas não há garantia de que funcionará...

Sergio Julián Z M Caro disse...

Em que pasta deve ser colado o arquivo renomeado? Obrigado!

DaviAnabuki disse...

Você pode colocar o arquivo no diretório c:\windows\system32.

Maira Carvalho disse...
Este comentário foi removido pelo autor.
Maira Carvalho disse...

Oi! Passando para agradecer por este post! Meio indiretamente, me ajudou a resolver meu problema para usar o certificado A3 da Certisign com o Firefox no Ubuntu. Valeu mesmo! Abraço :)

DaviAnabuki disse...

Sempre é bom saber que as dicas ajudam alguém! ;D

A propósito, qual o modelo do token (ou cartão) que você usou?