El Capitan 10.11.6에서 OpenSSL이 homebrew와 연결되지 않음 Refusing to link: openssl. 내 길은

OS X (El Capitan)에서 C로 코딩하려고하는데 OpenSSL을 사용해야합니다. OS는 버전과 함께 제공됩니다 0.9.8zh 14 Jan 2016.

homebrew를 사용하여 openssl (got 버전 1.0.2h)을 업그레이드하고 설치했지만 올바르게 사용하여 링크를 사용할 수 없습니다. 이것이 한 일입니다 :

brew update

brew install openssl

brew link --force openssl

나에게 오류 말을했다

Warning: Refusing to link: openssl.

내 길은 /usr/local/bin첫 번째 길 입니다.

이 명령을 실행하십시오.
ln -s /usr/local/Cellar/openssl/1.0.2j/include/openssl /usr/local/include/openssl

(여기 에서이 솔루션을 찾았습니다 : 다른 곳 중에서 El Capitan과 함께 Openssl )

오류 출력이 없으므로 이것이 효과가 있다고 가정했습니다. 그러나..

which openssl 나 에게이 출력을 제공합니다 : /usr/local/bin/openssl

openssl version 나 에게이 출력을 제공합니다 : OpenSSL 0.9.8zh 14 Jan 2016

내가하려는 것은 CLI 명령을 실행하거나 일반 vi편집기로 편집하고 C를 사용하여 컴파일 된 C 코드를 작성하는 것 gcc입니다. 헤더 파일에 openssl을 포함하고 있습니다.

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

또한 CLI에서 실행중인 명령 으로이 경로로 연결되었습니다 (도움이되는 경우).

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

나에게 오류를 준다 :

EVP_SignFinal:wrong public key type.

인터넷 검색을 통해 업데이트해야 할 이전 OpenSSL 버전의 원인을 이해할 수있었습니다.

여기서 진행하는 방법에 대한 아이디어가 있습니까?



답변

링크를 수행 한 후 새 쉘을 열어야합니다. (나는 나중에 참조 할 수 있도록 링크 된 매체 기사를 업데이트했습니다 : Open Capa with El Capitan ).


답변

에서 브루 OpenSSL을 연결 거부 스택 오버플로와에 문제 3964, 닷넷 GitHub의은 (내가 처음 닷넷으로보고 생각)

라이브러리에서 rpath를 설정하기 위해 제안 된 다른 옵션을 살펴 보았습니다. 다음은이 특정 라이브러리에만 영향을 미치는 더 나은 솔루션이라고 생각합니다.

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

NETCore 1.0.1을 설치 한 경우 1.0.1에 대해서도 동일한 명령을 수행하십시오.

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

실제로 운영 체제에 항상 홈 브루 크 버전의 SSL을 사용하도록 지시하고 잠재적으로 문제가 발생하는 대신 닷넷에 올바른 라이브러리를 찾는 방법을 알려줍니다.


which openssl 나 에게이 출력을 제공합니다 : /usr/local/bin/openssl

openssl version 나 에게이 출력을 제공합니다 : OpenSSL 0.9.8zh 14 Jan 2016

openssl실행 파일에 rpath를 추가하십시오 . OpenSSL의 빌드 시스템은 rpath를 제공하지 않습니다. 런타임시 새 실행 파일이 이전 라이브러리에 연결됩니다.