Assinar arquivo XML utilizando o certificado do e-CNPJ
10 respostas
A
and_santos
Boa tarde. Estamos desenvolvendo uma aplicação para o e-Financeiro (http://sped.rfb.gov.br/pagina/show/1499). Uma destas etapas consiste em pegar o certificado do cartão e-cnpj e assinar um arquivo XML.
Estou utilizando o código abaixo:
Quando utilizo o método signature.sign(dsc) , aparece um janela para o preenchimento da senha (é implementação do próprio e-CNPJ. O arquivo é assinado, mas ao submeter a Receita o site indica que a assinatura está inválida. Como vi que algumas pessoas do fórum também estão desenvolvendo aplicações para o e-Financeira, eu estou pedindo alguma ajuda.
Muito obrigado.
Boa tarde.
Eu continuo recebendo o erro MS0017 (Erro na assinatura) da receita. Comparando o meu hash com o exemplo da receita, vi uma diferença: o da receita tem uma linha e o meu hash é uma coluna de caracteres:
BgNVBAoTCklDUC1CcmFzaWwxNjA0BgNVBAsTLVNlY3JldGFyaWEgZGEgUmVjZWl0YSBGZWRlcmFs … (mais N caracteres)
BgNVBAoTCklDUC1CcmFzaWwxNjA0BgNVBAsTLVNlY3JldGFyaWEgZGEgUmVjZWl0YSBGZWRlcmFs
IGRvIEJyYXNpbCAtIFJGQjEZMBcGA1UEAxMQQUMgU0VSQVNBIFJGQiB2MjAeFw0xNDExMjcxMTM1
MDBaFw0xNzExMjYxMTM1MDBaMIHyMQswCQYDVQQGEwJCUjELMAkGA1UECBMCUkoxFzAVBgNVBAcT
DlJJTyBERSBKQU5FSVJPMRMwEQYDVQQKEwpJQ1AtQnJhc2lsMTYwNAYDVQQLEy1TZWNyZXRhcmlh
… (mais N caracteres)
Existe algum padrão ?
W
Wpascucci1
Olá,
Estou fazendo uma poc para o e-Financeira em .NET e tive o mesmo problema no retorno da receita. O meu problema estava relacionado ao ambiente de testes da Receita, quando enviamos um teste para produção o erro mudou, não foi mais a assinatura inválida.
Outro ponto que eu não vi no seu código é a conversão da assinatura para base64.
abs.
A
and_santos
Obrigado, Wpascucci.
Estou validando meus arquivos pelo link de Upload Manual do SPED, trocando o atributo tpAmb para 2. Foi esse o teste que você fez ?
Com relação a Base64 outros desenvolvedores .NET me passaram essa dica, mas pelo que eu vi no java não precisaria fazer isso.
mirrah
Bom dia André,
se você remover as quebras de linha, funciona?
[]s
Rafael Oliveira
A
and_santos
Bom dia, mirrah.
Mesmo removendo as quebras, continuo recebendo o erro MS0017.
A
and_santos
Boa tarde.
Desde ontem o site da receita parou retornar os meus arquivos com o erro MS0017 (Assinatura inválida) e passou a retornar o erro MS1030 (Erro na estrutura da solicitação.The value of the ‘Algorithm’ attribute does not equal its fixed value). E eu não fiz alteração nenhuma. Tanto que eu peguei arquivos antigos e o tratamento do erro agora é diferente.
Percebi que os arquivos de retorno agora vem com o Algoritmo rsa-sha256 e não o rsa-sha1.
Vocês tiveram um problema parecido ?
W
Wpascucci1
Da uma olhada a receita mudou o algoritmo.
Prezados declarantes da e-Financeira,
No intuito de conferir segurança adicional da informação, o algoritmo de assinatura dos eventos da e-Financeira foi alterado para o SHA-2, em substituição ao SHA-1. A partir de 11/04/2016, só serão recebidos pelo sistema arquivos assinados utilizando o novo algoritmo. As orientações acerca do novo padrão estão publicadas na versão 1.0.2 do Manual de Preenchimento.
Atendendo a pedidos de alguns contribuintes, também será disponibilizado, na seção de Download (Projetos>>e-Financeira>>Download), um arquivo .zip contendo um exemplo de código em .NET para assinatura dos eventos, já contemplando a alteração do algoritmo para SHA-2. Trata-se de um insumo para desenvolvedores de TI, quando da elaboração de rotinas em seus sistemas próprios para assinatura dos eventos da e-Financeira. Ressaltamos que não será fornecido suporte nem realizada atualização ao código em questão, tendo em vista que se trata apenas de um exemplo para demonstrar a forma como devem ser assinados os arquivos enviados.
A
and_santos
Obrigado, Wpascucci1. Provavelmente eles estavam mudando o ambiente de produção enquanto eu estava realizando os meus testes. E prova que não era só eu que estava com problemas na assinatura.
Você conseguiu enviar os arquivos pro ambiente de produção ?
W
Wpascucci1
Então cara eu mandei manualmente e o problema de assinatura inválida não ocorreu, deu um erro na estrutura do id, mas ai quando tentei mandar novamente eles mudaram o algoritmo e tomei o novo erro, agora estou estruturando para testar novamente.