Certificados Digitais - Sennda Software

Certificados Digitais

Padrão de Certificado Digital

 

 

O Simples NF-e exige o uso de Certificado Digital com as seguintes características:

 

  • padrão X509 – v3, emitida por Autoridade Certificadora credenciada ao ICP-BR;
  • certificado digital de Pessoa Jurídica, devendo conter o CNPJ da empresa no campo otherName OID = 2.16.76.1.3.3;
  • uso da chave = Assinatura Digital e Não-recusa;
  • uso avançado da chave = Autenticação Cliente;
  • algoritmo de assinatura = sha1RSA;

 

 

A princípio, qualquer certificado digital de Pessoa Jurídica – PJ do tipo e-CNPJ ou e-PJ emitido por Autoridade Certificadora credenciado ao ICP-BR pode ser utilizado no projeto.

Os certificados digitais do tipo A1 ou A3 têm as mesmas funcionalidades e a principal diferença está relacionada com a mídia de armazenamento e a portabilidade do certificado digital.

 

 

O certificado digital do tipo A3 é armazenado em dispositivo portátil inviolável do tipo smart card ou token USB, que contém um chip com capacidade de criptografia (assinatura digital). Do ponto de vista de segurança, este tipo de certificado é mais seguro, pois a chave privada utilizada para assinatura digital nunca é exposta, pois todas as operações são realizadas no chip existente no chip portátil e o acesso ao chip é realizado mediante autenticação com fornecimento do PIN, sendo indicado para uso na autenticação e acesso de sistemas não confiáveis. A portabilidade e a segurança do dispositivo tipo A3 permite o uso de forma similar ao uso que temos com o cartão de conta corrente ou de crédito que utilizamos nas agências bancárias e pontos de vendas, que são equipamentos de terceiros não confiáveis. Mas cabe ressaltar que esta característica não é muito relevante no processo de assinatura da NF-e, pois a aplicação é executada em computadores da empresa no logon do usuário que pode e deve ser protegido por usuário e senha.

 

 

Também vale observar que o certificado digital do tipo A3 pode apresentar mal funcionamento por uso de software gerenciador do dispositivo digital não compatível com o smart card ou token. A maioria dos novos usuários tem dificuldade para solucionar este problema, até porque na maioria dos casos, o suporte do fornecedor do certificado digital não orienta para verificar esta possibilidade, insistindo que a rotina de assinatura utilizada está com problemas.

 

 

O certificado digital do tipo A1 é arquivo digital que deve ser instalado em algum computador para que possa ser utilizado, ou seja, neste tipo de certificado digital todas as operações de criptografia são realizadas pelo provedor do serviço de criptografia – CSP do Sistema Operacional do equipamento ou pela Aplicação. A dependência de um hardware externo para o seu funcionamento torna o certificado digital mais vulnerável, não sendo indicado para uso que exige portabilidade como é o caso de uso pessoal do certificado digital como já foi citado.

 

 

O certificado digital do tipo A1 é mais indicado para uso em aplicação, como é o caso da emissão da NF-e, pois o mesmo será instalado em equipamento conhecido e será acessado apenas pela aplicação e com controle de acesso dos usuários ao sistema não existe grande risco de uso indevido do certificado, além da versatilidade de uso e performance que é superior ao certificado do tipo A3, pois as operações são realizadas no equipamento que está instalado, que tem um desempenho muito superior se comparado ao chip utilizado no smart card ou token.

 

 

A nossa recomendação é pela opção do certificado digital do tipo A1 que acreditamos ser o mais adequado para uso em aplicações, a menos que a empresa tenha condições de adquirir um Hardware Security Module – HSM, que provavelmente não deve ser a realidade dos nossos usuários em função do custo e do volume de emissão.

 

 

Uma outra característica interessante do certificado digital do tipo A1 é a possibilidade de se gerar cópia de segurança do certificado digital, o que significa que o mesmo certificado digital pode ser utilizado em mais de um equipamento, assim como ocorre com o certificado digital genérico da associação que sofreu o milagre da multiplicação e deve estar sendo utilizado por centenas de pessoas.

 

 

