Estoy usando XAMPP para el desarrollo. Recientemente actualicé mi instalación de xampp de una versión anterior a 1.7.3.
Ahora, cuando rizo los sitios habilitados para HTTPS, obtengo la siguiente excepción
Error grave: excepción no detectada 'RequestCore_Exception' con el mensaje 'recurso cURL: ID de recurso # 55; Error de cURL: problema con el certificado SSL, verifique que el certificado de CA esté bien. Detalles: error: 14090086: rutinas SSL: SSL3_GET_SERVER_CERTIFICATE: verificación de certificado fallida (60) '
Todos sugieren usar algunas opciones de rizo específicas del código PHP para solucionar este problema. Creo que este no debería ser el camino. Porque no tuve ningún problema con mi versión anterior de XAMPP y sucedió solo después de instalar la nueva versión.
Necesito ayuda para determinar qué cambios de configuración en mi instalación de PHP, Apache, etc. pueden solucionar este problema.
CURLOPT_SSL_VERIFYPEER
-> falso). Puede agregar el certificado de CA del sitio con el que está tratando de hacer SSL o deshabilitar la verificación de CA. Esas son las dos únicas opciones disponibles.CURLOPT_SSL_VERIFYPEER
defalse
derrotas el propósito de utilizar SSL.Es un problema bastante común en Windows. Es necesario sólo para conjunto
cacert.pem
decurl.cainfo
.Desde PHP 5.3.7 podrías hacer:
php.ini
: agregue curl.cainfo = "PATH_TO / cacert.pem"De lo contrario, deberá hacer lo siguiente para cada recurso cURL:
fuente
2.
, debe agregar la variable a dosphp.ini
archivos separados . Ver stackoverflow.com/a/25706713/1101095Advertencia: esto puede presentar problemas de seguridad contra los cuales SSL está diseñado para proteger, lo que hace que toda su base de código sea insegura. Va en contra de todas las prácticas recomendadas.
Pero una solución realmente simple que funcionó para mí fue llamar:
antes de llamar:
en el archivo php
Creo que esto deshabilita toda verificación de certificados SSL.
fuente
Fuente: http://ademar.name/blog/2006/04/curl-ssl-certificate-problem-v.html
para todo el crédito de información anterior va a: http://ademar.name/blog/2006/04/curl-ssl-certificate-problem-v.html
fuente
Las soluciones anteriores son geniales, pero si está utilizando WampServer, es posible que la configuración de la
curl.cainfo
variablephp.ini
no funcione.Finalmente encontré que WampServer tiene dos
php.ini
archivos:Aparentemente, el primero se usa para cuando se invocan archivos PHP a través de un navegador web, mientras que el segundo se usa cuando se invoca un comando a través de la línea de comando o
shell_exec()
.TL; DR
Si usa WampServer, debe agregar la
curl.cainfo
línea a ambosphp.ini
archivos.fuente
Por el amor de todo lo que es santo ...
En mi caso, tuve que establecer la
openssl.cafile
variable de configuración de PHP en la ruta del archivo PEM.Confío en que es muy cierto que hay muchos sistemas en los que establecer
curl.cainfo
la configuración de PHP es exactamente lo que se necesita, pero en el entorno con el que estoy trabajando, que es el contenedor acoplador eboraas / laravel , que usa Debian 8 (jessie) y PHP 5.6, establecer esa variable no funcionó.Noté que la salida de
php -i
no mencionaba nada sobre esa configuración de configuración en particular, pero tenía algunas líneas al respectoopenssl
. Hay una opciónopenssl.capath
y unaopenssl.cafile
, pero solo configurar el segundo permite el rizo a través de PHP para finalmente estar bien con las URL HTTPS.fuente
A veces, si la aplicación que intenta contactar tiene certificados autofirmados, el cacert.pem normal de http://curl.haxx.se/ca/cacert.pem no resuelve el problema.
Si está seguro acerca de la URL del punto final del servicio, hágalo a través del navegador, guarde el certificado manualmente en el formato "Certificado X 509 con cadena (PEM)". Apunte este archivo de certificado con el
fuente
Tengo el mismo error en Amazon AMI Linux.
He resuelto por el ajuste curl.cainfo en /etc/php.d/curl.ini
https://gist.github.com/reinaldomendes/97fb2ce8a606ec813c4b
Adición octubre 2018
En Amazon Linux v1 edite este archivo
Para agregar esta línea
fuente
Al configurar las opciones de curvatura para CURLOPT_CAINFO, recuerde usar comillas simples, usar comillas dobles solo causará otro error. Entonces su opción debería verse así:
Además, en su configuración de archivo php.ini debe escribirse como: (observe mis comillas dobles)
Lo puse directamente debajo de la línea que dice esto:
extension=php_curl.dll
(Solo para fines de organización, puede colocarlo en cualquier lugar dentro de su
php.ini
, solo lo coloco cerca de otra referencia de rizo, así que cuando busco usando la palabra clave curl puedo encontrar ambas referencias de rizo en un área).fuente
Terminé aquí cuando intentaba obtener GuzzleHttp (php + apache en Mac) para obtener una página de www.googleapis.com.
Aquí estaba mi solución final en caso de que ayude a alguien.
Mire la cadena de certificados para cualquier dominio que le esté dando este error. Para mí fue googleapis.com
Volverás algo como esto:
Nota: Capturé esto después de solucionar el problema, ya que la salida de su cadena puede verse diferente.
Entonces debes mirar los certificados permitidos en php. Ejecute phpinfo () en una página.
Luego busque el archivo de certificado que se carga desde la salida de la página:
Este es el archivo que necesitará corregir agregando los certificados correctos.
Básicamente, debe agregar las "firmas" de certificados correctas al final de este archivo.
Puede encontrar algunos de ellos aquí: es posible que necesite buscar / buscar en Google otros en la cadena si los necesita.
Se ven así:
( Nota: esta es una imagen para que la gente no simplemente copie / pegue certificados de stackoverflow )
Una vez que los certificados correctos estén en este archivo, reinicie apache y pruebe.
fuente
Puede intentar reinstalar el
ca-certificates
paquete o permitir explícitamente el certificado en cuestión como se describe aquí .fuente
¡La solución es muy simple! Pon esta línea antes
curl_exec
:Para mi funciona.
fuente