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.
M
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.