Esta característica é bastante interessante para o desenvolvedor, pois possibilita a manutenção de uma cópia de segurança do certificado digital do cliente para realizar os testes de implementação e suporte, mas deve ser utilizada com muita cautela e responsabilidade, pois pode ter consequências jurídicas não desejadas se realizada sem o devido consentimento do titular do certificado digital.

 

 

Qual tipo de certificado e de quem adquirir?

 

 

Sempre recomendamos a aquisição de certificado digital de PJ (e-PJ ou e-CNPJ) do tipo A1. O fornecedor do certificado digital pode ser qualquer Autoridade Certificadora credenciado ao ICP-BR, pois a princípio, o certificado digital do tipo A1 não tem problemas de incompatibilidade com hardware, com menor possibilidade de incidentes.

 

Alerta – Certificado Digital A1 da CAIXA ECONÔMICA FEDERAL – CEF

 

Download do Manual da CAIXA

 

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

 

 

Portanto, é necessário fazer com que o certificado utilize o CSP do Windows.

Os passos são:

 

  1. instalar o certificado digital conforme orientação da CEF;
  2. verificar o funcionamento do certificado e que o certificado consta da lista de certificados no Internet Explorer;
  3. exportar o certificado digital pelo Internet Explorer;
  4. desinstalar o aplicativo da CAIXA;
  5. verificar se a DLL não ficou na pasta da aplicação da CAIXA;
  6. 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.
O principal critério para se escolher o fornecedor será o custo e a localização da Autoridade de Registro – AR, pois de nada adiantaria o preço ser muito bom se a AR estiver localizada em local muito distante, o que eleva o custo final de aquisição, sem considerar a perda de tempo de deslocamento.

 

 

Como existe a necessidade da presença do titular da empresa na AR para adquirir o certificado digital, muito provavelmente a facilidade de acesso da AR deverá ser o fator preponderante para a escolha do fornecedor do certificado digital (CEF, Certisign, SERPRO/Correios, SERASA, etc.).

 

 

Instalação do Certificado Digital Cliente

 

 

Após a aquisição do certificado digital, o próximo passo é a instalação do mesmo no equipamento que será utilizado, seguindo as orientações do fornecedor do certificado digital.

A DLL acessa o repositório de certificados digitais da conta do usuário corrente do Windows, assim, o certificado digital deve ser instalado para cada usuário que vai utilizar a DLL.

O repositório de certificados digitais do usuário corrente pode ser acessado através do Internet Explorer, na aba pessoal (MY) do menu Ferramentas/opçõesdainternet/conteúdo/certificados.

Requisitos de Validade do Certificado DigitalCertificado Digital ICP-BR

O certificado digital deve ser um certificado digital de Pessoa Jurídica emitido por Autoridade Certificadora credenciado ao ICP-BR.

 

Validade do Certificado Digital

 

 

A DLL só trabalha com certificados digitais que estão dentro do período de validade. Assim, os certificados digitais que não se encontram dentro do período de validade não serão utilizados. Algumas AC emitem certificados digitais com data de início de validade futura, neste caso o certificado digital só vai ser mostrado a partir da data e hora que constar como data de início de validade, da mesma forma os certificados digitais expirados não serão mostrados.

 

 

Repositório de Certificado Digital

 

 

A DLL pesquisa o repositório de certificados digitais do usuário corrente, isto é, somente os certificados digitais instalados no repositório de certificados digitais do logon do usuário estarão disponíveis. Caso a aplicação seja um serviço windows ou seja executada como um serviço (aplicação ASP), pode ser necessária a instalação do certificado digital no repositório local machine e uma versão diferente da DLL.

 

 

Ambiente com autenticação de usuário em servidor de domínio

 

 

O certificado digital deve ser instalado no equipamento local, a instalação em um servidor de domínio ou o logon com autenticação no domínio pode provocar erro e mal-funcionamento da DLL.

 

 

