3 votos

OpenSSL no se enlaza con homebrew en El Capitan 10.11.6

Estoy tratando de codificar en C en OS X (El Capitan) y necesito usar OpenSSL. El sistema operativo viene con la versión 0.9.8zh 14 Jan 2016 .

Utilicé homebrew para actualizar e instalar openssl (obtuve la versión 1.0.2h) pero soy incapaz de enlazarlo correctamente para utilizarlo. Esto es lo que se hizo:

brew update

brew install openssl

brew link --force openssl

que me dio error diciendo

Warning: Refusing to link: openssl .

Las referencias de mi camino /usr/local/bin como el primero.

Ejecuta este comando: ln -s /usr/local/Cellar/openssl/1.0.2j/include/openssl /usr/local/include/openssl

(encontré esta solución aquí: Openssl con El Capitán entre otros lugares)

No obtuve ninguna salida de error, así que asumí que esto funcionaba. Pero

which openssl me da esta salida: /usr/local/bin/openssl

openssl version me da esta salida: OpenSSL 0.9.8zh 14 Jan 2016

Todo lo que estoy tratando de hacer es ejecutar algunos comandos de la CLI / escribir algo de código C editado en plano vi compilado con gcc . Estoy incluyendo openssl en los archivos de cabecera utilizando

 #include <openssl/sha.h>
#include <openssl/ripemd.h>

Además, el comando que estoy ejecutando en el CLI que me llevó a este camino fue este (si eso ayuda):

openssl dgst -sha256 -sign ec-priv.pem ex-message.txt >ex-signature.der.

Me da un error:

EVP_SignFinal:wrong public key type.

Buscando en Google entendí que es por culpa de una versión antigua de OpenSSL que tengo que actualizar.

¿Alguna idea sobre cómo proceder en este caso?

1voto

emmanuel Puntos 166

Tendrás que asegurarte de abrir un nuevo shell después de realizar el enlace. (He actualizado mi artículo medio que enlazó para futuras referencias: Openssl con El Capitán ).

1voto

Desde Brew se niega a enlazar openssl en Stack Overflow y Edición 3964, .Net GitHub (Creo que se informó por primera vez con .Net):

He mirado la otra opción que se ha sugerido para poner la rpath en la biblioteca. Creo que la siguiente es una mejor solución que sólo afectará a esta biblioteca específica.

sudo install_name_tool -add_rpath /usr/local/opt/openssl/lib /usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.Security.Cryptography.Native.dylib

y/o si tiene instalado NETCore 1.0.1 realice el mismo comando para 1.0.1 también:

sudo install_name_tool -add_rpath /usr/local/opt/openssl/lib /usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.1 /System.Security.Cryptography.Native.dylib

En efecto, en lugar de decirle al sistema operativo que use siempre la versión casera de SSL y potencialmente causar que algo se rompa romper, le estamos diciendo a dotnet cómo encontrar la biblioteca correcta.


which openssl me da esta salida: /usr/local/bin/openssl

openssl version me da esta salida: OpenSSL 0.9.8zh 14 Jan 2016

Añade una ruta de acceso a la openssl ejecutable. El sistema de construcción de OpenSSL no proporciona una ruta de acceso. En tiempo de ejecución, su nuevo ejecutable se enlaza con las antiguas bibliotecas.

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