- 5. FAQ expressa
5.2. FAQ - Assinatura Digital - 5.1. FAQ - Instalação da DLL
« Anterior - 5.3. FAQ - Conexão com o WS
Próximo »
5.2. FAQ - Assinatura Digital
O usuário da NF-e pode enfrentar problemas com a assinatura digital em momentos distintos do processo:
- na assinatura digital da NF-e;
- na validação da assinatura digital da NF-e na SEFAZ;
- na validação pelo destinatário ou no aplicativo visualizador da Receita Federal do Brasil.
Falha no processo de Assinatura Digital da NF-e
O problema ocorre no processo de assinatura digital do XML da NF-e e tem como principal causa o Certificado Digital ou algum problema na estrutura ou conteúdo do XML da NF-e.
5305 - Erro: Falha no acesso ao XML (XML mal formado ou XML vázio: [mensagem de erro]
- [Erro durante a análise de EntityName...] / [An error occurred while parsing EntityName...] - este erro acontece quando existe um & em algum campo do XML, veja a solução
- [Valor não pode ser nulo. Nome do parâmetro: key] - este erro ocorre quando não informamos a tag a ser assinada, veja a solução
- [Dados do nível raiz inválidos. Linha 1, posição 1]] - este erro ocorre quando não informamos o XML que será assinado como parâmetro de entrada, veja a solução
5306 - Erro: Falha no acesso do certificado digital: [m_safecertcontext é um identificador inválido] - este erro decorre de uma falha na seleção do certificado digital, veja a solução
5307 - Erro: Falha na Assinatura: [mensagem de erro] - vide FAQ - os problemas decorrem da falha de instalação do certificado digital, principais mensagens de erro:
- [O conjunto de chaves não existe] / [The keyset does not exist] - o certificado digital em uso não tem a chave privada;
- [A chave não existe] / [Key does not exist] - pode acontecer quando o dispositivo não está "recebendo" o PIN (Ex. ocorre quando cancelamos a digitação do PIN), se o driver estiver com problema o PIN pode não se passado para o dispositivo e a solicitação do PIN ficar em loop;
- [O conjunto de chaves não está definido] / [The keyset is not defined] - o CSP do dispositivo não está definido - tente a reinstalação do dispositivo;
- [A chave da assinatura não está carregada] / [Signing key is not loaded] - o gerenciador criptográfico do dispositivo A3 em uso é incompatível com o dispositivo ou a versão do windows, atualize o gerenciador criptográfico com uma versão compatível à versão do windows em uso;
- [Chave inválida para uso no estado específicado] ou [key not valid for use in specified state] - o dispositivo não deve estar operacional - verifique no gerenciador do dispositivo se o token/certificado digital está operacional (exemplo de status: ausente, presente e operacional), a simples reinserção do smartcard ou token podem resolver o problema;
- [O índice estava fora dos limites da matriz.] / [Index was outside the bounds of the array.] - ocorre com certificados digitais do tipo A1 da CAIXA - CEF;
- [The specified cryptographic service provider (CSP) does not support this key algorithm.] - o dispositivo não oferece suporte para o algoritmo de criptografia rsa-sha1 adotado pelo projeto.
- [Existem mais dados disponíveis] - ocorre com frequencia com certificados digitais do tipo A1 da CAIXA - CEF;
Soluções para o erro 5307
O erro 5307 é causado por um mau funcionamento do cerficado digital, que pode não ter sido corretamente instalado ou não estar disponível para uso se for um token ou smart card.
A DLL utiliza o framework .NET 2.0 para assinatura digital, assim as mensagens de erro são do framewok .NET 2.0 que não consegue utilizar o hardware (smartcard/token), que deve estar corretamente instalada no Windows. Se uma aplicação não consegue utilizar uma impressora, a culpa não é do aplicativo e nem do windows, será do fabricante da impressora se ela oferecer os drivers que sejam compatíveis com a versão do windows em uso, vale observar que existe a possibilidade do fabricante não oferecer a compatibilidade para todas as versões do windows, alguns dispositivos mais antigos só oferecem compatibilidade para o CAPICOM e não funcionam com o framework .NET 2.0.
Na maioria dos casos a solução é a reinstalação do certificado digital, mas pode acontecer do dispositivo não oferecer suporte para framewok .NET 2.0 e neste caso não será possível utilizar o dispostivo, assim verifique com o seu fornecedor se o dispositivo é compatível com o framework .NET 2.0 e com a versão do seu Windows, em caso de dúvidas utilize o aplicativo CertFlex: Download da aplicativo CertFlex
1. CERTIFICADO TIPO A3 (smart card/token)
Se for um dispositivo A3 (token/smart card) verifique se os drivers e gerenciador criptográfico do seu dispositivo são compatíveis com a versão do Windows em uso.
drivers/gerenciadores para TOKEN
drivers/gerenciadores para SMARTCARD
O fornecedor do dispositivo também deve ser consultado para obter os drivers e gerenciadores corretos.
2. CERTIFICADO TIPO A1 (arquivo pfx)
Se for um certificado digital do tipo A1, é necessário instalar o arquivo pfx (IMPORTANTE: O arquivo com extensão cer não tem chave privada).
Alerta - Certificado Digital A1 da CAIXA ECONÔMICA FEDERAL - CEF
Existe um "macete" para utilizar o certificado digital da CAIXA:
O problema deste certificado é que apesar de ser um certificado digital A1, ele age como se fosse um certificado digital A3 e utiliza o CSP próprio (cefcert.dll que fica na pasta csp da aplicação da caixa), que não tem suporte para o tipo de assinatura do projeto (só funciona para autenticação).
Assim, é necessário fazer com que o certificado utilize o CSP do Windows.
Os passos são:
- instalar o certificado digital conforme orientação da CEF;
- verificar o funcionamento do certificado e que o certificado consta da lista de certificados no Internet Explorer;
- exportar o certificado digital pelo Internet Explorer;
- desinstalar o aplicativo da CAIXA;
- verificar se a DLL não ficou na pasta da aplicação da CAIXA;
- importar o certificado digital exportado no item 3.
Os passos acima funcionam para windows XP e vista, mas não existe garantia de funcionamento para o windows 7, assim se o equipamento tiver windows 7, tente fazer o processo em um equipamento que tenha windows XP, o certificado gerado no item 3 deve funcionar no windows 7.
Falha no processo de validação da Assinatura Digital da NF-e na SEFAZ
As vezes acontece da nota fiscal ser rejeitada pela SEFAZ com o motivo: 297 - Rejeicao: Assinatura difere do calculado, a principal causa desta ocorrência é a realização de algum processo na string do XML da NF-e assinada que corrompe a assinatura digital:
- formatação/identação do XML da NF-e - a DLL elimina todos os espaços em branco e outros caracteres de formatação que existem entre as tags da NF-e, pois eles fazem diferença na validação da assinatura. Assim não modifique o XML assinado pela DLL em hipótese alguma;
- conversão da string da NF-e em UTF-8 - as aplicações win32 trabalham com o padrão ANSI de codificação, assim não converta a string que são trabalhadas pela sua aplicação em UTF-8, se houver a conversão será necessário fazer a conversão para ANSI quando for ler o arquivo pela aplicação, caso contrário o arquivo será corrompido, pois um caractere especial em UTF-8 é entendido com o 2 caracteres ANSI e inválida a assinatura digital, +veja mais;
- uso de namespace estranhos ao projeto - o uso de namespace estranho pode provocar a falha no processo de validação de assinatura digital, assim só utilize o namespace padrão do projeto: xmlns="http://www.portalfiscal.inf.br/nfe", +veja mais;
Falha na validação pelo destinatário ou no aplicativo visualizador da Receita Federal do Brasil
As principais causas de falha de validação da assinatura digital no destinatário ou aplicativo visualizador são iguais ao da SEFAZ:
- formatação/identação do XML da NF-e - a DLL elimina todos os espaços em branco e outros caracteres de formatação que existem entre as tags da NF-e, pois eles fazem diferença na validação da assinatura. Assim não modifique o XML assinado pela DLL em hipótese alguma;
- não conversão da string da NF-e em UTF-8 - sempre converta o XML do procNFe que será distribuído ao destinatário e ao transportador, pois o XML deve ter codificação UTF-8 +veja mais;
- uso de namespace estranhos ao projeto - o uso de namespace estranho pode provocar a falha no processo de validação de assinatura digital, assim só utilize o namespace padrão do projeto: xmlns="http://www.portalfiscal.inf.br/nfe", +veja mais;
Validação de assinatura digital
A RFB - Receita Federal do Brasil oferece o Assinadoc - Validador de Assinaturas que pode e deve ser utilizado como opção independente para validar qualquer tipo de arquivo assinado digitalmente.
Veja também:
- FAQ - Certificado Digital
- FAQ - Assinatura Digital
- Guia de Uso - Assinatura Digital
- Guia de uso - Validação de Assinatura Digital
- Guia de Uso - Problema com o certificado digital
DICA
Para ter um atendimento conclusivo é importante que a mensagem seja formulada:
com um breve relato da circunstância da ocorrência, informando:
- produto (Ex.: NF-e, CT-e, NFS-e, etc.);
- versão do sistema operacional (Ex.: Windows XP, Vista, 7, etc.);
- linguagem (Ex.: Delphi, VB, VFP, etc.);
- situação que ocorre o problema;
- funcionalidade envolvida;
- UF do WS;
- arquivos envolvidos (Ex.: XML da NF-e);
sempre que for algum problema com o consumo de WS, infome o conteúdo dos seguintes parâmetros:
- msgDados;
- msgRetWS;
- msgResulado.
a descrição literal da mensagem de erro, preferencialmente um print screen da tela, pois as informações que aparecem entre colchetes são importantes para a prestação do atendimento;
- 5.2. FAQ - Assinatura Digital
5. FAQ expressa - « Anterior
5.1. FAQ - Instalação da DLL - Próximo »
5.3. FAQ - Conexão com o WS