Entonces, dado que el curl de actualización de Mavericks tiene más problemas con los certificados.
Al intentar curvar un archivo de mi servidor web con su certificado autofirmado, recibía el error "Certificado SSL: cadena de certificados no válida".
Esto se corrigió agregando el certificado al llavero de mi sistema y configurándolo para permitir siempre SSL, información que encontré aquí y aquí .
Esto funciona bien y cuando doblo un archivo, se descarga correctamente.
Sin embargo, si ejecuto curl con sudo antes (por ejemplo, tengo un script que necesita ejecutarse con sudo y hace un curl en él), entonces vuelvo al mismo mensaje de error.
Supongo que quizás la raíz no lea del llavero del sistema.
¿Alguien sabe una manera de arreglar esto?
root
-disponible en.curlrc
lugar de--insecure
. Lo cual es exactamente como dice: para que un atacante en la posición de red lo haga, sería trivial para MITM e inyectar código.La raíz no lee desde la configuración de confianza del usuario actual, pero hay una configuración de confianza de administrador y una configuración de confianza específica del usuario raíz. (Estos también son distintos de la configuración de confianza del sistema ). Tenga en cuenta, también, que la configuración de confianza del certificado es algo distinta de simplemente agregar un certificado a un llavero; puede marcar un certificado como confiable sin agregarlo por completo. (La situación exacta aquí no está clara para mí, y los documentos que he visto son vagos).
Puede marcar un certificado como confiable para su usuario actual como
Pero eso no ayuda con la raíz. La solución, como puede suponer ahora, es
sudo
la anterior, que la marca específicamente como confiable para el usuario root:o para usar el
-d
indicador para agregarlo a la configuración de confianza del administrador:(OS X abrirá un cuadro de diálogo 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
fuente
Esto es realmente en la pista de salida:
La ventaja de usar la solución anterior es que funciona para todos los
curl
comandos, pero no se recomienda ya que puede introducir ataques MITM al conectarse a hosts inseguros y no confiables.fuente
Si usa MacPorts (y el script de terceros que mencionó no lo elimina
$PATH
ni llama/usr/bin/curl
), puede instalar los puertoscertsync
ycurl
en este orden.certsync
es una herramienta y una lista de lanzamiento correspondiente que exportará el llavero de su sistema$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 certificados.certsync
también actualizará automáticamente los archivos generados cuando cambie el llavero de su sistema.fuente
La documentación que busca está aquí. Explica cómo usar cURL en Mavericks y cómo suministrar sus certificados: http://curl.haxx.se/mail/archive-2013-10/0036.html
fuente
Para hacer el
sudo curl
trabajo (en OSX Sierra), tuvimos que importar el certificadoSystem.keychain
y confiar allí. Esto se puede hacer manualmente en la aplicación Keychain o usando este comando:Era importante especificar
-d
y establecer manualmente la ruta al llavero del sistema-k
para asegurarse de que el certificado realmente se importe allí si aún no lo está.El comando funciona sin él
sudo
, pero luego solicitaría la contraseña a través de un cuadro de diálogo de la interfaz de usuario, que podría ser un obstáculo para los scripts.fuente
SecCertificateCreateFromData: Unknown format in import.