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

13

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 de googlear, la ubicación de CAfile que está buscando no es correcta para Ubuntu (y no existe en mi computadora), /etc/ssl/certs/ca-certificates.crtes la ubicación correcta.

La mayoría de las soluciones implicaron establecer la variable de entorno CURL_CA_BUNDLEen la ubicación adecuada o agregar cacert=/etc/ssl/certs/ca-certificates.crtal .curlrcarchivo (recién creado) en mi directorio de inicio. He intentado ambos, y ninguno resolvió por completo el problema. curl está encontrando esta ubicación, pero aún no funciona, dando 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 los $ sudo update-ca-certificates --fresh que actualicé los certificados, pero aún así no desapareció el error 60.

No conozco tanto los certificados de CA, y dudo que haya agregado a propósito algún certificado autofirmado en el pasado. Quizás por accidente, no lo sé.

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

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

themaninthewoods
fuente

Respuestas:

10

Después de investigar y trabajar en esto durante los últimos dos días, lo puse a trabajar, 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 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, continuó buscando/etc/pki/tls/certs/ca-bundle.crt

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

Basado en algunos otros hallazgos aleatorios, también descargué un certificado del sitio web de Curl con:

sudo wget http://curl.haxx.se/ca/cacert.pem

en el mismo certsdirectorio Habiendo cafileseñalado esto funcionó también. Al final lo puse de nuevo ca-certificates.crty todavía funciona.

No entiendo exactamente por qué esto funcionó o qué está sucediendo, pero está resuelto.

themaninthewoods
fuente
8

La clave cafile no funciona para mí (curl 7.45.0) pero cacert (de la opción --cacert) sí. Mi archivo .curlrc :

capath=/etc/ssl/certs/
cacert=/etc/ssl/certs/ca-certificates.crt
Duque
fuente
1
¡Esto funcionó para mí en Ubuntu 16.04!
Joost Döbken
0

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

Esto se resolvió descargando ca-certificados.crt en /etc/ssl/certs/ca-certificates.crt y creando un enlace simbólico ca-bundle.crt en el directorio / etc / pki / tls / certs / .

¡Espero que esto ayude!

Tamil
fuente
0

Después de investigar un par de veces lo puse a trabajar, y la respuesta terminó siendo bastante simple. Hacer paso a paso

Step:1 Open terminal ctrl+alt+t
Step:2 cd /etc/ssl/certs/
Step:3 sudo wget http://curl.haxx.se/ca/cacert.pem 

El paso 3 descargará el archivo pem en la carpeta certs

  Step 4: Check if .curlrc file is available in your home folder or not. 

.curlrc es un archivo oculto. verifique por ctrl + h en el directorio de inicio. si no existe, entonces en el tipo de terminal

Step 5:  nano ~/.curlrc 
Step 6: Now paste the below lines in the open file
        capath=/etc/ssl/certs/
        cacert=/etc/ssl/certs/ca-certificates.crt
Step 7: Now save the file and do your things using curl command.

Nota: aquí usé nano editor, pero puedes usar cualquier editor.

PyDevSRS
fuente