Ubicación predeterminada del paquete CA Cert

18

Necesito agregar un archivo .pem cert a mi paquete CA Cert predeterminado, pero no sé dónde se guarda el paquete CA Cert predeterminado.

Necesito agregar mi nuevo archivo .pem a este paquete predeterminado. Prefiero hacer eso que especificar mi propia ubicación usando --capath

cURL claramente sabe dónde buscar, pero no veo ningún comando de cURL que revele la ubicación. ¿Hay un comando que revelará esta ubicación? ¿Cómo puedo encontrarlo?

De acuerdo con cURL:
Agregue el certificado de CA para su servidor al paquete de certificados de CA predeterminado existente. La ruta predeterminada del paquete CA usado se puede cambiar ejecutando configure con la opción --with-ca-bundle señalando la ruta de su elección.

Gracias

Seductor
fuente
Qué sistema operativo estás usando?
Cristian Ciupitu

Respuestas:

20

Correr curlcon stracepodría darte una pista.

strace curl https://www.google.com | & grep abierto

Mucha salida, pero justo al final veo:

abierto ("/ etc / ssl / certs / 578d5c04.0", O_RDONLY) = 4

que es donde se almacenan mis certificados.

Flup
fuente
2
1 por mostrarme acerca strace!
Robert Dundon
straceno disponible en macOS, aparentemente. El "equivalente" dtrussme dijo "dtrace: no se pudo inicializar dtrace: DTrace requiere privilegios adicionales". Entonces solía sudohacerlo. A lo que respondió "dtrace: no se pudo ejecutar curl: dtrace no puede controlar ejecutables firmados con derechos restringidos". No muy útil
LS
17

Debería haber un programa 'curl-config' en 'bin /' de curl, es decir, donde reside el binario 'curl'.

./curl-config --ca

da la ruta de instalación del paquete ca.

Acabo de hacer una configuración de whatis curl: "Obtener información sobre una instalación de libcurl", así que supongo que solo estará disponible si se instaló libcurl, aunque supongo que es estándar.

lm713
fuente
1
Tuve que instalar un paquete en Ubuntu para ejecutar esto (se le mostrará una lista de opciones disponibles si no está instalado), ¡pero usar este comando me llevó al lugar correcto!
Robert Dundon
2
El curl-configprograma no está disponible con todas las versiones del programa o las instalaciones. Por ejemplo, algunos administradores pueden no entender el propósito del programa y no instalarlo porque piensan que es solo una herramienta de configuración de compilación. Además, si el usuario que necesita el programa no es el administrador de un sistema, no puede instalarlo. Tengo acceso a dos sistemas, uno no tiene este programa, el otro da ninguna salida para curl-config --ca.
LS
Prefiero esta respuesta a la aceptada: usar stracepara buscar información de configuración no debería ser necesario.
Ken Williams
7

Encontré una manera fácil: use el --cacertcon un nombre de archivo incorrecto , la salida mostrará la ruta.

Ejemplo:

~$ curl --cacert non_existing_file https://www.google.com
curl: (77) error setting certificate verify locations:
  CAfile: non_existing_file
  CApath: /etc/ssl/certs
Chananel P
fuente
Pensé que esto parecía una buena solución. Sin embargo, curl me dio el error "77", pero no la información adicional.
LS
@LS intenta agregar una bandera detallada: -v o --verbose
Chananel P
2

Linux (Ubuntu, Debian)

Copie su CA a dir / usr / local / share / ca-certificados /

sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt

Actualice la tienda de CA

sudo update-ca-certificates

Elimine su CA y actualice la tienda de CA:

sudo update-ca-certificates --fresh

Linux (CentOs 6)

Instale el paquete de certificados ca:

yum install ca-certificates

Habilite la característica de configuración dinámica de CA: update-ca-trust force-enable Añádala como un nuevo archivo para /etc/pki/ca-trust/source/anchors/:

cp foo.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust extract

Linux (CentOs 5)

Agregue su certificado de confianza al archivo /etc/pki/tls/certs/ca-bundle.crt

cat foo.crt >>/etc/pki/tls/certs/ca-bundle.crt

https://manuals.gfi.com/en/kerio/connect/content/server-configuration/ssl-certificates/adding-trusted-root-certificates-to-the-server-1605.html muy buen enlace, que explica, cómo agregarlo a varios sistemas operativos populares.

BiG_NoBoDy
fuente
Si bien esto puede responder teóricamente la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia.
Gerald Schneider
@GeraldSchneider> comentas, lees y actúas;)
BiG_NoBoDy
1

puede descargar el paquete de certificados raíz de CA de haxx.se, que son los creadores de curl. luego solo agregue su certificado en su .pem y consúltelo cuando use curl con la opción --cacert

iammyr
fuente
1

-v con https en la URL.

$ curl -v https://google.com
* Rebuilt URL to: https://google.com/
* timeout on name lookup is not supported
*   Trying 172.217.9.174...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Connected to google.com (172.217.9.174) port 443 (#0)
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   *CAfile: C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt*
Philip Rego
fuente
No No mostró nada de eso para mí. De hecho, comparé el resultado de eso con otra ejecución agregando la -kopción para ver si hay una diferencia. No hubo diferencia.
LS
@LS ¿tienes https en tu URL?
Philip Rego
0

La ubicación predeterminada del paquete CA depende del sistema operativo. En RHEL5, se encuentra en /etc/pki/tls/certs/ca-bundle.pem. En otros tipos de sistemas operativos Linux o no Linux, puede estar en una ubicación diferente.

John
fuente
Así que supongo que solo busco ese archivo y luego ...
Slinky
2
Otra idea: # strings /usr/lib64/libcurl.so.3 | egrep '^ /' /etc/pki/tls/certs/ca-bundle.crt
offby1