moiplabs / moip-php

Biblioteca de integração com o MoIP em PHP
http://labs.moip.com.br/
83 stars 68 forks source link

SSL connect error #52

Open MoacirFuhr opened 9 years ago

MoacirFuhr commented 9 years ago

Estou utilizando a classe na minha aplicação. Tudo funcionando perfeitamente em ambiente local e também no site. Mas quando acionei o SSL no site para ficar https:// parou de funcionar. Agora recebe o seguinte erro: (17) "SSL connect error"

Alguém tem alguma dica, já verifiquei os arquivos da classe diversas vezes e não consegui encontrar o motivo do erro.

douglas-soriano commented 9 years ago

Estou com o mesmo problema, desde semana passada. Testei em servidores diferentes, mandei mensagem no suporte da MoIP e não souberam me ajudar. Abri um chamado na minha hospedagem também para verificarem se não era algo do certificado. Estava tudo certo com o certificado, mas não souberam me ajudar também. Conseguiu alguma solução?

MoacirFuhr commented 9 years ago

Não, não conseguiram me ajudar em nada. Só falaram do TLS e SSLv3, falei tambem com a hospedagem, na realidade, um ficou tocando a culpa pra cima do outro. Até agora não sei quem é o culpado.

kauemendes commented 9 years ago

Alguém sabe se alguém respondeu esse problema?

Por que estou tentando fazer o teste em dev, usando CURL no terminal o Handshake está ok, mas via PHP usando a mesma versão do CURL está com problema de conexão.

curl_setopt($curl, CURLOPT_HTTPHEADER, $header); curl_setopt($curl, CURLOPT_USERPWD, $user . ":" . $passwd); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0"); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $param); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_1);

Unknown SSL protocol error in connection to desenvolvedor.moip.com.br:443

Sabem dizer o que pode ser?

MoacirFuhr commented 9 years ago

Recebi o seguinte e-mail do suporte do moip:

Para finalizar a aplicação e partimos para homologação, você pode utilizar essa URL, que ainda está com TLS 1.0: https://desenvolvedor2.moip.com.br/ Porém você precisa verificar a atualização do sistema até o dia 30/09/2015, nesta data o suporte ao TLS 1.0 será desativado em produção.

Alterando o endereço de https://desenvolvedor.moip.com.br/ para https://desenvolvedor2.moip.com.br/ nos arquivos Moip.php e MoipClient.php tudo passou a funcionar. Aparentemente é um erro do meu servidor de hospedagem que não está dando suporte a TLS 1.1 e 1.2.

MoacirFuhr commented 9 years ago

Entrei em contato com a minha hospedagem da KingHost, e eles solucionaram o problema, e me enviaram a seguinte mensagem por e-mail:

Agradecemos seu contato. Foram realizadas a atualização dos pacotes do sistema operacional dos servidores onde encontram-se os domínios com dificuldade. Adicionalmente, as bibliotecas do Moip contidas em seu FTP não contemplam a configuração da versão de SSL a ser utilizada pelo PHP cURL, o que se faz necessário em ambientes CentOS 6, visto que a biblioteca NSS nesta versão do S.O. (por sinal, a mesma utilizada no servidor deles, e que é utilizado pelo curl), tenta por padrão a conexão via SSLv3. Sendo assim, foi adicionada a diretiva CURLOPT_SSLVERSION, com o valor 1 (para forçar TLS) nas funções contidas no arquivo /www/lib/MoipClient.php, no seu domínio, e realizado o teste informado no chamado (realização de uma compra via boleto bancário), o qual retornou em êxito conforme imagem em anexo. Peço que tais modificações no arquivo citado sejam replicadas para seu outro domínio e realize novos testes. Caso a dificuldade persista, por favor, nos forneça informações de como podemos simular a dificuldade para realização de testes internos. Por fim, oriento-lhe a sugerir à Moip que inclua a opção CURLOPT_SSLVERSION em sua biblioteca, visto que outros utilizadores do sistema que estejam hospedados em ambientes CentOS 6 (mesmo em sua versão 6.7, a mais atual) podem passar pela mesma dificuldade devido à ausência desta opção.

leobaiano commented 8 years ago

Eu estava com o mesmo problema e consegui resolver da seguinte forma:

No arquivo lib/MoipClient.php

Linha 30 e 31

 $curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);

Acrescenta curl_setopt($curl, CURLOPT_SSLVERSION, 1); deixando assim:

$curl = curl_init();
curl_setopt($curl, CURLOPT_SSLVERSION, 1);
curl_setopt($curl, CURLOPT_URL, $url);

Linha 69

CURLINFO_HEADER_OUT => true

Deixa assim:

 CURLINFO_HEADER_OUT => true,
 CURLOPT_SSLVERSION => 1

Linha 110

CURLOPT_RETURNTRANSFER => true

Deixa assim:

CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSLVERSION => 1
carlilton commented 8 years ago

Obrigado @leobaiano, isso resolveu meu problema.