Login Registre-se
Não consigo assinar NFE  XML
Índice dos Fóruns » NF-e / NFS-e / CT-e / CF-e / Certificados Digitais
Autor Mensagem
alexandreesl

JavaC Membro

Membro desde: 04/12/2012 10:10:33
Mensagens: 7
Offline

Boa tarde, pessoal,

Estou tentando assinar um evento em homologação, para a Sefaz do RS, da manifestação do destinatário.

Este é o meu xml de entrada:


Porém, estou recebendo a seguinte mensagem de retorno:


Estou recebendo esse erro de assinatura do xml, mas não consigo encontrar o problema de jeito nenhum. Segue o meu código de assinatura:


Um detalhe é que o certificado que estou usando é V2 já, com assinatura SHA-256 e chave de 2048bits. Alguém está passando por esse mesmo problema?


obrigado

Quasar

JavaC Membro

Membro desde: 15/06/2012 09:57:00
Mensagens: 52
Offline


Alexandre, não olhei o seu codigo com cuidado e não posso dar uma resposta segura, mas pode ser o seguinte.

Dpois de assinar um documento, vc so pode altera-lo se isso nao modificar sua forma canonica.
Ou seja, isso deve ser feito com cuidado.

Assim, aconselho a nao "rasurar" seu documento depois de assina-lo. Foi isso q vc fez na ultima linha. Retire-a e vamos ver.
alexandreesl

JavaC Membro

Membro desde: 04/12/2012 10:10:33
Mensagens: 7
Offline

Oi cara, valeu pela resposta, então, o erro persiste mesmo quando eu tiro essa linha eu botei ela justamente na tentativa de resolver, q é pra tirar qualquer quebra de linha q pudesse ter na mensagem. Agora não estou no trabalho, mas amanhã eu posto o código a seguir desse, q envia para a sefaz

Esta mensagem foi editada 1 vez. Última atualização foi em 05/12/2012 19:07:21

Quasar

JavaC Membro

Membro desde: 15/06/2012 09:57:00
Mensagens: 52
Offline


Ok, Alexandre.

Estou vendo agora q vc pegou um certificado q nao esta associado a sua chave (ou nenhum). La na linha 6 coloque assim

X509Certificate cert = (X509Certificate)rep.getCertificateChain("meualias")[0];

Abraços!



alexandreesl

JavaC Membro

Membro desde: 04/12/2012 10:10:33
Mensagens: 7
Offline

Oi, Pessoal! consegui resolver! o problema é que eu precisava ajustar a string removendo os espaçoes e quebras de linha, tanto depois, como também antes de assinar. Modifiquei a linha conforme abaixo, e coloquei na string do xml, antes e depois de assinar:

request.replace("\n", " ").replace("\r", " ").replace("\t", " ").replaceAll(">\\s*<", "><");


Ah, e também mudei o endpoint para ambiente nacional, os ambientes das UFs parece que ainda não estão redondos.

obrigado, abraços!

Quasar

JavaC Membro

Membro desde: 15/06/2012 09:57:00
Mensagens: 52
Offline

Alexandre,

acho q ainda existe algo de podre no reino da Dinamarca;

Primeiro,
Não acredito tb q os servidores da sefaz dos estados estão redondos, mas validam assinatura convenientemente.

Segundo,
não precisa normalizar antes de assinar pq a assinatura da na mesma.

Não precisa normalizar depois, pq vc criou um transformer (sem parametro) q vai usar um xslt q faz isso pra vc. Ou seja, uma mesma coisa foi feita 3 vezes.

Terceiro,
a assinatura dever ser com chave algoritmo RSA, hash SHA-1 (e não SHA-256) e, de acordo com o manual, tamanho de 1024 bits.

Quarto,
o certificado no elemento <X509Data> deve ser o q contem a chave publica q acompanha a chave privada usada para assinar. Ta parecendo q vc incorporou o certificado errado.

Abraços.
aquila.venancio

JavaC Membro

Membro desde: 27/11/2012 13:31:14
Mensagens: 29
Offline

Ola galera,
Alguém por acaso tem as bibliotecas com os metodos nfeRecepcaoEvento???

utilizei


Porem esse método nfeRecepcao2 não tem este método que citei.
alexandreesl

JavaC Membro

Membro desde: 04/12/2012 10:10:33
Mensagens: 7
Offline

Quasar,

o programa está funcionando normalmente agora,eu só fiz aquilo que eu comentei, a forma de pegar o certificado e a chave pública é a mesma que tem em um dos exemplos aqui do forum, e eu só tenho 1 certificado dentro do meu jks, então como eu pegaria outro errado, se eu só tenho 1 para pegar? e eu estou pegando o corrreto da cadeia certificadora, pois debuguei o programa e verifiquei os dados do certificado buscado.

Por fim, antes de me criticar o óbvio - que na documentação está escrito que é sha-1 e com 1024 -, procure se informar um pouco mais. A partir deste ano TODAS as unidades certificadoras estão vendendo certificados sha-256 com chave 2048, como você pode ver abaixo:
http://www1.nfe.ms.gov.br/index.php?templat=vis&site=191&id_comp=2271&id_reg=163994&voltar=home&site_reg=191&id_comp_orig=2271

ah, outra coisa q eu acabei mudando foi montar o xml através de jaxb, ao invés de ter o xml sendo montado diretamente da string, usando os exemplos aqui do forum. Testei com a sefaz do RS, começou a funcionar por lá também.

abs e boas festas a todos
 
Índice dos Fóruns » NF-e / NFS-e / CT-e / CF-e / Certificados Digitais
Ir para:   
Powered by JForum 2.1.9 © JForum Team