El Capitan 10.11.6でOpenSSLがhomebrewとリンクされない


3

OS X(El Capitan)のCでコーディングしようとしていますが、OpenSSLを使用する必要があります。OSにはバージョンが付属してい0.9.8zh 14 Jan 2016ます。

homebrewを使用してopensslをアップグレードおよびインストールしました(バージョン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コードを書くこと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のコンパイルのために
マーク

ありがとう@マーク。新しいシェルを開いて実行するとopenssl version、正しいバージョンが表示されました。だからそれは適切にリンクされ、古いシェルですべて実行していたので、正しいバージョンが表示されていませんでした。コメントすることはできませんので、これを回答としてここに入れています。あなたに応答する他の方法を見つけることができませんでした。これを答えにしたら、私はそれを受け入れます。
トゥヒナシン

回答:



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の自作バージョンを常に使用するように指示し、潜在的に何かを壊すのではなく、正しいライブラリを見つける方法をdotnetに指示しています。


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.