instalar - PHP-Error de certificado SSL: no se puede obtener el certificado de emisor local
instalar certificado ssl apache ubuntu (14)
Estoy ejecutando PHP Versión 5.6.3 como parte de XAMPP en Windows 7.
Cuando intento usar la API de Mandrill, aparece el siguiente error:
Excepción no detectada ''Mandrill_HttpError'' con el mensaje ''Llamada API a mensajes / plantilla de envío fallida: problema de certificado SSL: no se puede obtener el certificado de emisor local''
Ya probé todo lo que leí en StackOverflow, incluida la adición de lo siguiente al archivo php.ini:
curl.cainfo = "C:/xampp/php/cacert.pem"
Y, por supuesto, descargó en esa ubicación el archivo cacert.pem de http://curl.haxx.se/docs/caextract.html
pero después de todo eso, reinició XAMPP y el servidor Apache pero aún obtenía el mismo error.
Realmente no sé qué más probar.
¿Alguien puede aconsejar sobre qué más puedo probar?
Descargo de responsabilidad: este código hace que su servidor sea inseguro.
Tuve el mismo problema en el archivo Mandrill.php después de la línea número 65 donde dice $ this-> ch = curl_init ();
Agregue las siguientes dos líneas:
curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, 0);
Esto resolvió mi problema y también envió un correo electrónico usando localhost, pero sugiero NO usarlo en la versión en vivo en vivo. En su servidor en vivo, el código debería funcionar sin este código.
¡Finalmente conseguí que esto funcione!
-
Descargue el paquete de certificados .
-
Ponlo en alguna parte. En mi caso, ese era el directorio
c:/wamp/
(si está utilizando Wamp 64 bit, entonces esc:/wamp64/
). -
Habilite
mod_ssl
en Apache yphp_openssl.dll
enphp.ini
(descomente quitándolos;
al principio). Pero tenga cuidado, mi problema fue que tenía dos archivosphp.ini
y necesito hacer esto en ambos. Uno es el que obtiene del icono de la barra de tareas de WAMP, y otro es, en mi caso, enC:/wamp/bin/php/php5.5.12/
-
Agregue estas líneas a su certificado en ambos archivos
php.ini
:curl.cainfo="C:/wamp/cacert.pem" openssl.cafile="C:/wamp/cacert.pem"
-
Reinicie los servicios de Wamp.
Cuando vea la página http://curl.haxx.se/docs/caextract.html , notará en letras grandes una sección llamada:
RSA-1024 eliminado
Léalo, luego descargue la versión de los certificados que incluye los certificados ''RSA-1024''. https://github.com/bagder/ca-bundle/blob/e9175fec5d0c4d42de24ed6d84a06d504d5e5a09/ca-bundle.crt
Esos trabajarán con Mandrill.
Deshabilitar SSL es una mala idea.
Encontré una nueva solución sin ninguna certificación requerida para llamar a curl, solo agregue un código de dos líneas.
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
Gracias @Mladen Janjetovic,
Su sugerencia funcionó para mí en mac con ampps instalado.
Copiado: http://curl.haxx.se/ca/cacert.pem
Para:
/Applications/AMPPS/extra/etc/openssl/certs/cacert.pem
Y actualicé
php.ini
con esa ruta y reinicié Apache:
[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo="/Applications/AMPPS/extra/etc/openssl/certs/cacert.pem"
openssl.cafile="/Applications/AMPPS/extra/etc/openssl/certs/cacert.pem"
Y aplicó la misma configuración en la instalación de Windows AMPPS y funcionó perfectamente también.
[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo="C:/Ampps/php/extras/ssl/cacert.pem"
openssl.cafile="C:/Ampps/php/extras/ssl/cacert.pem"
: Lo mismo para wamp.
[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo="C:/wamp/bin/php/php5.6.16/extras/ssl/cacert.pem"
openssl.cafile="C:/wamp/bin/php/php5.6.16/extras/ssl/cacert.pem"
Si está buscando generar un nuevo certificado SSL usando SAN para localhost, los pasos en
esta publicación
funcionaron para mí en
Centos 7 / Vagrant / Chrome Browser
.
Intenté esto funciona
abierto
vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php
y cambia esto
$conf[CURLOPT_SSL_VERIFYHOST] = 2;
`enter code here`$conf[CURLOPT_SSL_VERIFYPEER] = true;
a esto
$conf[CURLOPT_SSL_VERIFYHOST] = 0;
$conf[CURLOPT_SSL_VERIFYPEER] = FALSE;
Los pasos anteriores, aunque útiles, no me funcionaron en Windows 8. No sé la correlación, pero los pasos a continuación funcionaron. Básicamente un cambio en el archivo cacert.pem. Espero que esto ayude a alguien.
- Descargue el archivo cacert.pem desde aquí: http://curl.haxx.se/docs/caextract.html
- Guarde el archivo en su carpeta de instalación de PHP. (por ejemplo: si usa xampp, guárdelo en c: / Installation_Dir / xampp / php / cacert.pem).
- Abra su archivo php.ini y agregue estas líneas:
- curl.cainfo = "C: / Installation_Dir / xampp / php / cacert.pem" openssl.cafile = "C: / Installation_Dir / xampp / php / cacert.pem"
- Reinicie su servidor Apache y eso debería solucionarlo (simplemente detenga e inicie los servicios según sea necesario).
Recibí el error como:
failed loading cafile stream: `C:/xamppPhp/apache/bin/curl-ca-bundle.crt`
Estoy usando la máquina de Windows. Entonces seguí los pasos a continuación.
1. I have downloaded .pem file from " https://curl.haxx.se/docs/caextract.html "
2. Then I kept the downloaded file inside "C:/xamppPhp/apache/bin/" folder and renamed the same downloaded file to "curl-ca-bundle.crt".
3. I restarted XAMPP and cleared the cache.
4. It''s done.
Espero que pueda ayudar a alguien
Si ninguna de las soluciones anteriores funciona, intente actualizar su instalación de XAMPP a una versión más nueva.
Estaba ejecutando XAMPP con php 5.5.11, el mismo código exacto no funcionó, actualicé a XAMPP con php 5.6.28 y las soluciones anteriores funcionaron.
Además, solo actualizar PHP no funcionó tampoco parece una combinación de configuraciones de apache y php en esa versión de XAMPP.
Espero que ayude a alguien.
Si no tiene acceso a
php.ini
, agregar este código (después de su
$ch = curl_init();
línea) funciona para mí:
$certificate_location = "C:/Program Files (x86)/EasyPHP-Devserver-16.1/ca-bundle.crt"; // modify this line accordingly (may need to be absolute)
curl_setopt($ch, CURLOPT_CAINFO, $certificate_location);
curl_setopt($ch, CURLOPT_CAPATH, $certificate_location);
Luego, solo tendrá que descargar
https://github.com/bagder/ca-bundle/blob/e9175fec5d0c4d42de24ed6d84a06d504d5e5a09/ca-bundle.crt
y guardarlo en la ubicación que especificó en
$certificate_location
.
Tengo una solución muy simple de este problema. Puede hacerlo sin ningún archivo de certificado.
Vaya a Laravel Root Folder -> Vender -> guzzlehttp -> guzzle -> src
Abra Client.php
encontrar $ por defecto matriz. que se ve así ...
$defaults = [
''allow_redirects'' => RedirectMiddleware::$defaultSettings,
''http_errors'' => true,
''decode_content'' => true,
''verify'' => true,
''cookies'' => false
];
Ahora el trabajo principal es cambiar el valor de la clave de verificación .
''verify'' => false,
Entonces, después de esto, no verificará el Certificado SSL para la Solicitud CURL ... Esta Solución me funciona. Encuentro esta solución después de muchas investigaciones ...
Tuve el mismo problema durante la creación de mi aplicación en AppVeyor.
-
Descargue
https://curl.haxx.se/ca/cacert.pem
en
c:/php
-
Habilitar
echo extension=php_openssl.dll >> c:/php/php.ini
opensslecho extension=php_openssl.dll >> c:/php/php.ini
-
Localizar certificado
echo curl.cainfo=c:/php/cacert.pem >> c:/php/php.ini
elaborando las respuestas anteriores para la implementación del servidor.
$hostname = gethostname();
if($hostname=="mydevpc")
{
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
}
debe hacer el truco para el entorno de desarrollo sin comprometer el servidor cuando se implementa.
para guzzle puedes probar esto:
$client = new Client(env(''API_HOST''));
$client->setSslVerification(false);
probado en guzzle / guzzle 3. *