web-dev-qa-db-fra.com

Homebrew refuse de se connecter à OpenSSL

Je suis sur: OSX 10.11.6, version Homebrew 0.9.9m OpenSSL 0.9.8zg 14 juillet 2015

J'essaie de jouer avec Dotnetcore et en suivant leurs instructions

J'ai mis à jour/installé la dernière version de openssl:

> brew install openssl
==> Downloading https://homebrew.bintray.com/bottles/openssl-1.0.2h_1.el_capitan.bottle.tar.gz
Already downloaded: /Users/administrator/Library/Caches/Homebrew/openssl-1.0.2h_1.el_capitan.bottle.tar.gz
==> Pouring openssl-1.0.2h_1.el_capitan.bottle.tar.gz
==> Caveats
A CA file has been bootstrapped using certificates from the system
keychain. To add additional certificates, place .pem files in
  /usr/local/etc/openssl/certs

and run
  /usr/local/opt/openssl/bin/c_rehash

This formula is keg-only, which means it was not symlinked into /usr/local.

Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries

Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:

    LDFLAGS:  -L/usr/local/opt/openssl/lib
    CPPFLAGS: -I/usr/local/opt/openssl/include

Mais quand j'essaie de lier openssl, je continue à rencontrer cette erreur de liaison:

> brew link --force openssl
Warning: Refusing to link: openssl
Linking keg-only OpenSSL means you may end up linking against the insecure,
deprecated system version while using the headers from the Homebrew version.
Instead, pass the full include/library paths to your compiler e.g.:
  -I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib

L'option d'inclure les indicateurs de compilation n'a pas de sens pour moi, car je ne compile pas ces bibliothèques dont je dépend. 

EDIT dotnetcore a mis à jour ses instructions:

brew update    
brew install openssl    
ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/    
ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/
108
daviddeath

Comme le suggère la mise à jour de l'autre réponse, la solution de contournement consistant à installer l'ancien brassin openssl101 ne fonctionnera plus. Pour une solution immédiate, voir ce commentaire sur dotnet/cli # 3964 .

La partie la plus pertinente du problème copié ici:

J'ai examiné l'autre option suggérée pour définir le rpath sur la bibliothèque. Je pense que ce qui suit est une meilleure solution qui n’affectera que cette bibliothèque spécifique.

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

et/ou si NETCore 1.0.1 est installé, exécutez également la même commande pour 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

En fait, plutôt que de dire au système d’exploitation de toujours utiliser la version SSL de Homebrew et de causer une panne, nous expliquons à Dotnet comment trouver la bonne bibliothèque.

Il est également important de noter que Microsoft semble être au courant du problème et avoir à la fois un plan d’atténuation assez immédiat et b) une solution à long terme (probaby empaquetant OpenSSL avec dotnet).

Une autre chose à noter: /usr/local/opt/openssl/lib est l'endroit où la bière est liée par défaut:

13:22 $ ls -l /usr/local/opt/openssl
lrwxr-xr-x  1 ben  admin  26 May 15 14:22 /usr/local/opt/openssl -> ../Cellar/openssl/1.0.2h_1

Si, pour une raison quelconque, vous installez le brassin et le liez à un emplacement différent, ce chemin est celui que vous devez utiliser comme chemin.