Cadeia de Certificados da AC emissora confiável

 

 

O certificado digital só é considerado válido se todos os certificados da cadeia forem considerados válidos, o que vale dizer que pelo menos o certificado digital da Autoridade Certificadora Raiz do ICP-BR deve existir no repositório de AC Raiz confiáveis, em algumas versões do Windows ainda é necessário a existência dos certificados digitais da AC intermediária e da AC emissora do certificado digital também.

 

ExemploCertificado

 

Certificado Digital com chave privada

 

 

Quando falamos de certificado digital válido, estamos falando de um certificado digital com chave privada. Já aconteceu do desenvolvedor receber o certificado digital do cliente, que mesmo após a instalação não aparecia na aba pessoal do repositório de certificados digitais por não possuir a chave privada. A tentativa de uso deste certificado digital resulta em erro de falta de chave privada. A chave pública do certificado digital não tem a chave privada e tem a extensão cer, assim caso receba um arquivo com esta extensão, solicite um arquivo com extensão pfx.

 

 

Também é possível verificar se o certificado digital tem chave privada ou não pela sua propriedade na opção Ferramentas/Opções da Internet/Conteúdo/Certificados/Exibir do menu do Internet Explorer:

 

ExemploCertificado

 

Um certificado digital não instalado corretamente pode causar problemas na autenticação nos Web Services da NF-e e no pior caso, pode prejudicar o processo de assinatura digital.

 

 

O problema mais comum é a falta de instalação dos certificados digitais da cadeia do certificado digital da AC emissora do certificado digital que em geral provoca o seguinte erro na consumo do Web Service:

 

 

HTTP status 403: Forbidden

 

 

5001 – Erro: Falha na conexão: [Falha na solicitação com status HTTP 403: Forbidden.]

5001 – Erro: Falha na conexão: [The request failed with HTTP status 403: Forbidden.]

 

Erro 403

 

 

A verificação da correta instalação do certificado digital do cliente pode ser feita como segue:

 

 

  • abrir o Internet Explorer;
  • clicar em Opções da Internet no item Ferramentas do menu;
  • clicar no botão Certificados da aba Conteúdo;
  • selecionar o certificado digital na aba pessoal e clicar no botão Exibir, se o certificado não existir nesta aba é necessário instalar o certificado digital novamente;
  • verificar se o status do certificado é válido e a cadeia de certificados está completa com 4 certificados digitais na aba Caminho de certificação;

Exemplo de Certificado Digital que AC emissora do Certificado Digital não confiável:

 

Certificado ProblemaACEmissora

 

Este caso ocorre quando o certificado digital da AC Emissora do Certificado Digital não está instalado no CSP do Windows, para solucionar o problema é necessário instalar a cadeia certificados digitais do AC emissora do certificado digital.

 

 

Exemplo de Certificado Digital que AC Raiz não confiável:

 

Certificado ProblemaACRaiz

 

Este caso ocorre quando o certificado digital da AC Raiz da ICP-BR não se está instalado no CSP do Windows, para solucionar o problema é necessário instalar o certificado digital de forma dirigida.

 

 

Exemplo de Certificado Digital corretamente instalado:

 

Certificado OK

 

 

Problema com o certificado digital

 

O certificado digital pode apresentar problema no momento do estabelecimento do canal seguro SSL/TLS ou na realização da Assinatura Digital

 

 

Certificado Digital inexistente
5405 – Erro: Nenhum certificado válido foi encontrado com o nome [(…)] informado

 

Possíveis causas deste erro:

 

  • o nomeCertificado informado está incorreto;
  • o certificado digital cliente não existe no repositório pessoal do usuário corrente;
  • o certificado digital não tem chave privada;
  • o certificado digital cliente não se encontra dentro do seu prazo de validade;
  • outros;

 

A DLL pesquisa o repositório de certificados digitais do usuário corrente, isto é, somente os certificados digitais instalados no repositório de certificados digitais do logon do usuário estarão disponíveis.

 

 

Serviço windows e ASP

 

