Estou usando o XAMPP para desenvolvimento. Recentemente, atualizei minha instalação do xampp de uma versão antiga para a 1.7.3.
Agora, quando enrolado sites habilitados para HTTPS, recebo a seguinte exceção
Erro fatal: exceção não capturada 'RequestCore_Exception' com a mensagem 'recurso cURL: ID do recurso # 55; Erro cURL: problema no certificado SSL, verifique se o certificado da CA está OK. Detalhes: erro: 14090086: rotinas SSL: SSL3_GET_SERVER_CERTIFICATE: falha na verificação do certificado (60) '
Todos sugerem o uso de algumas opções específicas de curl do código PHP para corrigir esse problema. Eu acho que não deveria ser assim. Porque não tive nenhum problema com a minha versão antiga do XAMPP e só aconteceu depois de instalar a nova versão.
Preciso de ajuda para descobrir quais configurações são alteradas na minha instalação do PHP, Apache etc. podem corrigir esse problema.
CURLOPT_SSL_VERIFYPEER
-> false). Você pode adicionar o certificado de CA do site com o qual está tentando fazer SSL ou desabilitar a verificação da CA. Essas são as duas únicas opções disponíveis.CURLOPT_SSL_VERIFYPEER
parafalse
anula o propósito de usar SSL.É um problema bastante comum no Windows. Você precisa apenas definir
cacert.pem
comocurl.cainfo
.Desde o PHP 5.3.7, você pode fazer:
php.ini
- add curl.cainfo = "PATH_TO / cacert.pem"Caso contrário, você precisará fazer o seguinte para cada recurso cURL:
fonte
2.
, você deve adicionar a variável a doisphp.ini
arquivos separados . Veja stackoverflow.com/a/25706713/1101095Aviso: isso pode apresentar problemas de segurança contra os quais o SSL foi projetado para proteger, tornando toda a sua base de código insegura. Isso vai contra todas as práticas recomendadas.
Mas uma correção realmente simples que funcionou para mim foi chamar:
antes de ligar para:
no arquivo php.
Acredito que isso desabilite toda a verificação de certificados SSL.
fonte
Fonte: http://ademar.name/blog/2006/04/curl-ssl-certificate-problem-v.html
para Tudo acima Informações de crédito Vá para: http://ademar.name/blog/2006/04/curl-ssl-certificate-problem-v.html
fonte
As soluções acima são ótimas, mas se você estiver usando o WampServer, poderá achar que a configuração da
curl.cainfo
variávelphp.ini
não funciona.Acabei encontrando o WampServer com dois
php.ini
arquivos:O primeiro é aparentemente usado para quando arquivos PHP são chamados por meio de um navegador da Web, enquanto o segundo é usado quando um comando é chamado por meio da linha de comando ou
shell_exec()
.TL; DR
Se estiver usando o WampServer, você deve adicionar a
curl.cainfo
linha aos doisphp.ini
arquivos.fonte
Pelo amor de tudo o que é santo ...
No meu caso, eu tive que definir o
openssl.cafile
variável de configuração PHP para o caminho do arquivo PEM.Confio que é verdade que existem muitos sistemas em que a configuração
curl.cainfo
na configuração do PHP é exatamente o que é necessário, mas no ambiente com o qual estou trabalhando, que é o eboraas / laravel docker, que usa Debian 8 (jessie) e PHP 5.6, definir essa variável não funcionou.Percebi que a saída de
php -i
não mencionou nada sobre essa configuração específica, mas havia algumas linhasopenssl
. Há uma opçãoopenssl.capath
eopenssl.cafile
, mas apenas definir a segunda opção permitida via PHP para finalmente ficar bem com os URLs HTTPS.fonte
Às vezes, se o aplicativo que você tentar entrar em contato tiver certificados autoassinados, o cacert.pem normal em http://curl.haxx.se/ca/cacert.pem não resolverá o problema.
Se você tiver certeza do URL do terminal em serviço, acesse-o pelo navegador, salve o certificado manualmente no formato "Certificado X 509 com cadeia (PEM)". Aponte este arquivo de certificado com o
fonte
Eu tenho o mesmo erro no Amazon AMI linux.
Resolvi definindo curl.cainfo em /etc/php.d/curl.ini
https://gist.github.com/reinaldomendes/97fb2ce8a606ec813c4b
Adição outubro 2018
No Amazon Linux v1, edite este arquivo
Para adicionar esta linha
fonte
Ao definir as opções de curvatura para CURLOPT_CAINFO, lembre-se de usar aspas simples, usar aspas duplas causará apenas outro erro. Portanto, sua opção deve se parecer com:
Além disso, no seu arquivo php.ini, a configuração deve ser escrita como: (observe minhas aspas duplas)
Coloquei diretamente abaixo da linha que diz o seguinte:
extension=php_curl.dll
(Apenas para fins de organização, você pode colocá-lo em qualquer lugar dentro do seu
php.ini
, basta colocá-lo perto de outra referência de ondulação; portanto, quando procuro usando a palavra-chave ondulação, posso encontrar as duas referências de ondulação em uma área.)fonte
Acabei aqui ao tentar obter o GuzzleHttp (php + apache no Mac) para obter uma página em www.googleapis.com.
Aqui estava minha solução final, caso isso ajude alguém.
Examine a cadeia de certificados para qualquer domínio que esteja fornecendo esse erro. Para mim, foi googleapis.com
Você receberá algo como isto:
Nota: Eu capturei isso depois de corrigir o problema. A saída da sua cadeia pode parecer diferente.
Então você precisa olhar para os certificados permitidos no php. Execute phpinfo () em uma página.
Em seguida, procure o arquivo de certificado carregado na saída da página:
Esse é o arquivo que você precisará corrigir adicionando os certificados corretos.
Basicamente, você precisa anexar as "assinaturas" corretas do certificado ao final deste arquivo.
Você pode encontrar alguns deles aqui: talvez seja necessário pesquisar no google / outros na cadeia, se você precisar deles.
Eles se parecem com isso:
( Nota: Esta é uma imagem para que as pessoas não copiem / colem simplesmente certificados do stackoverflow )
Quando os certificados corretos estiverem nesse arquivo, reinicie o apache e teste.
fonte
Você pode tentar reinstalar o
ca-certificates
pacote ou permitir explicitamente o certificado em questão, conforme descrito aqui .fonte
A solução é muito simples! Coloque esta linha antes
curl_exec
:Para mim funciona.
fonte