¿Cómo solucionar problemas de certificados de CA con Curl en Ubuntu 14.04?

¿Cómo solucionar problemas de certificados de CA con Curl en Ubuntu 14.04?

Estoy usando Ubuntu 14.04. Cuando uso curl, aparece el siguiente error:

curl: (77) error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath:

Por lo que deduzco al buscar en Google, la ubicación del archivo CA que está buscando no es correcta para Ubuntu (y no existe en mi computadora), /etc/ssl/certs/ca-certificates.crtes la ubicación adecuada.

La mayoría de las soluciones implicaron configurar la variable de entorno CURL_CA_BUNDLEen la ubicación adecuada o agregarla cacert=/etc/ssl/certs/ca-certificates.crtal .curlrcarchivo (recién creado) en mi directorio de inicio. Probé ambos y ninguno solucionó completamente el problema. curl está encontrando esta ubicación, pero todavía no funciona y aparece el error:

curl: (60) SSL certificate problem: self signed certificate in certificate chain

También intenté desinstalar y reinstalar curl en Ubuntu y actualizar mis certificados de CA con $ sudo update-ca-certificates --freshlos que actualicé los certificados, pero aún así no desaparecí el error 60.

No tengo mucho conocimiento sobre los certificados de CA y dudo que haya agregado deliberadamente algún certificado autofirmado en el pasado. Quizás por accidente, no lo sé.

¿Alguien sabe cómo arreglar esto? ¿Hay alguna manera de empezar de nuevo con todos mis certificados? ¿O alguien sabe siquiera cómo puedo averiguar dónde está este certificado autofirmado y luego cómo eliminarlo?

PD: No quiero usar el indicador -k (también conocido como --insecure). Quiero que esto funcione de forma segura.

Respuesta1

Después de investigar y trabajar en esto durante los últimos días, logré que funcionara y la respuesta terminó siendo bastante simple.

Necesitaba configurar capath=/etc/ssl/certs/mi .curlrcarchivo.

Esto hizo que curl funcionara en la línea de comando. Para que curl funcione aún más en R (donde encontré el problema por primera vez), también necesitaba tenerlo cacert=/etc/ssl/certs/ca-certificates.crten mi .curlrcarchivo como lo intenté antes; de lo contrario, seguía buscando/etc/pki/tls/certs/ca-bundle.crt

Todavía no tengo idea de por qué aparecía el error sobre los certificados autofirmados.

Según otros hallazgos aleatorios, también descargué un certificado del sitio web de Curl con:

sudo wget https://curl.se/ca/cacert.pem

en el mismo certsdirectorio. Haber cafileseñalado esto también funcionó. Al final lo volví a poner ca-certificates.crty sigue funcionando.

No entiendo exactamente por qué funcionó esto o qué está pasando, pero se resolvió.

Respuesta2

cafileLa clave no funciona para mí (curl 7.45.0), pero cacert (de la opción --cacert) sí. Mi.curlrcarchivo:

capath=/etc/ssl/certs/
cacert=/etc/ssl/certs/ca-certificates.crt

Respuesta3

Después de investigar varias veces, logré que funcionara y la respuesta terminó siendo bastante simple.

Abra terminal ctrl++ y cambie el directorio de trabajo alt:t

 cd /etc/ssl/certs/

Descargue el archivo pem en elcertificadoscarpeta

 sudo wget https://curl.se/ca/cacert.pem 

Ahora abre el archivo.curlrc

nano ~/.curlrc 

Agregue las siguientes líneas en el archivo abierto.

capath=/etc/ssl/certs/
cacert=/etc/ssl/certs/ca-certificates.crt

Ahora guarde el archivo y haga sus cosas usando el comando curl.

NÓTESE BIENAquí usé nano editor, pero puedes usar cualquier editor.

Respuesta4

Nos enfrentamos al mismo problema con uno de nuestros programas C++ en Ubuntu 14.04.5. El .curlrcmétodo no estaba surtiendo efecto.

Esto se resolvió descargando el ca-certificates.crtdirectorio /etc/ssl/certs/ca-certificates.crty creando un enlace simbólico ca-bundle.crten /etc/pki/tls/certs/él.

¡Espero que esto ayude!

información relacionada