Caso a aplicação seja um serviço windows ou seja executada como um serviço (aplicação ASP), pode ser necessária a instalação do certificado digital no repositório local machine e uma versão diferente da DLL.
HTTP status 403: Forbidden

5001 – Erro: Falha na conexão: [Falha na solicitação com status HTTP 403: Forbidden.]

5001 – Erro: Falha na conexão: [The request failed with HTTP status 403: Forbidden.]

 

Erro 403

 

Possíveis causas do HTTP status 403: Forbidden:

 

  • o certificado digital cliente não é considerado confiável para o equipamento;
  • o certificado digital cliente não se encontra dentro do seu prazo de validade;
  • outros;

Veja o tópico Instalação do Certificado Digital Cliente

 

Falha no estabelecimento do Canal Seguro SSL/TLS
Quando o certificado digital do Web Service não está instalado ocorre o seguinte erro:

5002 – Erro: Falha na conexão: [A conexão subjacente estava fechada: Não foi possível estabelecer relação de confiança para o canal seguro de SSL/TLS.]

5002 – Erro: Falha na conexão: [The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel]

 

CertificadoSSL

 

Possíveis causas da Falha de Conexão:

 

  • o certificado digital utilizado pelo Web Service da SEFAZ não é confiável para o equipamento cliente;
  • o certificado digital cliente não é considerado confiável pela SEFAZ;
  • o certificado digital cliente não está sendo enviado para a SEFAZ para estabelecer a conexão;
  • outros;

 

Veja o tópico Instalação do Certificado Digital da Cadeia do Servidor

 

Falha na autenticação do PIN – certificado digital tipo A3
A falha na autenticação do PIN em certificado digital do tipo A3 tem como causa principal a incompatibilidade dos drivers do dispositivo smartcar ou token com a versão do Windows em uso.

Em geral, a instalação da versão do drivers ou do aplicativo compatível com a versão do Windows soluciona o problema, mas cabe ressaltar que já houve relato de casos em que o dispositivo só funcionou com a instalação da versão do aplicativo da versão anterior do Windows.

 

 

Falha na assinatura digital com certificado digital A3
A maioria dos problemas com certificado digital são solucionados com a instalação dos certificados digitais da cadeia, contudo, caso o problema persista e o certificado digital em uso seja do tipo A3, recomendamos fortemente que procure uma versão mais atualizada do gerenciador de acesso criptográfico safesign

 

 

Todos os casos de problemas de certificados digitais que tivemos que não estavam relacionados com a falta de instalação da cadeia de certificados foram ocasionados pelo uso do gerenciador de acesso criptográfico não compatível com o smart card ou token e foram resolvidos com a atualização do gerenciador.

 

 

Falha na assinatura digital com certificado digital A1 da CAIXA ECONÔMICA FEDERAL – CEF
Alerta – Certificado Digital A1 da CAIXA ECONÔMICA FEDERAL – CEF

 

Download do Manual da CAIXA

 

 

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.
Incompatibilidade do certificado digital A3
A DLL acessa os certificados digitais existentes no provedor de certificados digitais (CSP) do Windows do usuário corrente (o que está logado no equipamento), desta forma para a DLL é indiferente se o certificado digital é do tipo A1 ou A3, desde que o certificado digital esteja corretamente instalado no CSP do Windows.

 

 

Assim, o problema de incompatibilidade do certificado digital ou do hardware criptográfico (smartcard/token) é com o framework .NET do Windows e não tem relação com a DLL, todas as aplicações que utilizam o framework .NET (Ex.: assinador da SEFAZ/RS) terão problema para usar o certificado digital se ele não for compatível com o Windows e não oferecer suporte necessário para o .NET Framework acessar a funcionalidade de cálculo de hash e criptográfica.

 

 

DICA – Teste o certificado digital A3
A DLL e o aplicativo demo pode ser utilizados sem qualquer restrição para teste de assinatura digital, assim recomendamos a realização de um teste de compatibilidade do dispositivo smartcard ou token com o framework .NET 2.0 para evitar futuras dores de cabeça.