Definição
Assinatura digital do XML é o procedimento criptográfico que vincula um documento fiscal eletrônico, como NF-e, NFC-e, CT-e, MDF-e ou NFS-e, ao certificado digital do emissor. Ela comprova quem emitiu o arquivo e garante que o conteúdo não foi alterado depois de assinado. É exigida para que a Sefaz ou a prefeitura aceite o documento.
Também conhecido como: XML Digital Signature, Assinatura do XML, Assinatura digital de documento fiscal, Assinatura XMLDSig, Assinatura eletrônica do XML
O que é a assinatura digital do XML?
Todo documento fiscal eletrônico é, na essência, um arquivo XML: um texto estruturado com os dados da operação, como emitente, destinatário, produtos, valores e impostos. Antes de ser enviado ao Fisco, esse arquivo precisa ser assinado digitalmente com o certificado digital da empresa emissora.
Essa assinatura não é uma imagem nem uma rubrica escaneada. Trata-se de um bloco de informações criptográficas inserido dentro do próprio XML. Esse bloco permite a qualquer pessoa ou sistema verificar quem assinou o documento e se ele continua exatamente igual ao momento da assinatura.
Para que serve assinar o XML de uma nota fiscal?
A assinatura cumpre três funções principais. A primeira é a autoria: ela comprova que o documento foi emitido pelo titular do certificado, normalmente identificado pelo CNPJ. A segunda é a integridade: qualquer alteração no conteúdo, mesmo de um único caractere, invalida a assinatura. A terceira é o não repúdio: o emissor não pode negar depois que emitiu aquele documento.
É graças a essa combinação que o XML assinado e autorizado tem validade jurídica e substitui a antiga nota em papel. Sem a assinatura, a Sefaz ou a prefeitura rejeita o documento e ele não pode ser autorizado.
Como funciona a assinatura digital do XML?
O padrão adotado nos documentos fiscais brasileiros segue a especificação de assinatura XML do W3C, conhecida como XMLDSig, no formato de assinatura envelopada, em que a assinatura fica dentro do próprio arquivo. Primeiro, o trecho a ser assinado é padronizado, em um processo chamado canonicalização, para que diferenças de formatação não afetem o resultado. Em seguida, é calculado um resumo matemático (hash) desse conteúdo.
Esse resumo é então criptografado com a chave privada do certificado digital, gerando o valor da assinatura. O XML passa a conter um elemento Signature com o resumo, o valor assinado e a parte pública do certificado. Ao receber o arquivo, o Fisco usa a chave pública para conferir se tudo confere. Na NF-e, por exemplo, a assinatura aponta para o grupo de informações da nota identificado pelo atributo Id, que traz a chave de acesso.
Quais documentos e eventos precisam ser assinados?
NF-e, NFC-e, CT-e e MDF-e exigem assinatura do XML do documento. Os eventos ligados a eles, como cancelamento, carta de correção e encerramento de MDF-e, também são assinados antes do envio.
Na NFS-e, a exigência depende do padrão adotado. No modelo nacional, a DPS é assinada pelo emissor. Em sistemas municipais próprios, as regras variam: algumas prefeituras pedem assinatura do documento, outras apenas do lote de envio, e algumas não exigem assinatura.
Quais erros de assinatura são mais comuns?
Entre os problemas mais frequentes estão: certificado vencido ou revogado; CNPJ do certificado diferente do CNPJ do emitente informado no XML; alteração do arquivo depois de assinado, como a inclusão de espaços, quebras de linha ou mudança de codificação; e assinatura aplicada ao elemento errado. Cada um desses casos gera uma rejeição específica no retorno do Fisco.
Por isso, a regra prática é assinar o XML apenas quando ele estiver completamente pronto e não modificá-lo mais até o envio.
Quem faz a assinatura quando a emissão é feita por API?
Em uma integração por API fiscal, o sistema da empresa normalmente envia os dados da operação, e a plataforma de emissão monta o XML, aplica a assinatura com o certificado digital cadastrado e transmite o documento ao Fisco. Assim, o ERP ou a plataforma de vendas não precisa implementar canonicalização, hash e criptografia por conta própria.
Para isso, o certificado, geralmente do tipo A1, é armazenado de forma protegida pela plataforma. Cabe à empresa manter o certificado válido e renovado, pois sem ele nenhuma assinatura pode ser gerada.
Exemplos de Assinatura digital do XML
- Um ERP envia por API os dados de uma venda; a plataforma de emissão gera o XML da NF-e, assina com o certificado A1 da empresa e transmite à Sefaz, que valida a assinatura e autoriza a nota.
- Um desenvolvedor reformata o XML assinado para facilitar a leitura antes de enviá-lo e recebe rejeição por assinatura inválida, porque o conteúdo deixou de corresponder ao resumo assinado.
- Uma transportadora precisa encerrar um MDF-e e o evento de encerramento é assinado com o certificado digital antes de ser enviado ao Fisco.
- Uma empresa com várias filiais tenta emitir uma nota usando o certificado de outro CNPJ e recebe rejeição por divergência entre o certificado e o emitente.
Perguntas frequentes
A assinatura digital do XML é a mesma coisa que o certificado digital?
Não. O certificado digital é a identidade eletrônica da empresa. A assinatura é o resultado de usar esse certificado sobre um arquivo específico. Um mesmo certificado gera assinaturas diferentes para cada documento emitido.
Posso editar o XML depois de assinado?
Não. Qualquer alteração, inclusive de espaços ou formatação, invalida a assinatura. Se for preciso mudar algo, o XML deve ser corrigido e assinado novamente antes do envio.
O DANFE também é assinado digitalmente?
Não. O DANFE é apenas uma representação impressa ou em PDF do documento. A validade jurídica está no XML assinado e autorizado, que deve ser guardado pelo emitente e pelo destinatário.
É possível assinar com certificado A3?
Sim, desde que o sistema tenha acesso ao token ou cartão no momento da emissão. Em integrações automatizadas por API, o certificado A1 costuma ser preferido por ser um arquivo que pode ser armazenado no servidor.
Atualizado em · Como produzimos este glossário
