Ubuntu 10.04 / CURL: ¿Cómo soluciono / actualizo el CA Bundle?

17

Recientemente actualicé nuestro servidor de 8.04 a 10.04, y todo el software junto con él.

Por lo que he encontrado en línea, parece que la nueva versión de CURL no incluye un paquete de CA y, como resultado, no puede verificar que el certificado del servidor al que se está conectando esté firmado por una autoridad válida .

El error real es:

Error CURL: problema con el certificado SSL, verifique que el certificado CA esté bien.
Detalles: error: 14090086: rutinas SSL: SSL3_GET_SERVER_CERTIFICATE:
verificación de certificado fallida 

Algunos lugares que he encontrado sugieren especificar manualmente un archivo CA o deshabilitar la comprobación por completo configurando una opción cuando llama a CURL, pero prefiero solucionar el problema globalmente, en lugar de tener que modificar las llamadas CURL de cada aplicación.

¿Hay alguna forma de solucionar el problema de CA de CURL en todo el servidor para que todo el código de aplicación existente funcione como es sin necesidad de ser modificado?

Mella
fuente

Respuestas:

17

He tenido el mismo problema y después de hurgar un poco descubrí que puedes descargar un paquete de certificados de CA listos para curl en ubuntu directamente desde el sitio curl dev.

cd /etc/ssl/certs
sudo wget http://curl.haxx.se/ca/cacert.pem

Ahora curl usa el paquete más actualizado y listo.

Paul Alexander
fuente
1
después de eso tuve que actualizar con: update-ca -ificates -f
Grain
9

Tuve un problema similar con Ubuntu 12.04 ejecutando curl desde la línea de comandos para obtener herramientas de línea de comandos aws que estaban en github. Encontré si ejecuté la línea de comando como tal:

curl https://raw.github.com/timkay/aws/master/aws -o aws --cacert /etc/ssl/certs/ca-certificates.crt

Funcionaría. Pero tratar de establecer la variable de entorno CURL_CA_BUNDLE para poder evitar el argumento "cacert" no funcionaría. Finalmente, la actualización de los certificados ca parecía resolver el problema:

sudo update-ca-certificates

Como nota al margen, en un momento actualicé los ca-certs de curl.haxx.se que no resolvieron el problema pero pueden haber estado relacionados. ( sudo wget http://curl.haxx.se/ca/cacert.pemhuir de /etc/ssl/certs).

Bob Morley
fuente
Enlace 404'd para mí. Esto funciona: curl.haxx.se/ca/cacert.pem
dave1010
2
Hmm Parece dudoso buscar un archivo que contenga certs como ese que no sea HTTPS.
Matthew Schinckel
5

Típicamente, el software que no tiene una implementación única y está compilado contra OpenSSL hará referencia al sistema ca-bundle.crt que se encuentra a menudo en todo el sistema /usr/share/ssl/certs.

La ubicación puede ser diferente en Ubuntu, pero el paquete OpenSSL debe incluir el archivo ca-bundle.

CURL tiene una variedad de opciones para especificar cómo verifica los certificados.

  • La CURL_CA_BUNDLEvariable de entorno para la ubicación del archivo ca-bundle.
  • --capathle permite especificar el directorio donde se encuentran los certificados de CA. (Anulaciones CURL_CA_BUNDLE)
  • --cacert le permite especificar el archivo de certificado de CA.

En mi servidor CentOS, puedo ejecutar lo siguiente para identificar la ruta del paquete ca que utiliza CURL:

$ curl-config --ca
/usr/share/ssl/certs/ca-bundle.crt
Warner
fuente
1
Open SSL está instalado. Tengo un archivo "ca -ificates.crt" en / etc / ssl / certs / que parece un montón de certificados concatenados, pero supongo que CURL no lo está viendo. ¿CURL tiene una configuración para el paquete CA?
Nick
¿Está seguro de que no es el tipo de certificado que intenta verificar? Las tecnologías de certificados más recientes, como los certificados de Verificación Extendida, a menudo requieren actualizaciones de paquetes ca, ya que los certificados raíz son relativamente nuevos. Mira mi próxima edición también.
Warner
curl-config no parece ser un comando válido en Ubuntu. ¿Cómo configuro CURL_CA_BUNDLE?
Nick
Parece que es parte del libcurl3-openssl-devpaquete basado en una búsqueda rápida en Internet. CURL_CA_BUNDLEes solo una variable de entorno. En bash, CURL_CA_BUNDLE=/path/to/file.
Warner
Muy bien, el paquete está instalado, pero "curl-config --ca" produce una línea vacía. Intenté configurar la variable usando 'CURL_CA_BUNDLE = "/ etc / ssl / certs / ca-certificate.crt"'. Pero "curl-config --ca" todavía produce una línea en blanco después.
Nick