-
Notifications
You must be signed in to change notification settings - Fork 686
Certificado Digital
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.
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 (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.
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 é possivel fazer testes e usar a NF-e.
O sistema também trabalha com certificado e-CNPJ tipo A1, além dos certificados especificos 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 aplicacõ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
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