¿Cómo actualizar el paquete cURL CA en RedHat?

38

Me encuentro con problemas en los que el paquete de CA que se ha incluido con mi versión de cURL no está actualizado.

curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html

Leer la documentación no me ayudó porque no entendía lo que tenía que hacer o cómo hacerlo. Estoy ejecutando RedHat y necesito actualizar el paquete de CA. ¿Qué debo hacer para actualizar mi paquete de CA en RedHat?

Andrés
fuente

Respuestas:

50

Para RHEL 6 o posterior , debe usar update-ca-trust , como lo describe lzap en su respuesta a continuación.

--- Para versiones anteriores de Fedora, CentOS, Redhat:

Curl está utilizando el paquete CA predeterminado del sistema que se almacena en /etc/pki/tls/certs/ca-bundle.crt. Antes de cambiarlo, haga una copia de ese archivo para poder restaurar la configuración predeterminada del sistema si es necesario. Simplemente puede agregar nuevos certificados de CA a ese archivo, o puede reemplazar el paquete completo.

¿También se pregunta dónde obtener los certificados? Yo (y otros) recomiendo curl.haxx.se/ca. En una linea:

curl https://curl.haxx.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt

La ubicación de Fedora Core 2 es /usr/share/ssl/certs/ca-bundle.crt.

Nada
fuente
Eso es bueno, pero ¿cómo puedo estar seguro de que el certificado que agregue no se perderá en la próxima actualización de ca-bundle.crt? ¿Hay algún lugar donde pueda colocar el nuevo donde se incluirá automáticamente?
Andrew Schulman
A partir de 2006, las actualizaciones de openssl no deberían reemplazar el archivo ca-bundle.crt (consulte rhn.redhat.com/errata/RHSA-2006-0661.html ). Sin embargo, si tiene otro paquete instalado, como el paquete de certificados de ca recomendado por @mgorven, entonces espero que se sobrescriba manualmente.
Nada
36

La forma recomendada de hacerlo en los sistemas RHEL 6+ es usar la herramienta update-ca-trust , que ahora está instalada de manera predeterminada.

# cat /etc/pki/ca-trust/source/README 
This directory /etc/pki/ca-trust/source/ contains CA certificates and 
trust settings in the PEM file format. The trust settings found here will be
interpreted with a high priority - higher than the ones found in 
/usr/share/pki/ca-trust-source/.

=============================================================================
QUICK HELP: To add a certificate in the simple PEM or DER file formats to the
            list of CAs trusted on the system:

            Copy it to the
                    /etc/pki/ca-trust/source/anchors/
            subdirectory, and run the
                    update-ca-trust
            command.

            If your certificate is in the extended BEGIN TRUSTED file format,
            then place it into the main source/ directory instead.
=============================================================================

Please refer to the update-ca-trust(8) manual page for additional information

Por lo tanto, solo necesita soltar su archivo crt en /etc/pki/ca-trust/source/anchors/y ejecutar la herramienta. Trabajo hecho. Es seguro hacerlo, no necesita hacer ninguna copia de seguridad. La página completa del manual se puede encontrar aquí: https://www.mankier.com/8/update-ca-trust

lzap
fuente
Hola, ¿te funciona? Intenté seguir el escenario desde access.redhat.com/solutions/1549003 y no me funciona.
Kirby
6

RHEL proporciona los certificados de CA de Mozilla como parte del ca-certificatespaquete (instale esto yumsi aún no está instalado). Para decirle a cURL que use estos, use el --cacertparámetro de esta manera.

curl --cacert /etc/ssl/certs/ca-bundle.crt https://google.com/
mgorven
fuente
Lo intenté yum install ca-certificatesy conseguíNo package ca-certificates available
Andrew
1
RHEL6 tiene este paquete; Supongo que estás usando una versión anterior. Lamentablemente, la lista no ha cambiado desde 2010, gracias por mantenernos actualizados.
Dan Pritts el
Estoy usando RHEL7 en AWS EC2, acabo de actualizar mi paquete ca-certificates.noarch 0:2014.1.98-70.0.el7_0, desafortunadamente no resolvió mi problema, pero pensé que agregaría esta información.
DuffJ
6

