nfephp-org / sped-nfe

API para geração e comunicação das NFe com as SEFAZ autorizadoras
Other
1.22k stars 535 forks source link

Problema ao Transmitir NFE Homologação #1069

Closed thiagomagamoc closed 3 months ago

thiagomagamoc commented 3 months ago

Nota: para questões de suporte, use Google Groups https://groups.google.com/forum/#!forum/nfephp . Os problemas deste repositório são reservados para solicitações de recursos e relatórios de erros.

<! --- Apague as linhas abaixo, 13-42 caso não esteja enviando um bug ->

Comportamento esperado

<! --- Diga-nos o que deve acontecer ->

Comportamento Atual

<! --- Diga-nos o que acontecer em vez do comportamento esperado -> [0] - Erro de comunicação via soap, error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure [https://homolog.sefaz.go.gov.br/nfe/services/NFeAutorizacao4]

Descrição detalhada

<! --- Forneça uma descrição detalhada da alteração ou adição que você está propondo -> [0] - Erro de comunicação via soap, error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure [https://homolog.sefaz.go.gov.br/nfe/services/NFeAutorizacao4]

robmachado commented 3 months ago

Esse ERRO não é um bug é um problema nas configurações do seu servidor ! Veja no nosso forum

thiagomagamoc commented 3 months ago

Esse ERRO não é um bug é um problema nas configurações do seu servidor ! Veja no nosso forum

Poxa vida, mas eu procurei muito aqui nos Issues , e não achei nada especifico Estava funcionando e do nada parou.. Poderia me dar uma dica de onde pesquisar? Já rodei todo o google e todos os issues aqui

robmachado commented 3 months ago

Tente https://groups.google.com/g/nfephp/search?q=14094410%3ASSL%20routines%3Assl3_read_bytes%3Asslv3

thiagomagamoc commented 3 months ago

Tente https://groups.google.com/g/nfephp/search?q=14094410%3ASSL%20routines%3Assl3_read_bytes%3Asslv3

Eu tentei tudo o que foi falado em no Groups Google do NFEPHP

Infelizmente lá, vários casos ficaram sem respostas, talvez até conseguiram resolver, porém não postaram a solução

Estava funcionando 100% e do nada parou.

Tentei uma instalação de ambiente limpa em um computador formado, e teve o mesmo problema

Pode até ser problema Local, más está muito estranho....

Sinceramente, não acho que essa issue deveria ser fechada...

lidani commented 3 months ago

ta usando ubuntu 22?

thiagomagamoc commented 3 months ago

ta usando ubuntu 22?

To no Windows 11, ambiente de Homologação Mas to quase subindo um Ubuntu aqui pra testar...

lidani commented 3 months ago

confere se vc ta usando o openssl 3, pois esse problema ocorre por lá, é necessário habilitar o modo legacy pra alguns certificados funcionarem.

isso aqui funcionou pra mim no ubuntu 22 (onde o openssl é a versão 3 por padrão): https://github.com/nfephp-org/sped-nfe/issues/1038#issuecomment-2083446534

se acaso nada funcionar, é possível que seja algo com as cadeias de certificados, vc pode atualizar as cadeias no windows e se acaso continuar dando problema, você pode tentar diminuir o nível de segurança da classe Soap, criando uma instância manualmente (e depois setando o level de segurança https://github.com/nfephp-org/sped-common/blob/master/src/Soap/SoapBase.php#L220C21-L220C37) e depois utilizando a função loadSoapClass diretamente na classe Tools para carregar sua classe Soap modificada.

thiagomagamoc commented 3 months ago

confere se vc ta usando o openssl 3, pois esse problema ocorre por lá, é necessário habilitar o modo legacy pra alguns certificados funcionarem.

isso aqui funcionou pra mim no ubuntu 22 (onde o openssl é a versão 3 por padrão): #1038 (comment)

se acaso nada funcionar, é possível que seja algo com as cadeias de certificados, vc pode atualizar as cadeias no windows e se acaso continuar dando problema, você pode tentar diminuir o nível de segurança da classe Soap, criando uma instância manualmente (e depois setando o level de segurança https://github.com/nfephp-org/sped-common/blob/master/src/Soap/SoapBase.php#L220C21-L220C37) e depois utilizando a função loadSoapClass diretamente na classe Tools para carregar sua classe Soap modificada.

Vlw @lidani
Obrigado pelas dicas!

Versão do meu OpenSSL: OpenSSL 1.1.1p 21 Jun 2022 (Library: OpenSSL 1.1.1q 5 Jul 2022)

Sobre as cadeias de certificado, fiquei com duvida, você se refere ao cacert.pem ?

Sobre o SOAP, tentei essa solução aqui abaixo (adcionando no meu __construct), porém sem sucesso: $this->soap = new SoapCurl($this->certificate); $this->soap->httpVersion('1.1'); //força o uso de http 1.1 $this->soap->protocol(SoapCurl::SSL_TLSV1_2); //força o uso do TLS1.2 na encriptação $this->tools->loadSoapClass($this->soap); //carrega a classe SoapCurl, com parâmetros default alterados

thiagomagamoc commented 3 months ago

confere se vc ta usando o openssl 3, pois esse problema ocorre por lá, é necessário habilitar o modo legacy pra alguns certificados funcionarem.

isso aqui funcionou pra mim no ubuntu 22 (onde o openssl é a versão 3 por padrão): #1038 (comment)

se acaso nada funcionar, é possível que seja algo com as cadeias de certificados, vc pode atualizar as cadeias no windows e se acaso continuar dando problema, você pode tentar diminuir o nível de segurança da classe Soap, criando uma instância manualmente (e depois setando o level de segurança https://github.com/nfephp-org/sped-common/blob/master/src/Soap/SoapBase.php#L220C21-L220C37) e depois utilizando a função loadSoapClass diretamente na classe Tools para carregar sua classe Soap modificada.

Adicionei o $this->soap->setSecurityLevel(true); O erro persiste

lidani commented 3 months ago

sobre as cadeias de certificados, tente seguir isso: https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/senhas-e-procuracoes/senhas/certificados-digitais/procedimento_instalacao_cadeia_de_certificados_sistemas_rfb.pdf

thiagomagamoc commented 3 months ago

image

So pra deixar claro, subi o sistema no Ubuntu tambem Mesmo erro...

gersonfs commented 3 months ago

E no Ubuntu vc editou o openssl.conf conforme esse link https://github.com/nfephp-org/sped-nfe/issues/1038#issuecomment-2083446534 ? E reiniciou o server após? Os erros de openssl que tive aqui foram resolvidos assim.

thiagomagamoc commented 3 months ago

E no Ubuntu vc editou o openssl.conf conforme esse link #1038 (comment) ? E reiniciou o server após? Os erros de openssl que tive aqui foram resolvidos assim.

Boa noite meu caro! To usando o aapanel no Ubuntu, por acaso sabe onde fica o openssl.conf ?

lidani commented 3 months ago

/etc/ssl/openssl.conf se não me engano

lidani commented 3 months ago

a gente teve problemas com GO uma vez em homolog, mas era problema nos servidores deles, depois de um tempo normalizou. Por acaso vc tem outros certificados pra testar?

thiagomagamoc commented 3 months ago

Resumo final:

Agora o teste mais interessante:

E por fim:

Agora a questão final: O Delphi enviou a NFE 100% e o NFEPHP não enviou (Ambos utilizando o mesmo certificado)

Conclusão: Há sim um bug.... Qual? Num sei!

lidani commented 3 months ago

qual versão do php vc ta usando? tenta com versões mais antigas, tipo na 7.4

thiagomagamoc commented 3 months ago

qual versão do php vc ta usando? tenta com versões mais antigas, tipo na 7.4

Impossível Estou rodando a aplicação com Laravel 9, que requer PHP 8.0 no mínimo

gersonfs commented 3 months ago

Interessante o erro, aparentemente relacionado a algum ajuste fino do openssl em combinação com o certificado. Vc disse que com outro certificado funcionou no nfephp, o que muda entre eles além das informações da empresa? É de um outro fornecedor de certificados?

lidani commented 3 months ago

já tivemos problemas com certificados emitidos por autoridades certificadoras inconfiáveis, pedimos pro nosso cliente emitir um novo e passou a autorizar corretamente. No delphi é muito provavel que esteja sendo usado outras libs para assinatura, wincrypt, capicom, entre outras e se for a openssl, é possivel que seja em outra versão.

thiagomagamoc commented 3 months ago

@robmachado Sinceramente, considere não fechar essa issue...

@gersonfs Sim, emissores diferentes

O certificado que apresentou erro no NFEPHP foi Emitido por AC DIGITALSIGN RFB G3 O outro foi Emitido por AC SyngularID Multipla

robmachado commented 3 months ago

Veja o erro se refere a SSLv3, ninguém mais usa esse modo de encriptação. O que está sendo usado é o TLS 1.2. Não aparenta ser um problema do certificado, mas por desencargo de consciência instale o certificado no chrome e exporte novamente. Não é o PHP pois eu uso php 7..4, 8.2 e 8.3 sem problema, o problema está no openssl ou com alguma configuração na sua maquina, como você disse que é Ruindows não posso nem tentar te ajudar, pois não uso isso a mais de 30 anos. Minhas maquinas são DEBIAN (10,11, 12) ou Ubuntu (20.04 ou 22.04) uso sem problemas.

gersonfs commented 3 months ago

É bem difícil corrigir um bug que não pode ser reproduzido. Além disso, não tem nada claramente indicando que o problema é na sped-nfe ou na versão do PHP ou na versão do openssl. Gostaria de ajudar mas não tenho conhecimento na área específica de certificados digitais e ssl. My two cents: É mais barato comprar um novo certificado do fornecedor que deu certo.

thiagomagamoc commented 3 months ago

Veja o erro se refere a SSLv3, ninguém mais usa esse modo de encriptação. O que está sendo usado é o TLS 1.2. Não aparenta ser um problema do certificado, mas por desencargo de consciência instale o certificado no chrome e exporte novamente. Não é o PHP pois eu uso php 7..4, 8.2 e 8.3 sem problema, o problema está no openssl ou com alguma configuração na sua maquina, como você disse que é Ruindows não posso nem tentar te ajudar, pois não uso isso a mais de 30 anos. Minhas maquinas são DEBIAN (10,11, 12) ou Ubuntu (20.04 ou 22.04) uso sem problemas.

Roberto, eu testei em 2 máquinas Ruindows e 1 Máquina Linux Ubuntu, ambas apresentaram o mesmo erro...

robmachado commented 3 months ago

Apenas com esse certificado ou testou com outros certificados ??

thiagomagamoc commented 3 months ago

Resumo final:

  • 3 Ambientes diferentes (2 Windows e 1 Linux) testados com o NFE PHP : Os 3 deram erro
  • Alterado openssl : Não resolveu
  • Alterado parametros para forçar TLS diferentes : Não resolveu

Agora o teste mais interessante:

  • Testado aplicativo desenvolvido em Delphi, usando o mesmo certificado: NFE Homologação ENVIADA

E por fim:

  • Testado outro certificado no NFEPHP : NFE ENVIADA

Agora a questão final: O Delphi enviou a NFE 100% e o NFEPHP não enviou (Ambos utilizando o mesmo certificado)

Conclusão: Há sim um bug.... Qual? Num sei!

@robmachado