Resumo
Introdução
A assinatura digital é o que garante a autenticidade e integridade de um XML de NF-e. Sem uma assinatura válida, a SEFAZ não autoriza o documento fiscal. Entender como funciona o processo de assinatura é essencial para qualquer desenvolvedor que trabalhe com sistemas fiscais.
Neste tutorial, vamos explicar o processo de assinatura XML passo a passo, incluindo XMLDSig, canonização e boas práticas.
O que é Assinatura Digital XML?
A assinatura digital XML (XMLDSig) é um padrão W3C que permite assinar qualquer conteúdo XML. Ela garante:
- Autenticidade: Quem assinou é realmente quem diz ser
- Integridade: O conteúdo não foi alterado após a assinatura
- Não-repúdio: O autor não pode negar ter assinado
Como Funciona
- Digest do Conteúdo: O XML é processado e gerado um hash (resumo criptográfico)
- Assinatura do Digest: O hash é assinado com a chave privada do certificado
- Inclusão no XML: A assinatura é adicionada ao documento XML
Estrutura do XMLDSig
Tags Principais
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256"/> <Reference URI="#NFe123456789"> <Transforms> <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <DigestValue>...</DigestValue> </Reference> </SignedInfo> <SignatureValue>...</SignatureValue> <KeyInfo> <X509Data> <X509Certificate>...</X509Certificate> </X509Data> </KeyInfo> </Signature>
Canonização
A canonização é o processo de normalizar o XML antes de calcular o hash. Isso garante que diferentes representações do mesmo conteúdo gerem o mesmo hash.
Algoritmos comuns:
- C14N: Canonical XML 1.0
- C14N2.0: Canonical XML 2.0
- Exclusive C14N: Canonização exclusiva
Processo de Assinatura
Passo 1: Preparar o XML
- Monte o XML: Com todos os campos obrigatórios
- Valide o schema: Use o XSD oficial da SEFAZ
- Gere o Digest: Calcule o hash do conteúdo a ser assinado
Passo 2: Assinar com o Certificado
- Extraia a chave privada: Do certificado PFX ou PEM
- Assine o Digest: Use o algoritmo RSA-SHA256
- Gere a assinatura: Crie a tag
<SignatureValue>
Passo 3: Incluir no XML
- Posicione a assinatura: Geralmente no final do
<infNFe> - Referencie corretamente: Use o atributo
URIcorreto - Valide a assinatura: Verifique se está correta
Algoritmos de Assinatura
RSA-SHA256
- Algoritmo: RSA com hash SHA-256
- Tamanho da chave: 2048 bits mínimo
- Uso: Padrão para NF-e no Brasil
- Segurança: Alta
ECDSA-SHA256
- Algoritmo: ECDSA com hash SHA-256
- Curva: P-256 ou P-384
- Uso: Certificados ICP-Brasil novos
- Segurança: Muito alta
Erros Comuns
Reference URI Incorreto
Erro: "Reference URI not found"
Causa: O atributo URI na tag <Reference> não aponta para o elemento correto
Solução: Verifique se o URI corresponde ao id do elemento <infNFe>
Digest Inválido
Erro: "Digest verification failed"
Causa: O hash calculado não confere com o hash na assinatura
Solução: Verifique se o XML não foi alterado após a assinatura
Certificado Inválido
Erro: "Certificate not valid" ou "Key usage not supported"
Causa: O certificado não tem as extensões necessárias ou está vencido
Solução: Use um certificado válido com extensão de assinatura digital
Ferramentas Úteis
Nosso Assinador XML
Use nossa ferramenta online para assinar XMLs de NF-e:
- Faça upload do XML
- Selecione o certificado PFX
- Informe a senha
- Clique em assinar
- Baixe o XML assinado
Validação
Após assinar, sempre valide:
- Schema: Use nosso Validador XML
- Assinatura: Verifique com ferramentas de validação
- Teste: Envie para homologação antes de produção
Boas Práticas
- Valide o XML antes de assinar: Evite erros posteriores
- Use certificado válido: Verifique validade e extensões
- Armazene a assinatura: Guarde XML assinado para auditoria
- Teste em homologação: Sempre valide antes de produção
- Mantenha o certificado seguro: Nunca compartilhe a chave privada
Conclusão
A assinatura XML é um processo crítico para emissão de NF-e. Compreender XMLDSig, canonização e algoritmos de assinatura é essencial para desenvolvedores fiscais.
Use nossas ferramentas para assinar XMLs de forma rápida e segura, sem se preocupar com os detalhes técnicos da implementação.
Pronto para colocar em prática?
Use nossas ferramentas gratuitas para validar XMLs, gerenciar certificados e muito mais. Tudo processado localmente no seu navegador.
Explorar ferramentasArtigos Relacionados
Estrutura Básica de um XML de NF-e: Guia Completo
Conheça a estrutura completa de um XML de NF-e. Saiba quais são as tags obrigatórias, opcionais e como montar um XML válido.
Ler maisComo Resolver Erros Comuns de Validação XML na SEFAZ
Lista completa de erros de validação XML na SEFAZ com soluções práticas. Aprenda a identificar e corrigir os erros mais comuns.
Ler mais