Skip to content

Certificado Digital

Chinnon Santos edited this page May 3, 2016 · 12 revisions

ATENÇÃO: o NFePHP utiliza somente certificados do tipo A1. E não é possível fazer testes sem um certificado válido para um CNPJ válido. O Certificado é necessário em todas as comunicações com os webservices das SEFAZ.

Certificado NF-e

Quando é adquirido o certificado digital, é fornecido no modelo A1 (arquivo eletrônico) ou A3 (token usb ou smart card).

Para uso no sistema NFePHP até o momento só podemos usar o formato A1 (certificado.pfx).

A empresa autoridade certificadora (SERASA, SERPRO, VeriSign, etc) fornecerá um arquivo com a extensão .p12 ou .pfx (sistema operacional Windows). Este arquivo deve ser importado e instalado nos certificados do Windows (para iniciar o assistente de instalação, basta dar duplo clique no arquivo .p12). Nota: certificado.p12 é igual a certificado.pfx só muda a terminação.

A qualquer momento, também pode-se acessar os certificados a partir de Iniciar » Executar » Comando "certmgr.msc". Esta ferramenta também pode ser utilizada para exportar o certificado.

IMPORTANTE: durante a importação do certificado, marque a opção/checkbox "Marcar esta chave como exportável", para posteriormente poder gerar o arquivo .pfx que será utilizado pelo NFePHP.

CADEIA COMPLETA: a SEFAZ GO está exigindo a cadeia completa no certificado portanto na hora de exportar, se houver a opção exporte a cadeia de certificação completa isso irá facilitar o uso com esses estados que exigem a cadeia de certificação completa. (Na plataforma Windows, utilizando o assistente de importação de certificados essa opção se chama Incluir todas as propriedade estendidas.)

ATENÇÃO: após adquirir o certificado (que vale apenas para empresas com Inscrição Estadual), é necessário solicitar a autorização e uso junto ao SEFAZ do seu estado. Somente após esta autorização é possível fazer testes e usar a NF-e.

Certificado e-CNPJ

O sistema também trabalha com certificado e-CNPJ tipo A1, além dos certificados específicos para NF-e (A1). Os certificados e-CNPJ (A1) podem ser inseguros, mas estas inseguranças só surgem em casos de completa negligência do portador. Além disso, custam bem menos que os de NF-e A1 (quase metade do preço) e possuem a mesma validade.

A questão da segurança está no fato de ser possível copiar o arquivo A1 do certificado, enquanto que o A3 (token ou smartcard) se trata de um objeto físico e não apenas de um arquivo.

Além da cópia, existe o risco de o portador perdê-lo, seja por acidente, vírus ou falta de backup, etc. Porém, uma pessoa só consegue utilizar o seu certificado A1 se souber também a chave de acesso. É aí que entra a negligência. Somente pessoas autorizadas podem utilizá-lo, e isso depois de assinarem um termo firmado com a empresa sobre as responsabilidades que estão envolvidas no uso, como o sigilo das chaves, etc. Portanto, usos fraudulentos são tão possíveis em A1 quanto em A3. Legalmente, assinaturas com certificados digitais são tão válidas como as assinaturas com firma reconhecida.

Diferentemente de um certificado NF-e (que é exclusivo para notas), com um certificado e-CNPJ (tanto A1 como A3) é possível assinar documentos como PDF's ou identificar-se em sistemas como o da Anvisa, usando o nome da empresa (e de seu representante legal) através de um Certificado Digital e-CNPJ, porque suas aplicações vão além de simples assinatura de notas.

Por exemplo, você pode utilizar estes certificados para identificar-se no portal de peticionamentos da Anvisa, em nome de uma empresa de cosméticos, caso você possua um certificado digital A1 da mesma, e realizar consultas de peticionamentos já realizados e obter dados sigilosos (além de poder modificá-los).

Contribuição de Paulo Gabriel

ADICIONANDO A CADEIA COMPLETA MANUALMENTE AO PFX

A SEFAZ GO está alterando seu webservice para somente aceitar o certificado com a cadeia completa isso implica em algumas alterações.

1 - o método pSendSOAP() deve ser alterada a linha 4498 curl_setopt($oCurl, CURLOPT_SSLCERT, $this->pubKEY); para curl_setopt($oCurl, CURLOPT_SSLCERT, $this->certKEY);

2 - o arquivo pfx deverá conter a cadeia completa de certificação para que isso funcione ou deverá ser incluso no arquivo -certKEY.pem os outros certificados para manter a cadeia de certificação completa. No caso da Certisign devem ser inclusos os arquivos ACRaizBrasileira_v2.cer ACCertisignG6_v2.cer ACCertisignMultiplaG5.cer

Para colocar toda a cadeia de certificados no arquivo pfx, podemos fazer:

cat ACCertisignMultiplaG5.cer ACCertisignG6_v2.cer ACRaizBrasileira_v2.cer > chain.pem

openssl pkcs12 -export  -chain -out certificado.pfx -in pubKey.pem -inkey priKey.pem -CAfile chain.pem

O sistema irá pedir uma senha para o certificado pfx

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

Reinstale o Certificado Digital - se não for nenhum dos casos acima, tente reinstalar o certificado digital novamente.

Fonte : http://www.flexdocs.com.br/guiaNFSe/gerar.RPS.html