Certificado pfx NFSe

293 views
Skip to first unread message

Francisco Caserio

unread,
Oct 1, 2014, 9:51:14 AM10/1/14
to nfe...@googlegroups.com
Caros

Existe alguma restrição para usar o mesmo certificado pfx para NFe (produto) e NFSe (Serviço)?

Nosso ERP esta funcionando normalmente para emissão de NFe junto a SEFAZ.

Porem estou encontrando o seguinte problema para emissão de NFSe no município de São Paulo no método loadCert:
NFSeSP::loadCert: Certificado não pode ser lido. O arquivo esta corrompido ou em formato invalido.

O caminho completo do certificado $this->pkcs12 esta correto, é o mesmo usado para NFe (Produto).
A funcao file_get_contents() le com sucesso o certificado
$this->pkcs12.
Ja publiquei um debug com o resultado da função file_get_contents( $this->pkcs12 ) e o PHP exibe o conteúdo do certificado.

O que esta errado?

Agradeco ajuda.

Edilson Belluomini

unread,
Oct 1, 2014, 10:41:10 AM10/1/14
to nfe...@googlegroups.com
Prezado Francisco.

O certificado utilizado para o NFSeSP é o mesmo do que é utilizado pelo NFePHP

A unica coisa é que como no NFePHP ele cria 3 arquivos com a extensão "pem" no diretório onde fica o arquivo pfx de nomes key.pem, publickey.pem e privatekey.pem. Se esses arquivos existirem, tente remove-los, que o método ira criar novamente. Verifique também se existe permissão na pasta onde ficar o certificado para criação desses arquivos com extensão "pem"

Francisco Caserio

unread,
Oct 1, 2014, 11:14:24 AM10/1/14
to nfe...@googlegroups.com
Oi Edilson

Obrigado por responder.

Se não há restrição de uso do mesmo certificado, então não entendo o que está dando errado.
O erro que a classe está exibindo é na primeira instrução do método loadCert()

    if ( ! openssl_pkcs12_read( file_get_contents( $this->pkcs12 ), $x509CertData, $this->passphrase ) ) {
      error_log( __METHOD__ . ': Certificado não pode ser lido. O arquivo esta corrompido ou em formato invalido.' );
      return false;

    }

>> NFSeSP::loadCert: Certificado não pode ser lido. O arquivo esta corrompido ou em formato invalido.

Os arquivos .pem ja foram criados na emissao das NFs de produto.
Devem ser excluidos para que a rotina de emissao de Servicos gere novamente?
Se eu excluir nao vai interferir na rotina de emissao de NF de Produto?
Algum problema no mapeamento dos pem poderia interferir na leitura do certificado pfx na funcao openssl_pkcs12_read?

Desculpe a avalanche de perguntas, mas estou querendo entender o que devo fazer para validar o processo.

[]s

Francisco Caserio

unread,
Oct 1, 2014, 12:13:31 PM10/1/14
to nfe...@googlegroups.com
Oi Edilson, encontrei o problema:

A funcao openssl_pkcs12_read espera a senha do certificado como 3o parametro.
   openssl_pkcs12_read( file_get_contents( $this->pkcs12 ), $x509CertData, $this->passphrase ).

Eu estava alimentando a variável $this->passphrase da classe com a variavel $passPhrase do config.php, o que seria lógico.

Porem a senha do certificado esta preenchido na variavel $keyPass e nao $passPhrase no config.php.

A titulo de coerencia a variavel $this->passphrase da classe poderia ser renomeada para $this->keyPass.

Espero que voces possam fazer a modificacao para nao confindir outras pessoas.

abs
Reply all
Reply to author
Forward
0 new messages