Cómo corregir el error de enrutamiento “configuración de error en las ubicaciones de verificación del certificado”

4

Soy un desarrollador web y tengo una MacBook4,1 con OS X 10.5.8. Cosas importantes como GitHub, homebrew, ruby y python no funcionan correctamente, porque el rizo no funciona. Parece que los certificados SSL están desactualizados.

Recibo este error cada vez:

curl: (77) error setting certificate verify locations:
  CAfile: /usr/share/curl/curl-ca-bundle.crt
  CApath: none

¿Qué puedo hacer para solucionar esto?

    
pregunta sinaneker 03.07.2013 - 21:50

2 respuestas

1

Ese error no dice explícitamente que los certificados están desactualizados, ¿verdad? Me parece que se queja de que los certificados no están donde se supone que están (o posiblemente no se pueden leer).

Encontré esto en google:

enlace

Para resumir, el cartel sugiere usar el indicador -k con curl para suprimir este error (esto es obviamente menos seguro) o asegurarse de que cualquier proceso que esté llamando curl tenga acceso de ejecución a todos los directorios en la ruta a los certificados.

    
respondido por el AllInOne 03.07.2013 - 22:47
6

El problema surge porque OS X no mantiene sus certificados de CA en el sistema de archivos; Viven en el llavero "Raíces del sistema". Puede verlos con la aplicación Keychain Access (que se encuentra en la carpeta Aplicaciones / Utilidades).

Para aquellas herramientas que no saben cómo hablar con el llavero (como curl), puede exportar estos certificados a una carpeta de su elección, por ejemplo, /etc/ssl/certs para ser consistente con la mayoría de las distribuciones de Linux. Puede arrastrarlos y soltarlos fuera de Keychain Access en una ventana del buscador, o seleccionarlos y elegir "Exportar elementos ..." en el menú de archivos. Con la función de arrastrar y soltar, parece que siempre se usa el formato binario .cer , mientras que la mayoría de las herramientas de CLI quieren PEM codificado en base64 (comúnmente utilizando la extensión de archivo .crt ). Puede exportar en formato pem desde el acceso al llavero, pero solo parece exportar un certificado a la vez, incluso si tiene varios certificados seleccionados. Para solucionar esto, escribí un script bash para convertir por lotes .cer a archivos .crt en formato PEM:

#!/bin/bash
#Convert all .cer files in this folder into PEM format .crt files
shopt -s nullglob
for f in *.cer
do
        openssl x509 -inform der -in "${f}" -outform pem -out "${f%.*}.crt"
        rm "$f"
done
chmod 444 *crt

Para usarlo, cree una carpeta, coloque este script (lo llamé cerconv.sh ), arrastre y suelte todos sus certificados de CA raíz, abra un terminal en esa carpeta y simplemente ejecute bash cerconv.sh .

Para evitar que las cosas malvadas cambien tus certificados de CA, agregué una línea a chmod ellos todos como solo lectura.

Todo esto puede ser innecesario, ciertamente no tengo problemas con git (hub), homebrew, curl, etc. sin tener que hacer esto, y lo he hecho durante años, pero al menos ahora sabe cómo obtener los certificados.

Este enfoque es mejor que usar -k en curl porque no estás comprometiendo tu seguridad.

Actualización : acabo de descubrir la utilidad security en OS X. Aquí hay un comando que lo utiliza para exportar todos los certificados de su llavero del sistema a un único archivo .pem que debería poder usarse con rizo:

security export -p -t certs -k 'security list-keychains -d system|cut -d '"' -f 2' -o certs/certs.pem
    
respondido por el Synchro 20.03.2014 - 00:24

Lea otras preguntas en las etiquetas