El Capitan 10.11.6에서 OpenSSL이 homebrew와 연결되지 않음


3

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 버전의 원인을 이해할 수있었습니다.

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


파일을 라이언 킹 한 후 whgich를 실행하기 전에 새 쉘을 입력 했습니까? C 컴파일의 경우 C 컴파일러와 링커 명령 행을 확인해야합니다.
Mark

감사합니다 @Mark. 새로운 쉘을 열고 실행 openssl version하면 올바른 버전이 표시됩니다. 그래서 제대로 연결되었고 오래된 쉘에서 모두 실행하면서 올바른 버전을 보지 못했습니다. 나는 언급 할 수 없기 때문에 이것을 여기에 답으로 넣습니다. 응답 할 다른 방법을 찾을 수 없습니다. 당신이 이것을 대답으로한다면 나는 그것을 받아 들일 것입니다.
Tuhina Singh

답변:


1

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


이것은 실행 파일을 변경하지만 포함 또는 링크 경로를 변경하지 않습니다
Mark

1

에서 브루 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를 제공하지 않습니다. 런타임시 새 실행 파일이 이전 라이브러리에 연결됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.