Não houve retorno do Curl. Unknown SSL protocol error in connection to hnfe.fazenda.mg.gov.br:443

1,144 views
Skip to first unread message

Professor Leandro Alfredo

unread,
Jul 1, 2016, 8:54:14 AM7/1/16
to NFePHP
Versao do PHP 5.6.21
OK
minimo PHP 5.4.0
cURL versão 7.47.1
OK
minimo cURL 7.22.2
OpenSSL versão OpenSSL 1.0.2d 9 Jul 2015
OK
minimo OpenSSL 1.0
DOM versão 2.9.3
OK
minimo DOM 2.0.6
GD versão enabled
OK
-----
SOAP versão enabled
OK
-----
ZIP versão 1.12.5
OK
-----

Pessoal alguém já passou por isso?

Verifiquei que em meu servidor de producao a versão do cURL é 7.21 e funciona. Já esta (de teste) de 7.47.1 não funciona.

O que quero entender é que até ontem (rsrs) estava funcionando normal! 

Alguém pode me ajudar com uma solução. Obrigado

Roberto Machado

unread,
Jul 1, 2016, 8:56:17 AM7/1/16
to nfe...@googlegroups.com

--
--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Para Postar: nfe...@googlegroups.com
Para Sair do Grupo: nfephp+un...@googlegroups.com
Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
Repositório: https://github.com/nfephp-org/nfephp
---
Você recebeu essa mensagem porque está inscrito no grupo "NFePHP" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nfephp+un...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
Roberto
Nisi utile est quod facimus stulta est gloriae (Julius Phaedous)

Professor Leandro Alfredo

unread,
Jul 1, 2016, 9:29:32 AM7/1/16
to NFePHP
Para tpAmb = 2 ocorre isto e tpAmb = 1 não ocorre.

Com isto, entendo que o pau está na sefaz?

Roberto Machado

unread,
Jul 1, 2016, 9:57:05 AM7/1/16
to nfe...@googlegroups.com
Leandro você procurou no grupo ??? leu as postagens ?? 

NÃO DÁ PARA FICAR REPETINDO as mesmas informações toda vez que alguém tem o mesmo problema.

Quando se encontra um problema para aprender sobre o que está acontecendo tem que investigar, tem que aprender a investigar e não apenas perguntar ISSO é muito comodo 😟 

Pois bem, o que normalmente ocorre é referente ao protocolo de segurança usado pelo servidor.

Durante o "handshake" https, o PHP tenta identificar qual o protocolo a ser usado, pode ser SSLv3, TLSV1, ....
Algumas versões do PHP, podem ter problemas para identificar o protocolo de segurança, por algum erro durante a compilação das libs, ou ainda por falhas na própria configuração do servidor da SEFAZ.

Veja o retorno do cURL "Unknown SSL protocol"

