1 votos

openssl afirma usar /private/etc/ssl, pero parece que no, ¿Qué diablos?

En el curso de tratar de ayudar a un amigo con un problema con pip y sitios ssl ( Tema de GitHub aquí ), me he confundido sobre cómo el /usr/bin/openssl de High Sierra encuentra sus certificados. Mi openssl "sólo para el keg" no tiene ningún problema con el sitio.

Este es el caso de prueba con el que he estado jugando:

(alice)[14:22:06]~>>/usr/bin/openssl s_client -connect files.pythonhosted.org:443 | head 2>&1
depth=1 C = BE, O = GlobalSign nv-sa, CN = GlobalSign CloudSSL CA - SHA256 - G3
verify error:num=20:unable to get local issuer certificate
verify return:0
CONNECTED(00000005)
---
Certificate chain
 0 s:/C=US/ST=California/L=San Francisco/O=Fastly, Inc/CN=r.ssl.fastly.net
   i:/C=BE/O=GlobalSign nv-sa/CN=GlobalSign CloudSSL CA - SHA256 - G3
 1 s:/C=BE/O=GlobalSign nv-sa/CN=GlobalSign CloudSSL CA - SHA256 - G3
   i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
---
Server certificate
-----BEGIN CERTIFICATE-----
^C

Me he estado rascando la cabeza porque una clave apropiada reside en la utilidad Keychain (Determinada por la descarga del paquete de certificados de Mozilla desde el sitio de Curl, encontrando el único certificado que rescata el caso de prueba cuando se proporciona a través de -CAfile y comparando su huella digital con los certificados de la aplicación Llavero. Ver la cuestión de los pip para los detalles sangrientos).

El valor de OPENSSLDIR en el openssl version -a sugiere que /usr/bin/openssl debe utilizar /private/etc/ssl :

(alice)[14:05:27]~>>/usr/bin/openssl version -a
LibreSSL 2.2.7
built on: date not available
platform: information not available
options:  bn(64,64) rc4(ptr,int) des(idx,cisc,16,int) blowfish(idx)
compiler: information not available
OPENSSLDIR: "/private/etc/ssl"

Y, de hecho, apuntando a ese directorio con el -CApath rescata el caso de prueba:

(alice)[14:26:32]~>>/usr/bin/openssl s_client -connect files.pythonhosted.org:443 -CApath /private/etc/ssl | head 2>&1 < /dev/null
depth=2 C = BE, O = GlobalSign nv-sa, OU = Root CA, CN = GlobalSign Root CA
verify return:1
depth=1 C = BE, O = GlobalSign nv-sa, CN = GlobalSign CloudSSL CA - SHA256 - G3
verify return:1
depth=0 C = US, ST = California, L = San Francisco, O = "Fastly, Inc", CN = r.ssl.fastly.net
verify return:1
^C
(alice)[15:21:22]~>>

¿Qué ocurre? ¿Los CApath/CAfile ¿los comandos permiten un comportamiento que de otro modo no se produciría?

Me gustaría entender lo que está pasando.

1voto

SuperDuck Puntos 1026

Este número es el resultado de una error conocido en OpenSSL que se informó en febrero de 2013 y rastreado aquí (inicie sesión con el nombre de usuario guest y contraseña guest ). En ese momento, la última versión pública de OpenSSL era OpenSSL 1.0.2. El problema se marcó como resuelto en octubre de 2016, y el fallo ya no existe en las versiones posteriores a esta fecha, la más antigua de las cuales es OpenSSL 1.1.1. Algunos usuarios han informado de que el fallo tampoco estaba presente en la "versión 1.1", con lo que pueden estar refiriéndose a OpenSSL 1.1.0 o a bifurcaciones de la misma; no he confirmado si el fallo existe en OpenSSL 1.1.0.

El openssl El binario incluido con MacOS es LibreSSL, que es una bifurcación de OpenSSL que se originó a partir de OpenSSL 1.0.1g. Dado que el error existía en esa versión de OpenSSL, persistió en LibreSSL hasta que sus desarrolladores se dieron cuenta y lo arreglaron, lo que ocurrió en algún momento entre la versión que estás usando (LibreSSL 2.2.7) y la que yo estoy usando (LibreSSL 2.8.3, que se incluye en MacOS Catalina).

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