root@sclrdev:/home/sclr/certs/FreshCerts# curl --ftp-ssl --verbose ftp://{abc}/ -u trup:trup --cacert /etc/ssl/certs/ca-certificates.crt
* About to connect() to {abc} port 21 (#0)
* Trying {abc}...
* Connected to {abc} ({abc}) port 21 (#0)
< 220-Cerberus FTP Server - Home Edition
< 220-This is the UNLICENSED Home Edition and may be used for home, personal use only
< 220-Welcome to Cerberus FTP Server
< 220 Created by Cerberus, LLC
> AUTH SSL
< 234 Authentication method accepted
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS alert, Server hello (2):
* SSL certificate problem: unable to get local issuer certificate
* Closing connection 0
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: http://curl.haxx.se/docs/sslcerts.html
curl performs SSL certificate verification by default, using a "bundle"
of Certificate Authority (CA) public keys (CA certs). If the default
bundle file isn't adequate, you can specify an alternate file
using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
the bundle, the certificate verification probably failed due to a
problem with the certificate (it might be expired, or the name might
not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
the -k (or --insecure) option.
curl
ssl
openssl
ssl-certificate
x509certificate
usuario3812540
fuente
fuente
Respuestas:
En relación con el problema 'Certificado SSL: no se puede obtener el certificado del emisor local'. Es importante tener en cuenta que esto se aplica al sistema que envía la solicitud CURL y NO al servidor que recibe la solicitud.
Descargue el último cacert.pem de https://curl.haxx.se/ca/cacert.pem
Agregue la siguiente línea a php.ini: (si se trata de un alojamiento compartido y no tiene acceso a php.ini, puede agregar esto a .user.ini en public_html).
curl.cainfo="/path/to/downloaded/cacert.pem"
¡Asegúrate de encerrar el camino entre comillas dobles!
De forma predeterminada, el proceso FastCGI analizará nuevos archivos cada 300 segundos (si es necesario, puede cambiar la frecuencia agregando un par de archivos como se sugiere aquí https://ss88.uk/blog/fast-cgi-and-user-ini- archivos-el-nuevo-htaccess / ).
fuente
curl.cainfo="/path/to/downloaded/cacert.pem" // Do not forget to write between quotes
Está fallando ya que cURL no puede verificar el certificado proporcionado por el servidor.
Hay dos opciones para que esto funcione:
Use cURL con la
-k
opción que permite que curl realice conexiones inseguras, es decir, cURL no verifica el certificado.Agregue la CA raíz (la CA que firma el certificado del servidor) a
/etc/ssl/certs/ca-certificates.crt
Debe usar la opción 2, ya que es la opción que garantiza que se está conectando al servidor FTP seguro.
fuente
He resuelto este problema agregando un código de línea en el script cURL:
Advertencia : ¡Esto hace que la solicitud sea completamente insegura (vea la respuesta de @YSU)!
fuente
if( stristr("127.0.0.1",$_SERVER["SERVER_NAME"] ) || stristr("localhost",$_SERVER["SERVER_NAME"] )) curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
En mi caso, resultó ser un problema con la instalación de mi certificado en el servicio que estaba tratando de consumir con cURL. No pude agrupar / concatenar los certificados intermedios y raíz en mi certificado de dominio . Al principio no era obvio que este era el problema porque Chrome lo resolvió y aceptó el certificado a pesar de omitir los certificados intermedios y raíz.
Después de agrupar el certificado, todo funcionó como se esperaba. Me puse así
Y se repite para todos los certificados intermedios y raíz.
fuente
-----END CERTIFICATE----------BEGIN CERTIFICATE-----
en su paquete, y obtendrá el oscuro error:curl: (77) error setting certificate verify locations
Para mí, la instalación simple de certificados ayudó:
fuente
Tuve este problema después de instalar Git Extensions v3.48. Intenté instalar mysysgit nuevamente pero el mismo problema. Al final, tuve que desactivar (¡tenga en cuenta las implicaciones de seguridad!) Verificación Git SSL con:
pero si tiene un certificado de dominio, agréguelo a (Win7)
fuente
--global
de tener SSL solo deshabilitado para el repositorio donde tiene problemas. Visite groups.google.com/forum/#!topic/git-for-windows/mlqn5J4OLlw para obtener una discusión sobre los archivos CRT necesarios actuales.Nos encontramos con este error recientemente. Resulta que estaba relacionado con el certificado raíz que no se instaló correctamente en el directorio de la tienda de CA. Estaba usando un comando curl donde especificaba el directorio CA directamente.
curl --cacert /etc/test/server.pem --capath /etc/test ...
Este comando fallaba cada vez con curl: (60) Problema con el certificado SSL: no se pudo obtener el certificado del emisor local.Después de usar
strace curl ...
, se determinó que curl estaba buscando el archivo raíz cert con un nombre de 60ff2731.0, que se basa en una convección de nomenclatura hash openssl. Así que encontré este comando para importar correctamente el certificado raíz correctamente:que crea un enlace suave
curl, debajo de las cubiertas leyó el certificado server.pem, determinó el nombre del archivo de certificado raíz (rootcert.pem), lo convirtió a su nombre hash, luego realizó una búsqueda del archivo del sistema operativo, pero no pudo encontrarlo.
Entonces, la conclusión es que use strace cuando ejecute curl cuando el error de curl es oscuro (fue una gran ayuda), y luego asegúrese de instalar correctamente el certificado raíz utilizando la convención de nomenclatura openssl.
fuente
Es muy probable que falte un certificado del servidor.
Raíz-> Intermedio-> Servidor
Un servidor debe enviar el Servidor e Intermedio como mínimo.
Úselo
openssl s_client -showcerts -starttls ftp -crlf -connect abc:21
para depurar el problema.Si solo se devuelve un certificado (ya sea autofirmado o emitido), debe elegir:
curl -k
(muy mala idea)Si el servidor regresó, más de uno, pero sin incluir un certificado autofirmado (root):
Si el servidor devolvió un certificado de CA raíz, entonces no está en su tienda de CA, sus opciones son:
He ignorado los certificados caducados / revocados porque no había mensajes que lo indicaran. Pero puedes examinar los certificados con
openssl x509 -text
Dado que se está conectando a un servidor ftp de edición doméstica ( https://www.cerberusftp.com/support/help/installing-a-certificate/ ), voy a decir que está autofirmado.
Publique más detalles, como la salida de openssl.
fuente
De acuerdo con los documentos de cURL , también puede pasar el certificado al
curl
comando:Por ejemplo:
fuente
Puede ser suficiente simplemente actualizar la lista de certificados
fuente
Intente reinstalar curl en Ubuntu y actualice mis certificados de CA con los
sudo update-ca-certificates --fresh
que actualicé los certificadosfuente
En Windows estaba teniendo este problema. Curl fue instalado por mysysgit, por lo que la descarga e instalación de la versión más nueva solucionó mi problema.
De lo contrario, estas son instrucciones decentes sobre cómo actualizar su certificado de CA que podría probar.
fuente
Sí, también debe agregar un certificado de CA. Agregar un fragmento de código en Node.js para una vista clara.
fuente
He encontrado este problema también. He leído este hilo y la mayoría de las respuestas son informativas pero demasiado complejas para mí. No tengo experiencia en temas de redes, por lo que esta respuesta es para personas como yo.
En mi caso, este error estaba ocurriendo porque no incluí los certificados intermedios y raíz al lado del certificado que estaba usando en mi aplicación.
Esto es lo que obtuve del proveedor de certificados SSL:
En el
abc.crt
archivo, solo había un certificado:Si lo suministrara en este formato, el navegador no mostraría ningún error (Firefox) pero recibiría un
curl: (60) SSL certificate : unable to get local issuer certificate
error cuando hiciera la solicitud de curl.Para corregir este error, verifique su
abc-bunde.crt
archivo. Lo más probable es que veas algo como esto:Estos son sus certificados intermedios y raíz. Se está produciendo un error porque faltan en el certificado SSL que está proporcionando a su aplicación.
Para corregir el error, combine el contenido de ambos archivos en este formato:
Tenga en cuenta que no hay espacios entre los certificados, al final o al inicio del archivo. Una vez que proporcione este certificado combinado a su aplicación, su problema debería ser solucionado.
fuente
En Windows: si ejecuta desde cmd
Descargue cacert.pem desde https://curl.haxx.se/docs/caextract.html
Establecer variable de entorno:
y recargar ambiente
Ahora intenta nuevamente
Motivo del problema: https://laracasts.com/discuss/channels/general-discussion/curl-error-60-ssl-certificate-problem-unable-to-get-local-issuer-certificate/replies/95548
fuente
Mi caso fue diferente. Estoy alojando un sitio detrás de un firewall. El error fue causado por pfSense.
Accidentalmente encontré la causa, gracias a esta respuesta .
Todo está bien cuando accedí a mi sitio desde WAN.
Sin embargo, cuando se accedió al sitio desde dentro de la LAN (por ejemplo, cuando Wordpress realizó una
curl
solicitud a su propio servidor, a pesar de usar la IP WAN49.x.x.x
), se le sirvió la página de inicio de sesión de pfSense.Identifiqué el certificado como
pfSense webConfigurator Self-Signed Certificate
. No es de extrañarcurl
arrojó un error.Causa: Lo que sucedió fue que
curl
estaba usando la dirección IP WAN del sitio49.x.x.x
. Pero, en el contexto del servidor web, la IP WAN era el firewall.Depuración: descubrí que estaba obteniendo el certificado pfSense.
Solución: en el servidor que aloja el sitio, apunte su propio nombre de dominio a 127.0.0.1
Al aplicar la solución,
curl
el servidor web manejó adecuadamente la solicitud y no se envió al firewall que respondió enviando la página de inicio de sesión.fuente
Este es un problema del almacén de certificados SSH. Debe descargar el archivo pem de certificado válido del sitio web de CA de destino y luego crear el archivo de enlace flexible para indicar al SSL el certificado confiable.
openssl x509 -hash -noout -in DigiCert_Global_Root_G3.pem
conseguirás
dd8e9d41
construir enlace solf con número hash y sufijo el archivo con un .0 (punto cero)
dd8e9d41.0
Vuelva a intentarlo.
fuente
Descargar https://curl.haxx.se/ca/cacert.pem
Después de la descarga, mueva este archivo a su servidor wamp.
Para exp: D: \ wamp \ bin \ php \
Luego agregue la siguiente línea al archivo php.ini en la parte inferior.
curl.cainfo = "D: \ wamp \ bin \ php \ cacert.pem"
fuente
Debe cambiar el certificado del servidor de
cert.pem
a.fullchain.pem
Tuve el mismo problema con Perl HTTPS Daemon:
he cambiado:
SSL_cert_file => '/etc/letsencrypt/live/mydomain/cert.pem'
a:
SSL_cert_file => '/etc/letsencrypt/live/mydomain/fullchain.pem'
fuente
Hasta ahora, he visto que este problema ocurre dentro de las redes corporativas debido a dos razones, una o ambas pueden estar sucediendo en su caso:
Como nota al margen, el número 2 anterior puede hacer que se sienta incómodo con el tráfico TLS supuestamente seguro que se está escaneando. Ese es el mundo corporativo para ti.
fuente
Tenía ese problema y no se resolvió con una versión más nueva. / etc / certs tenía el certificado raíz, el navegador dijo que todo está bien. Después de algunas pruebas, recibí de ssllabs.com la advertencia de que mi cadena no estaba completa (de hecho, era la cadena del certificado anterior y no el nuevo). Después de corregir la cadena cert todo estuvo bien, incluso con rizo.
fuente
Tuve este problema con Digicert de todas las AC. Creé un archivo digicertca.pem que era solo intermedio y raíz pegado en un solo archivo.
Eorekan tenía la respuesta, pero solo conseguí que yo y otro votara su respuesta.
fuente
Específicamente para
Windows
usuarios, usandocurl-7.57.0-win64-mingw
o una versión similar.Esto es un poco tarde y las respuestas existentes son correctas. Pero aún tuve que esforzarme un poco para que funcionara en mi máquina Windows, aunque el proceso en realidad es bastante sencillo. Entonces, compartiendo el proceso paso a paso.
Básicamente, este error significa que curl no puede verificar el certificado del URI de destino. Si confía en el emisor del certificado (CA), puede agregarlo a la lista de certificados confiables.
Para eso, busque el URI (por ejemplo, en Chrome) y siga los pasos
.cer
archivo y copie el contenido (incluyendo ----- BEGIN CERTIFICATE ----- y ----- END CERTIFICATE -----)curl.exe
está guardado, por ejemploC:\SomeFolder\curl-7.57.0-win64-mingw\bin
curl-ca-bundle.crt
archivo con un editor de texto.Ahora su comando debería ejecutarse bien en curl.
fuente
Esto puede ayudarlo a comer:
probado en guzzle / guzzle 3. *
fuente
Solución simple: IN
~/.sdkman/etc/config
, cambiosdkman_insecure_ssl=true
Pasos:
nano
~/.sdkman/etc/config
cambio
sdkman_insecure_ssl=false
parasdkman_insecure_ssl=true
guardar y salir
fuente