[Resolvido] SunMSCAPI X SunPKCS11 - Identificar e carregar Token Certificado A3  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
pedruhenrik
GUJ Master
[Avatar]

Membro desde: 08/05/2008 11:48:36
Mensagens: 1043
Localização: São Paulo - SP
Offline

Boa tarde pessoal!

Estou apanhando feio com o seguinte problema:

Desenvolvi uma aplicação que efetua a assinatura digital tanto com certificado A1 quanto A3.
Agora preciso implementar a aplicação para escolher antes da assinatura qual certificado ele deseja utilizar seja A1 ou A3 porém o usuário pode usar QUALQUER tipo de token A3 e até aonde eu entendi, através do SunPKCS11 ele sempre irá exigir um arquivo de configuração (exp: token.cfg).

O fato é que nem sempre o usuário final tem essas informações para gerar o arquivo, dei uma lida em vários materiais no google e não encontrei nenhum solução (quase) pronta.

Achei muito bom o material JavaTM PKCS#11 Reference Guide (http://migre.me/EWdb) e Java ? Cryptography Architecture
Sun Providers Documentation (http://migre.me/EWeV) porém até onde eu entendi sempre irei precisar do arquivo de configuração, o que não é viável!

Comecei a dar uma lida sobre o SunMSCAPI, e com base no código do vanderlanio(http://migre.me/EXcd) inclui o 'if' para listar os certificados do usuário.



Bom em resumo preciso encontrar uma maneira de encontrar o token a3 e descobrir seu name e library ehehe, se alguém puder ajudar agradeço MUITO mesmo!

Obrigado!

P.S: 1° post no GUJ, fiquei em dúvida entre abrir um novo tópico ou inserir a msg neste: http://guj.com.br/posts/list/91330.java#797805 se fiz errado desculpa aé! heheh

This message was edited 3 times. Last update was at 02/06/2011 18:18:48


...tem um plano A e tem um plano B...

http://twitter.com/pedruhenrik
[Email] [MSN]
psevestre
JavaEvangelist

Membro desde: 13/05/2005 12:53:19
Mensagens: 432
Localização: São Paulo
Offline

O que fiz em cenário semelhante foi utilizar uma tabela interna com o nome dos módulos mais comuns e procurá-los no sistema do cliente em localizações igualmente "bem conhecidas". Para a tabela inicial utilizei informações do projecto OpenSC, entre outros. O código de inicialização tenta localizar as DLLs (ou .SO em Linux) e, se encontrar uma, cria o arquivo de configuração "on-the-fly" e cria o provider.

Um pouco enrolado, mas funciona.

http://justaphilpicks.blogspot.com/
[MSN]
pedruhenrik
GUJ Master
[Avatar]

Membro desde: 08/05/2008 11:48:36
Mensagens: 1043
Localização: São Paulo - SP
Offline

ai caramba!!!

que trabalhareira hahaha

psevestre estou estudando agora o OpenSC parace ser muito interessante (http://www.opensc-project.org/opensc) e ainda vou continuar pesquisando outras soluções heheh

por acaso vc tem 1 caminho das pedras for dummies sobrando aé???

bom supondo q no meu caso são quase 1 mil "pontos de venda" que podem ou não utilizar o token A3 e estão espalhados por todo o Brasil acho que eu vou encontrar com mts tokens por ai hahaah

valeu!

...tem um plano A e tem um plano B...

http://twitter.com/pedruhenrik
[Email] [MSN]
pedruhenrik
GUJ Master
[Avatar]

Membro desde: 08/05/2008 11:48:36
Mensagens: 1043
Localização: São Paulo - SP
Offline

opa, voltando ao tópico apenas para finalizar...

faz quase 2 meses que eu consegui resolver esse PROBLEMINHA aqui heheh

tipo conseguir dar um "load" no token A3, carregar uma lista com todos os certificados A1 e A3 no pc e depois escolher qual será utilizado e informar a senha.

para isso eu utilizei MSCAPI pois o sistema Java esta integrado ao ERP que roda apenas em ambientes windows.

bom é isso aé, finished!


...tem um plano A e tem um plano B...

http://twitter.com/pedruhenrik
[Email] [MSN]
leonardom
Virtual Machine Man
[Avatar]

Membro desde: 23/02/2003 11:41:23
Mensagens: 679
Localização: Anywhere
Offline

Oi pedruhenrik,

Estou apanhando aqui para acessar o certificado A3 de um SmartCard. Poderia postar seu código para eu ver como vc vez a sua solução?

Obrigado,

Leonardo

"If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas."

George Bernard Shaw (1856 - 1950) - Irish dramatist - Nobel Prize of Literature, 1925

blog: http://leonardom.wordpress.com
http://www.insidecode.com.br
[Email] [MSN]
pedruhenrik
GUJ Master
[Avatar]

Membro desde: 08/05/2008 11:48:36
Mensagens: 1043
Localização: São Paulo - SP
Offline

olá leonardom, td bem?

desculpa a demora em responder, só vi ontem o email do tópico,hehe malz ai,

abaixo esta como eu faço p/ localizar o certificado q será utilizado,
nos demais processos eu só passo o aliaskey como parametro.



ajudou em alguma coisa?heheh
vou abrir o projeto e acho q consigo passar mais código depois, ok?
lembrando q desse jeito só funciona em sistemas operacionais windows e só consegui testar com certificados A1 e A3 do token.
Tem 1 cliente q tentou utilizar com smartcard mas ainda não tive retorno se deu certo ou não.
Teoricamente ñ era p/ ter erros já q fica preso ao repositório de certificados do windows.

até.

abs!

...tem um plano A e tem um plano B...

http://twitter.com/pedruhenrik
[Email] [MSN]
javer
Virtual Machine Man
[Avatar]

Membro desde: 10/09/2007 12:06:29
Mensagens: 642
Localização: São Paulo - SP
Offline

pedruhenrik wrote:olá leonardom, td bem?

desculpa a demora em responder, só vi ontem o email do tópico,hehe malz ai,

abaixo esta como eu faço p/ localizar o certificado q será utilizado,
nos demais processos eu só passo o aliaskey como parametro.



ajudou em alguma coisa?heheh
vou abrir o projeto e acho q consigo passar mais código depois, ok?
lembrando q desse jeito só funciona em sistemas operacionais windows e só consegui testar com certificados A1 e A3 do token.
Tem 1 cliente q tentou utilizar com smartcard mas ainda não tive retorno se deu certo ou não.
Teoricamente ñ era p/ ter erros já q fica preso ao repositório de certificados do windows.

até.

abs!

O que essa linha faz?
KeyStore ks = KeyStore.getInstance("Windows-MY", "SunMSCAPI");

O que é esse Windows-MY?

------------------------------------------------------
Java Desktop Developer (Swing) - www.javasis.com.br
--- Disponível para Emprego ---
[WWW]
pedruhenrik
GUJ Master
[Avatar]

Membro desde: 08/05/2008 11:48:36
Mensagens: 1043
Localização: São Paulo - SP
Offline


O que essa linha faz?
KeyStore ks = KeyStore.getInstance("Windows-MY", "SunMSCAPI");


até onde eu entendi ela q vai criar a instancia keystore p/ poder acessar os certificados disponiveis no windows.


O que é esse Windows-MY?


o primeiro parametro é o tipo de keystore,
nesse caso o keystore do windows,

tb tem o Windows-ROOT mas oq deu certo p/ mim foi o Windows-My msm.

outra maneira tb de acessar o token:



o arquivo token.cfg:



e ai o processo de assinatura é quase o mesmo do token A1(se não o mesmo...rsrs)

att,

...tem um plano A e tem um plano B...

http://twitter.com/pedruhenrik
[Email] [MSN]
joellazzari
JavaChild

Membro desde: 13/11/2008 09:00:25
Mensagens: 141
Offline

estou com um problema meio bobo, mas não consegui identificar o motivo.

tenho uma exception, quando tento rodar qualquer código que envolva KeyStore (com Windows-MY ou Windows-ROOT)


java.security.NoSuchProviderException: no such provider: SunMSCAPI

Eu preciso alguma configuração/permissão de segurança no meu sistema operacional pra isso? (estou usando Windows 7 e JAVA 6)
orlandocn
Java Ninja
[Avatar]

Membro desde: 30/07/2005 12:42:29
Mensagens: 262
Offline

@pedruhenrik

seus exemplos de uso do repositório do windows me ajudaram muito, eu consigo listar os certificados e assinar um arquivo, porém estou tendo problemas na hora de fazer uma conexão soap.

Você consegue consumir um webservice de nfe utilizando o repositório do windows? poderia postar algum código de exemplo?

obrigado

CGHP - Certified Go Horse Professional
CFMU - Certified Fanfarrão Masters of the Universe
next target --> CFG - Certified Fanfarrão Guru
"Scrum é apenas XP sem as práticas e técnicas que a fazem funcionar."
pedruhenrik
GUJ Master
[Avatar]

Membro desde: 08/05/2008 11:48:36
Mensagens: 1043
Localização: São Paulo - SP
Offline

opa q bom q ajudou!

http://www.guj.com.br/java/237281-tutorial-consumir-webservice-nfe-20

da uma olhada nesse link e vê se te ajuda, ok?

att,

...tem um plano A e tem um plano B...

http://twitter.com/pedruhenrik
[Email] [MSN]
hiroshisilva
Debugger

Membro desde: 28/03/2010 18:54:01
Mensagens: 65
Offline

pessoal será que existe alguma bibilioteca dessas no linux?

Obrigado!
pedruhenrik
GUJ Master
[Avatar]

Membro desde: 08/05/2008 11:48:36
Mensagens: 1043
Localização: São Paulo - SP
Offline

pessoal será que existe alguma bibilioteca dessas no linux?


talvez eu esteja falando a maior besteira do universo...mas será q openssl não ajudaria nesse caso?

att,

...tem um plano A e tem um plano B...

http://twitter.com/pedruhenrik
[Email] [MSN]
Henrique Borges
Smalltalk

Membro desde: 29/10/2011 21:28:39
Mensagens: 1
Offline

Boa noite pedrohenrick estou com um problema no meu e-token pois perdi a senha e nao consigo acessa-lo ja usei quase todas as tentativas e se bloquea-lo terei que pedir outro certificado e pagar tudo novamente. Gostaria de saber se tem como acessar o token e mudar ou descobrir qual é a senha.
Fico no Aguardo obrigado
flaviojmendes
Thread.start()
[Avatar]

Membro desde: 18/08/2009 12:19:26
Mensagens: 33
Offline

Um token normalmente possui um PIN (senha) e um PUK, que é usado quando você erra a senha repetidas vezes. Consulte o fabricante.
Escrevi um post sobre tokens em meu site: http://www.flaviojmendes.com/blog/2012/02/24/assinando-um-documento-com-token-ou-smartcard/

Flávio J. Mendes
flaviojmendes@gmail.com
http://www.flaviojmendes.com
[WWW]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team