OU seja protocolo SSL desconhecido, o cURL não conseguiu saber que protocolo usar. Eu deixei um wiki com algumas formas de verificar os certificados do servidor e os protocolos (veja em https://github.com/nfephp-org/nfephp/wiki/Teste-de-acesso-com-o-cURL).

Com o openssl foi possível ver que o protocolo que ele está usando é o TLSv1.2, pois bem veja como está estabelecido o método:

$tools->setSSLProtocol($protocol) 

O $protocol pode ser :
   'none' para usar o resultado do handshake (default)
  'TLSv1.2' FORÇA o uso do TLSv1.2
  'TLSv1.0'
  'TLSv1.1'
  'TLSv1'
  'SSLv2'
  'SSLv3'

Todas as SEFAZ podem habilitar ou desabilitar a seu bel prazer o protocolo que quiserem e não tem que te avisar !!! Faz parte do seu trabalho ajustar isso.

NOTA: TLSv1.2 atualmente é o mais seguro de todos por isso está aos poucos sendo utilizado.

Roberto 
 





Em 1 de julho de 2016 10:29, Professor Leandro Alfredo <pleandr...@gmail.com> escreveu:
Para tpAmb = 2 ocorre isto e tpAmb = 1 não ocorre.

Com isto, entendo que o pau está na sefaz?

--
--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Para Postar: nfe...@googlegroups.com
Para Sair do Grupo: nfephp+un...@googlegroups.com
Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
Repositório: https://github.com/nfephp-org/nfephp
---
Você recebeu essa mensagem porque está inscrito no grupo "NFePHP" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nfephp+un...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Rafael Carvalho

unread,
Jul 1, 2016, 10:06:56 AM7/1/16
to NFePHP
Eu tive muitos problemas com o CURL porque são 3 camadas de programação que podem dar erro. As principais são o OPENSSL e a libcurl do PHP.

A Lib_Curl geralmente é a culpada, cheguei nessa conclusão quando meu servidor da Amazon, utilizando a distro linux da própria AWS ao invés de um Debian por exemplo. Esse erro me atormentou por 4 dias, até que instalei o WAMP na minha máquina virtual do notebook e rodei o sistema: TUDO FUNCIONANDO PERFEITO, e a única coisa diferente era a versão do libcurl.

Pode até não ser isso, mas 99% das vezes, é tiro certo.

Professor Leandro Alfredo

unread,
Jul 6, 2016, 10:54:35 AM7/6/16
to NFePHP
Roberto, li os comentários do grupo e tudo mais.

estou utilizando esta linha para enviar o tipo do protocolo;

$nfe->setSSLProtocol('TLSv1.2');

está correto?

Em sexta-feira, 1 de julho de 2016 09:54:14 UTC-3, Professor Leandro Alfredo escreveu:

Roberto Machado

unread,
Jul 6, 2016, 11:56:54 AM7/6/16
to nfe...@googlegroups.com
Sim, mas essa é uma solução paliativa.

O correto é saber porque o seu libcurl não está identificando o protocolo, nas minhas maquinas isso não é necessário pois o libcurl identifica e usa o protocolo correto.

Roberto

Professor Leandro Alfredo

unread,
Jul 6, 2016, 12:14:00 PM7/6/16
to NFePHP
Certo, entendi.

Me desculpe a limitação. Pode me dá uma dica em como proceder para que a libcurl faça esta identificação?

obrigado,

Roberto Machado

unread,
Jul 6, 2016, 12:16:25 PM7/6/16
to nfe...@googlegroups.com
Isso refere-se a forma como a biblioteca foi compilada !!! 

Normalmente esse tipo de problema ocorre em distribuições Linux derivadas do RedHat como o CentOS, já nas distribuições derivadas do DEBIAN (como o UBUNTU) a biblioteca funciona muito bem.

Roberto 

Professor Leandro Alfredo

unread,
Jul 6, 2016, 12:21:55 PM7/6/16
to NFePHP
Certo,

Eu utilizei a linha $nfe->setSSLProtocol('TLSv1.2'); setando na mão todas estas possibilidades: 

                'TLSv1.2' FORÇA o uso do TLSv1.2
'TLSv1.0'
'TLSv1.1'
'TLSv1'
'SSLv2'
'SSLv3'
e nenhuma delas funcionaram, hoje. Porém, ontem, estava TLSv1.2 e funcionou normalmente na homologação. E hoje não. Existe possibilidade de ser nos servidores do sefaz?

Roberto Machado

unread,
Jul 6, 2016, 12:24:43 PM7/6/16
to nfe...@googlegroups.com
É claro que existe essa possibilidade, mas tem que ver por outros caminhos se o servidor está online.
Mas ainda pode ser um problema do seu script.

Roberto

Euler Henrique

unread,
Dec 1, 2016, 3:16:37 PM12/1/16
to NFePHP
 Roberto como faço para ver se o servidor esta online? conforme você mensionou  abaixo.

Roberto Machado

unread,
Dec 2, 2016, 5:35:42 AM12/2/16
to nfe...@googlegroups.com
Acesse pelo browser, com o SOAPUI ou com outra ferramenta desse tipo, é claro usando o certificado para se identificar e buscando o WSDL

Roberto

Roberto Machado

unread,
Dec 2, 2016, 5:51:16 AM12/2/16
to nfe...@googlegroups.com
Para identificar problemas relativos aos protocolos de segurança pode ser feito o indicado aqui https://github.com/nfephp-org/nfephp/wiki/Teste-de-acesso-com-o-cURL

A partir do novo release da NFe pela SEFAZ (layout 4.0) os webservices deverão usar obrigatoriamente apenas TLSv1.2 nas comunicações https. Vamos ver se isso será cumprido aparentemente é para esse caminho que todos estão indo (aos trancos e barrancos) 

Roberto

Reply all
Reply to author
Forward
0 new messages