Cómo corregir curl: (60) Certificado SSL: Cadena de certificates no válida cuando se utiliza sudo

Así que desde el curvado de actualización Mavericks tiene más problemas con los certificates.

Al tratar de encrespar un file de mi server web con su certificate autofirmado, estaba recibiendo el error "SSL Certificate: Invalid certificate chain".

  • ¿Cómo instalar OS X Mavericks en VirtualBox?
  • ¿Por qué veo peticiones de portal en cautiverio en mi networking doméstica?
  • ¿Cuáles son los requisitos del sistema de hardware de OS X Mavericks?
  • Safari no puede conectarse a https
  • Protector de pantalla después de despertar por la mañana
  • La GUI de OS X no aceptará passwords (pero la command-line lo hará)
  • Esto se corrigió agregando el certificate a mi llavero del sistema y configurándolo para permitir siempre SSL, la información que encontré aquí y aquí .

    Esto funciona bien y cuando enrollar un file se descarga correctamente.

    Sin embargo, si ejecuto curl con sudo antes (por ejemplo, tengo un script que debe ejecutarse con sudo y hace un rizo en ella), entonces estoy de vuelta al mismo post de error.

    Supongo que la raíz no lee del llavero del sistema quizás?

    ¿Alguien sabe una manera de arreglar esto?

  • ¿Cómo puedo aplicar tags en Mavericks recursivamente?
  • ¿Por qué no puedo ejecutar `su`? (y cómo debo hacer?)
  • ¿Cuál es la relación entre `launchctl limit` y` ulimit`?
  • ¿Cómo puedo deshabilitar el aviso de notifications en Safari?
  • Cómo reparar el disco duro GUID dañado a MBR
  • cómo habilitar el desplazamiento continuo en iBooks 1.0 para Mavericks OSX?
  • 7 Solutions collect form web for “Cómo corregir curl: (60) Certificado SSL: Cadena de certificates no válida cuando se utiliza sudo”

    Si almacena los certificates de CA en el sistema de files (en formatting PEM), puede indicar a curl que los utilice con

    sudo curl --cacert /path/to/cacert.pem ... 

    También puede desactivar la verificación del certificate con

     sudo curl --insecure ... 

    Editar: actualizado con respecto a la retroalimentación

    Si desea establecer esto de forma permanente, debe crear un file .curlrc y colocarlo en su directory personal. sudo commands sudo pueden necesitar este file en /var/root El file toma las mismas opciones que la command-line pero sin los guiones. Una opción por línea:

     cacert=/path/to/my/certs.pem 

    La raíz no lee de la configuration de confianza del usuario actual, pero hay una configuration de confianza de administrador y una configuration de confianza específica del usuario raíz. (Estos también son distintos de la configuration de confianza del sistema .) Tenga en count, también, que la configuration de confianza de certificate es algo distinto de sólo agregar un certificate a un llavero; puede marcar un certificate como de confianza sin agregarlo totalmente. (La situación exacta aquí no está clara para mí, y los documentos que he visto son vagos.)

    Puede marcar un certificate como de confianza para su usuario actual como

     $ security add-trusted-cert /path/to/cert.pem 

    pero eso no ayuda con la raíz. La solución, como puede suponerse ahora, es sudo lo anterior, que luego lo marca como de confianza para el usuario root específicamente:

     $ sudo security add-trusted-cert /path/to/cert.pem 

    o utilizar el indicador -d para agregarlo a la configuration de confianza de administrador:

     $ security add-trusted-cert -d /path/to/cert.pem 

    (OS X aparecerá un cuadro de dialog de contraseña para confirmar este).

    Cualquiera de los dos últimos parece ser suficiente para sudo curl .

    Referencia: https://developer.apple.com/library/mac/Documentation/Darwin/Reference/ManPages/man1/security.1.html

    Esto es realmente en la pista de salida:

     echo insecure >> ~/.curlrc 

    La ventaja de usar la solución anterior es que funciona para todos los commands curl , pero no se recomienda, ya que puede introducir ataques MITM al conectarse a hosts inseguros y no confiables.

    Si utiliza MacPorts (y el script de terceros que mencionó no lo elimina de $PATH o llama a /usr/bin/curl ) puede instalar los puertos certsync y curl en este order.

    certsync es una herramienta y un plist de lanzamiento correspondiente que exportará su llavero del sistema a $prefix/etc/openssl/cert.pem e instalará un enlace simbólico $prefix/share/curl/curl-ca-bundle.crt -> $prefix/etc/openssl/cert.pem para que MacPorts curl recoja automáticamente los certificates. certsync también actualizará automáticamente los files generados cuando cambie el llavero del sistema.

    Una manera de arreglar esto es dejar que el curl haga caso omiso de la cadena de certificates comprobando por completo:

     $ sudo curl -k https://example.com 

    La documentation que está buscando está aquí. Explica cómo utilizar cURL en Mavericks y cómo proporcionar sus certificates: http://curl.haxx.se/mail/archive-2013-10/0036.html

    Para hacer sudo curl trabajar (en OSX Sierra), tuvimos que importar el certificate en el System.keychain y confiar en él. Esto puede hacerse manualmente en la aplicación Llaveros o mediante este command:

     sudo security add-trusted-cert -d -k /Library/Keychains/System.keychain /path/to/cert.pem 

    Era importante especificar -d y establecer manualmente la ruta al llavero del sistema a través de -k para asegurarse de que el certificate realmente se importa allí si aún no lo está.

    El command funciona sin sudo , pero luego pediría la contraseña a través de un dialog de interfaz de usuario, lo que podría ser un obstáculo para los scripts.

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).