Probablemente depende de qué versión de Redhat. Puede encontrar qué paquete realmente actualiza el archivo haciendo:

rpm -qf /etc/pki/tls/certs/ca-bundle.crt

Mi resultado mostró que openssl-0.9.8e-12.el5 necesita ser actualizado.

Si no hay certificados actualizados en su distribución, debe actualizarlos manualmente, según la respuesta de Nada.

Pik Master
fuente
6

Desde el comentario de Dan Pritts, Red Hat ha estado actualizando los paquetes de certificados para las versiones compatibles de RHEL con más frecuencia; Puede ver esto con bastante facilidad en el registro de cambios del paquete. Los certificados de RHEL 6 se actualizaron dos veces en 2013 y dos veces en 2014.

Todas las distribuciones RHEL y relacionadas / clonadas / derivadas proporcionan un archivo de paquete en /etc/pki/tls/certs/ca-bundle.crt, y el mismo archivo en /etc/pki/tls/cert.pem(en las distribuciones más antiguas cert.pemes un enlace simbólico a ca-bundle.crt; en las distribuciones más nuevas ambos son enlaces simbólicos a un archivo de salida por update-ca-trust).

En RHEL 6 y versiones posteriores, el paquete forma parte del paquete 'ca-certificados'. En RHEL 5 y versiones anteriores, forma parte del paquete 'openssl'.

En RHEL 6 con la actualización https://rhn.redhat.com/errata/RHEA-2013-1596.html y cualquier RHEL más reciente, el sistema de 'certificados de sistema compartido' está disponible (debe ejecutarlo update-ca-trust enablepara habilitarlo) y el mejor El método es el dado por lzap. Una ventaja de este sistema es que funciona para aplicaciones basadas en NSS y GnuTLS, así como para aplicaciones basadas en OpenSSL. Tenga en cuenta que también puede desconfiar de un certificado colocándolo en el directorio /etc/pki/ca-trust/source/blacklist/.

En RHEL 5 y versiones anteriores (y RHEL 6 si no desea utilizar el nuevo sistema) puede confiar en CA adicionales colocando sus archivos de certificado formateados PEM con la extensión.pem en / etc / pki / tls / certs y ejecutándose c_rehash(también puede necesitar yum install /usr/bin/c_rehash) Esto solo funcionará para el software que utiliza los almacenes de confianza predeterminados de OpenSSL. Esto es mejor que editar o reemplazar el archivo de paquete porque le permite continuar recibiendo actualizaciones oficiales del archivo de paquete.

El software que usa una de las ubicaciones de los archivos de paquete directamente (en lugar de pedirle a OpenSSL que use los almacenes de confianza predeterminados del sistema) no respetará el cambio; Si tiene dicho software, está atascado editando el archivo del paquete (o mejorando el software). El software que no utiliza OpenSSL en absoluto no respetará el certificado agregado.

Adam Williamson
fuente
3

Solo tenía que hacer esto en una vieja caja RHEL5. Llegué al catch 22 ... curl rechazaría la descarga de https porque los certificados en la máquina eran demasiado viejos para validar los certificados curl.haxx.se.

Usé la opción --seguro de curl para forzar la descarga de https. (Sí, lo sé ... es "inseguro").

curl https://curl.haxx.se/ca/cacert.pem --insecure -o /etc/pki/tls/certs/ca-bundle.crt

Leonard
fuente
1

Para RHEL 6 , pude solucionar esto actualizando y reinstalando el último paquete de certificados de CA de Red Hat:

sudo yum update ca-certificates
sudo yum reinstall ca-certificates

(En mi caso, esto fue suficiente para permitir que se confiara en el nuevo certificado de firma "Let's Encrypt Authority X3").

Jeremy
fuente
El comando funcionó para mí (CentOS 6) pero no resolvió mi problema (con un certificado emitido por "DigiCert SHA2 Secure Server CA")
rinogo