6 votos

Cómo arreglar el lanzamiento de rizos "certificado de ajuste de error verificar ubicaciones"

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

Siempre me sale este error:

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

¿Qué puedo hacer para arreglar esto?

9voto

Dracs Puntos 203

El problema surge porque OS X no mantiene sus certificaciones de CA en el sistema de archivos; viven en el llavero "Raíces del Sistema". Puedes verlas con la aplicación Keychain Access (que se encuentra en tu carpeta Aplicaciones/Utilidades).

Para aquellas herramientas que no saben cómo hablar con el llavero (como el rizo), puedes exportar estos certificados a una carpeta de tu elección, digamos /etc/ssl/certs para ser consistente con la mayoría de las distribuciones de linux. Puedes arrastrarlos y soltarlos desde Keychain Access a una ventana del buscador, o seleccionarlos y elegir "Exportar elementos..." del menú de archivos. Con arrastrar y soltar siempre parece que se usa el binario .cer mientras que la mayoría de las herramientas CLI quieren PEM codificado en base64 (comúnmente usando el .crt extensión de archivo). Se puede exportar en formato pem desde el acceso de llavero, pero parece que sólo se exporta un cert a la vez, incluso si se han seleccionado varios certs. Para solucionar esto, escribí un bash script para convertir por lotes los archivos .cer a formato PEM .crt:

#!/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, haz una carpeta, pon esto script en ella (lo llamé cerconv.sh ), arrastra y suelta todos tus certificados de CA root en él, abre una terminal en esa carpeta y simplemente ejecuta bash cerconv.sh .

Para evitar que las cosas nefastas cambien tus certificaciones de CA, añadí una línea a chmod todos ellos como sólo de 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 sabes cómo obtener las certificaciones.

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

Actualización : Acabo de descubrir el security en OS X. Aquí hay un comando que lo usa para exportar todos los certificados de su llavero del sistema en un solo archivo .pem que debería ser utilizable con curl:

security export -p -t certs -k `security list-keychains -d system|cut -d '"' -f 2` -o certs/certs.pem

3voto

dvmlls Puntos 171

Ese error no dice explícitamente que los certificados están desactualizados, ¿verdad? Me parece que se está quejando de que los certificados no están donde se supone que deben estar (o potencialmente no pueden ser leídos).

Encontré esto en Google:

http://curl.haxx.se/mail/curlphp-2005-11/0038.html

Para resumir, el cartel sugiere utilizar la bandera -k con curl para suprimir este error (esto es obviamente menos seguro) o asegurarse de que cualquier proceso que llame a curl tenga acceso a todos los directorios en la ruta de los certificados.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X