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?
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:
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:
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.pem
huir de/etc/ssl/certs
).fuente
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.
CURL_CA_BUNDLE
variable de entorno para la ubicación del archivo ca-bundle.--capath
le permite especificar el directorio donde se encuentran los certificados de CA. (AnulacionesCURL_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:
fuente
libcurl3-openssl-dev
paquete basado en una búsqueda rápida en Internet.CURL_CA_BUNDLE
es solo una variable de entorno. En bash,CURL_CA_BUNDLE=/path/to/file
.