Selecionar certificado digital para assinatura de XML

4 respostas
T

Boa tarde.

Pessoal, tenho uma especificação aqui em relações à formas de assinatura digital.

Tenho uma aplicação básica aqui de assinatura de XMLs para a NFe (Nota Fiscal Eletrônica).

Minha aplicação trabalha lendo parâmetros, ou melhor, a aplicação lê conteúdos de um arquivo básico em XML servindo como fornecedor de parâmetros.

Foi solicitado aqui onde trabalho, que o certificado digital deve ser selecionado (certificados digitais que estão instalados no computador que está rodando a aplicação) através do fornecimento do nome amigável (geralmente uma monte de caracteres sem sentido…hehe).

Alguém que trabalha com este tipo de situação (assinatura de XML), sabe me informar como eu posso estar realizando este tipo de implementação, ou seja, como assinar o XML passando como parametro o nome amigável do certificado digital?

Vou passar um exemplo do XML que utilizamos aqui na empresa:

<?xml version="1.0" encoding="UTF-8"?>
<param>
	<operacao>2</operacao>
	<cnpj>123456</cnpj>
	<caminhoXml>D:\XML-env-lot.xml</caminhoXml>
	<alias>1.2.840.113549.1.9.1=#161a726f647269676f2e776174616e61626540647a796f6e2e636f6d,CN=Dzyon SA,OU=ID - 3095471,OU=Assinatura Tipo A1,OU=Autenticado por AR Rina,O=ICP-Brasil,C=BR</alias>
	<senha>senha123</senha>
	<url>https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeRecepcao2.asmx</url>
	<acao>NfeRecepcao</acao>
	<uf>35</uf>
	<versao>2.00</versao>
</param>

No caso do XML acima, seria pego o certificado referente ao conteúdo do elemento . Com esse conteudo “estranho”, que no caso é o nome amigavel do certificado digital.

Quais seriam os passos para realizar a assinatura digital em Java baseado nessas especificações. A aplicaçao já roda aqui na empresa, entretanto, surgiu a necessidade de estar selecionando o certificado através do nome amigável.

Qualquer sugestão, dica ou até a solucão do problema agradeço… :smiley:

4 Respostas

T

Bom dia pessoal. =D

Detalhando mais um pouco pra ficar mais fácil de entender. É o seguinte, quando a aplicação é iniciada, aparece uma Janelinha Swing para o usuário informar qual certificado digital este está querendo utilizar(através de um JComboBox este seleciona a lista de certificados instalados no computador dele). Através desse nome amigável(Exemplo: 1.2.840.113549.1.9.1=#161a726f647269676f2e776174616e61626540647a796f6e2e636f6d,CN=Dzyon SA,OU=ID - 3095471,OU=Assinatura Tipo A1,OU=Autenticado por AR Rina,O=ICP-Brasil,C=BR) seria selecionado tal certificado para assinar o XML).

Na verdade poderia ser de forma diferente. Por exemplo, to procurando uma forma, por exemplo, ao usuário selecionar o certificado digital, este é selecionado e utilizado para assinar meus XMLs.

Mas minha duvida principal é tipo: Como pego esse certificado para utilizá-lo? Importo ele me baseando no nome amigável? Como faria isso em java? Existe alguma biblioteca que faz esse tipo de serviço? Aqui onde trabalho já tem um módulo em produção que trabalha nesse tipo de especificação (Mas duro é achar o fonte que programaram isso na época…brincadeira?).

Bom espero ter ajudado.

Qualquer dica, sujestão, agradeço muito :smiley:

J

Bom dia Thiago de Paula Beserra, tudo certo?

Você consegui utilizar o certificado do Windows, se sim, poderia postar sua solução?

Desde já agradeço.

T

JoaoLuizSK:
Bom dia Thiago de Paula Beserra, tudo certo?

Você consegui utilizar o certificado do Windows, se sim, poderia postar sua solução?

Desde já agradeço.

Boa tarde, JoaoLuizSK! :smiley:

Consegui sim. Vou te passar o link de uma postagem que fala sobre isso.A solução está neste link: http://www.javac.com.br/jc/posts/list/1220-duvidas-para-pegar-certificado-digital-resolvido.page

Reforçando que, recomendo ler o post inteiro.

[/b]Flw[b]

J

Obrigado Thiago de Paula Beserra,

Já consegui listar e utilizar os certificados para assinar meu XML :lol: .

Aproveitando o tópico, por acaso você não teria também algum tutorial para utilizar esse certificado selecionado para fazer a conexão SSL com o servidor do SEFAZ da NF-e?
Já li alguns tópicos aqui mais não consegui um resultado satisfatório.

Desde já agradeço a atenção.

Criado 14 de agosto de 2012
Ultima resposta 16 de out. de 2012
Respostas 4
Participantes 2