Une fois que vous avez mis à jour le chemin rpath de la bibliothèque System.Security.Cryptography.Native.dylib, vous devez redémarrer votre session interactive (c'est-à-dire, fermez votre console et démarrez-en une autre).

56
Ben Collins

C'est ce qui a fonctionné pour moi:

brew update
brew install openssl
ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/
ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/
ln -s /usr/local/Cellar/openssl/1.0.2j/bin/openssl /usr/local/bin/openssl

Merci à @dorlandode sur ce fil de discussion https://github.com/Homebrew/brew/pull/597

NB: je n'ai utilisé cette solution que temporairement jusqu'à ce que je puisse passer du temps à installer correctement Openssl à nouveau. Si je me souviens bien, j'ai passé la majeure partie de la journée à déboguer et à rencontrer des problèmes avant de réaliser que le mieux était d'installer manuellement les certificats dont j'avais besoin. Veuillez lire le lien dans le commentaire de @ bouke avant de tenter ceci.

47
rorykoehler

Aucune de ces solutions ne fonctionnait pour moi sous OS X El Capitan 10.11.6. Probablement parce que OS X a une version native d’openssl qu’elle croit supérieure, et en tant que telle, n’aime pas les falsifications.

Alors, j'ai pris la grande route et j'ai commencé à nouveau ...


Installer manuellement et lien symbolique

cd /usr/local/src  
  • Si vous obtenez "Aucun fichier ou répertoire de ce type", indiquez-le: 

    cd /usr/local && mkdir src && cd src

Télécharger openssl:

curl --remote-name https://www.openssl.org/source/openssl-1.0.2h.tar.gz

Extrait et cd dans:

tar -xzvf openssl-1.0.2h.tar.gz
cd openssl-1.0.2h

Compiler et installer:

./configure darwin64-x86_64-cc --prefix=/usr/local/openssl-1.0.2h shared
make depend
make
make install

Maintenant, symlink openssl de OS X à votre openssl nouveau et mis à jour:

ln -s /usr/local/openssl-1.0.2h/bin/openssl /usr/local/bin/openssl

Fermez le terminal, ouvrez une nouvelle session et vérifiez que OS X utilise votre nouveau openssl:

openssl version -a
42
mcgwier

Il suffit d'exécuter brew info openssl et de lire l'information où il est écrit:

Si vous devez d'abord avoir ce logiciel dans votre PATH, exécutez: echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile

38
Alex Maiburg

Si la migration de votre mac rompt l'homebrew:

J'ai migré mon Mac, et il a dissocié tout mon homebrew installe - y compris OpenSSL. gem install cassé, c’est la raison pour laquelle j’ai tout d’abord remarqué le problème et commencé à essayer de le réparer.

Après un million de solutions (lors de la migration vers OSX Sierra - 10.12.5), la solution s'est révélée être d'une simplicité comique:

brew reinstall Ruby
brew reinstall openssl
13
tobybot

Après avoir essayé tout ce que je pouvais trouver et que rien ne fonctionnait, j'ai juste essayé ceci:

touch ~/.bash_profile; open ~/.bash_profile

À l'intérieur du fichier ajouté cette ligne.

export PATH="$PATH:/usr/local/Cellar/openssl/1.0.2j/bin/openssl"

maintenant ça marche :)

Jorns-iMac:~ jorn$ openssl version -a
OpenSSL 1.0.2j  26 Sep 2016
built on: reproducible build, date unspecified
//blah blah
OPENSSLDIR: "/usr/local/etc/openssl"

Jorns-iMac:~ jorn$ which openssl
/usr/local/opt/openssl/bin/openssl
9
Jorn

J'ai un cas similaire. Je dois installer openssl via brew, puis utiliser pip pour installer mitmproxy. Je reçois la même plainte de brew link --force. Voici la solution à laquelle j'ai abouti: (sans lien de force par brassage)

LDFLAGS=-L/usr/local/opt/openssl/lib 
CPPFLAGS=-I/usr/local/opt/openssl/include
PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig 
pip install mitmproxy

Cela ne règle pas la question directement. Je laisse one-liner au cas où quelqu'un utiliserait pip et aurait besoin de la bibliothèque openssl.

Remarque: les chemins /usr/local/opt/openssl/lib sont obtenus par brew info openssl

8
Pili Hu

Cela a fonctionné pour moi:

 brew install openssl
 cd /usr/local/include 
 ln -s ../opt/openssl/include/openssl .
6
edwardthesecond

La solution ci-dessus d’Edwardtheseconde a également fonctionné pour moi sur Sierra

 brew install openssl
 cd /usr/local/include 
 ln -s ../opt/openssl/include/openssl 
 ./configure && make

Les autres étapes que j'ai faites auparavant sont les suivantes:

  • installer openssl via breuvage

    brew install openssl
    
  • ajout de openssl au chemin suggéré par homebrew

    brew info openssl
    echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
    
5
Lili

Remarque: cela ne fonctionne plus en raison de https://github.com/Homebrew/brew/pull/612

J'ai eu le même problème aujourd'hui. J'ai désinstallé (unbrewed ??) openssl 1.0.2 et installé 1.0.1 également avec homebrew. Dotnet nouveau/restaurer/exécuter a ensuite bien fonctionné.

Installez openssl 101:
brew installer homebrew/versions/openssl101 
Mise en relation:
lien brassin --force homebrew/versions/openssl101

1
user3488820

pour moi c'est ce qui a fonctionné ...

J'ai édité le fichier ./bash_profile et ajouté la commande ci-dessous

export PATH = "/ usr/local/opt/openssl/bin: $ PATH"

0
sanviri