Homebrew OpenSSL bağlantısını reddetti


141

Ben: OSX 10.11.6, Homebrew 0.9.9m OpenSSL 0.9.8zg 14 Temmuz 2015

Dotnetcore ile oynamaya çalışıyorum ve talimatlarını takip ederek ,

Openssl'in en son sürümünü yükselttim / yükledim:

> 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

Ama openssl bağlamaya çalıştığımda bu bağlantı hatasına koşmaya devam ediyorum:

> 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

Derleyici bayrakları ekleme seçeneği benim için bir anlam ifade etmiyor, çünkü bağımlı olduğum bu kütüphaneleri derlemiyorum.

EDIT dotnetcore talimatlarını güncelledi:

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/

3
.NET Core için, 1.0.1 veya 1.0.2 sürümü olan desteklenen bir OpenSSL sürümüne ihtiyacınız vardır. 0.9.8 sürümünü bildirdiğinizden, belki de önce yapmanız gerekir brew upgrade openssl?
bartonjs

2
Bunu zaten yaptım. Açıklığa kavuşturmalıydım, ama bu adımları soruya eklemedim. Ama ben zaten yaptım brew updateve brew install openssl. Bu, desteklenen sürümü yüklemeye çalışıyor.
daviddeath

2
Görünüşe göre Homebrew bunu açıkça engelledi: github.com/Homebrew/brew/commit/… .
bartonjs

4
Ve .. başıboş dolaşmaya
bartonjs

2
"... openssl bağlamaya çalıştığımda bu bağlantı hatasıyla karşılaşmaya devam ediyorum: .." - Ayrıca bkz. Mac OSX altında gcc ile bir çalıştırılabilir dosyanın çalışma yolu (-rpath) nasıl ayarlanır? . Brew eklemiyorsa, çalışma zamanında her zaman doğru kitaplığı yüklemenize yardımcı olabilir.
jww

Yanıtlar:


63

Diğer cevaba yapılan güncellemenin önerdiği gibi, eski openssl101 demlemesini takmanın geçici çözümü artık çalışmaz. Şimdi bir geçici çözüm için dotnet / cli # 3964 ile ilgili bu yoruma bakın .

Sorunun en alakalı kısmı buraya kopyalandı:

Kütüphanede rpath ayarlamak için önerilen diğer seçeneğe baktım. Aşağıdaki sadece bu kitaplığı etkileyecek daha iyi bir çözüm olduğunu düşünüyorum.

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

ve / veya NETCore 1.0.1 yüklüyse 1.0.1 için de aynı komutu uygulayı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

Aslında, işletim sistemine her zaman SSL'nin homebrew sürümünü kullanmasını ve potansiyel olarak bir şeyin bozulmasına neden olmasını söylemek yerine, dotnet'e doğru kitaplığın nasıl bulunacağını söylüyoruz.

Ayrıca, Microsoft'un sorunun farkında olduğu ve her ikisinin de a) hem de biraz azaltma planının yanı sıra b) uzun vadeli bir çözüm (probaby'yi OpenSSL'yi dotnet ile bir araya getirme) gibi görünüyor.

Dikkat edilmesi gereken başka bir şey: /usr/local/opt/openssl/libdemlemenin varsayılan olarak bağlandığı yerdir:

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

Herhangi bir nedenle demlemeyi takıp farklı bir yere bağlarsanız, bu yol bir rpath olarak kullanmanız gereken yoldur.

System.Security.Cryptography.Native.dylib kütüphanesinin rpath'ını güncelledikten sonra, etkileşimli oturumunuzu yeniden başlatmanız gerekir (yani, konsolunuzu kapatın ve başka bir tane başlatın).


Bu satırı nereye eklemem gerekiyor? Bunu CI'de çalýţtýrmaya çalýţýyorum. Ben alıyorum /usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.Security.Cryptography.Native.dylib (No such file or directory).
mrahhal

mrahhal bu takımın kurulum yolu dotnet. Yüklemiş olmamanız ya da yüklemeniz ya da başka bir konuma yerleştirmeniz mümkündür. Yüklü ve sizin tarafınızdan, which dotnetonu bulmak için kullanabilirsiniz .
Ben Collins

Oh, yüklemeden önce bu satırı eklediğimi fark ettim dotnet. Tekrar dener ve geri gelir.
mrahhal

3
Benim için çalıştı, benim durumumda sdk farklı bir dizine kuruldu, bu yüzden yolu değiştirmek zorunda kaldı.
mrahhal

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

60

Benim için işe yarayan buydu:

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

Bu konudaki @ dorlandode teşekkürler https://github.com/Homebrew/brew/pull/597

Not: Bunu geçici bir düzeltme olarak kullandım, eğer tekrar tekrar openssl'i düzgün bir şekilde kurmak için zaman harcayana kadar kullandım. Hatırladığım gibi, en iyi yolun farkına varmadan önce bir günün en iyi hata ayıklama ve sorunlarını geçirdiğimi, tek tek ihtiyaç duyduğum cerleri manuel olarak kurmaktı. Lütfen bunu denemeden önce @ bouke'nin yorumundaki bağlantıyı okuyun.


9
bağlantının tam yolu /usr/local/bin/opensslnedir?
Mohamed Hafez

Bu cevap neden kabul edilmedi, hayatımı kurtardın adamım. :: başparmak yukarı ::
wukong

2
Demlemenin bunu yapmayı reddetmesinin iyi bir nedeni var. Ayrıca bakınız: github.com/Homebrew/brew/pull/597 .
Bouke

7
Bu çözüm benim için çalıştı, ama değişime vardı 1.0.2jiçin 1.0.2kçünkü sürüm farklarının. Bu yüzden kullanıcılar dikkat, geçerli sürüm için yolları ayarlamanız gerekebilir
Jeff

@ Jeff'in yorumunu biraz geç gördüm. Siz de yaptıysanız, ln -s -f /usr/local/Cellar/openssl/1.0.2k/bin/openssl /usr/local/bin/openssldüzelttiğine inanıyorum
shaneparsons

49

Bu çözümlerin hiçbiri OS X El Capitan 10.11.6'da benim için çalışmadı. Muhtemelen OS X'in üstün olduğuna inandığı ve kurcalamayı sevmediğine inandığı yerel bir openssl sürümü olduğundan.

Bu yüzden, yüksek yolu seçtim ve taze başladım ...


Elle yükleme ve simge bağlantısı

cd /usr/local/src  
  • "Böyle bir dosya veya dizin yok" mesajı alıyorsanız, şunu yapın:

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

İndirme openssl:

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

İçeri ve cd:

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

Derleyin ve yükleyin:

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

Şimdi yeni ve güncellenmiş openssl'nize symlink OS X'in openssl'si:

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

Terminali kapatın, yeni bir oturum açın ve OS X'in yeni openssl'nizi kullandığını doğrulayın:

openssl version -a

OS X üzerinde .NET core yüklemeye çalışıyorsanız, Docker'a sarmalısınız.
mcgwier

6
Tüm bunları yaptıktan sonra: OpenSSL 0.9.8zh 14 Oca 2016 inşa tarihi: 15 Mayıs 2016 platform: darwin64-x86_64-llvm
AsimRazaKhan

5
Aşağıdaki şekilde bir sembolik oluşturma benim için çalıştı: ln -s /usr/local/openssl-1.0.2h/bin/openssl /usr/local/bin/openssl. Terminal oturumunuzu yeniden başlattıktan sonra , yerleşik which openssl( /usr/local/bin/openssl) yerine güncelleştirilmiş 1.0.2 sürümünü ( ) kullandığınızdan emin olmak için yazın /usr/bin/openssl.
Olivier

1
Bu talimatları izledim ama hangi openssl'yi yazdığımda (/ opt / local / bin / openssl) alıyorum. / Usr / local / bin / openssl olmasını nasıl sağlayabilirim?
Chris

2
Bu talimatları izledim (adım adım çok teşekkür ederim) ve yine de 0.9.8 dedi. Çalışan alternatif bağlantı yöntemi için Olivier'e teşekkür ederiz.
Onikoroshi

45

Sadece brew info opensslaşağıdaki bilgileri yürütün ve okuyun:

Bu yazılımı ilk önce PATH çalıştırmanız gerekiyorsa: echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile


3
brew info opensslbenim için aynı yararlı bilgileri verdi. Yukarıda önerilen komutu çalıştırmak ve sonra source ~/.bash_profileyeni bir terminal çalıştırmak veya açmak benim için çözdü.
PanPipes

2
EN SONUNDA. Bu da benim için çalıştı. Yukarıdaki diğer cevaplar olmadı!
user124384

2
veyaecho 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.zshrc
B.Ma

16

Mac'inizi taşımak homebrew'ı kırıyorsa:

Mac bilgisayarımı taşıdım ve OpenSSL dahil tüm homebrew kurulumlarımın bağlantısını kaldırdı . Bu gem install, ilk olarak sorunu fark ettim ve bunu onarmaya çalıştım.

Bir milyon çözümden sonra (OSX Sierra'ya geçiş yaparken - 10.12.5), çözüm komik bir şekilde sonuçlandı:

brew reinstall ruby
brew reinstall openssl

Ve bir yıl sonra, bu Mac'imi geçirdi ve düzeltmeniz de benim için çalıştı. Çok teşekkürler; Yeni Mac'imi silmeyi ve yeni bir kurulum yapmayı ve her şeyi manuel olarak tekrar kurmayı düşünmeye başladım.
David

@David sevginin eşiğinde kalmasını engelleyebildiğim için memnunum! Neredeyse aynısını yaptım.
tobybot

1
Yukarıdakileri yapmadan önce bu klasörü silmeniz de gerekebilir. rm -rf /usr/local/opt/openssl
Gal Bracha

9

Bulabildiğim her şeyi denedikten sonra hiçbir şey işe yaramadı, bunu denedim:

touch ~/.bash_profile; open ~/.bash_profile

Dosyanın içine bu satırı ekledi.

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

şimdi çalışıyor :)

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

1
Bu gerçekten basit bir çözüm ve benim için işe yarayacağını umuyorum, ama burada şans yok. PATH'ımı güncelledikten ve kabuk oturumumu yeniden başlattıktan sonra bile which opensslhala işaret ediyor/usr/bin/openssl
Will Hitchcock

Bu çalışmayı sağlamak için .bash_profile dosyamı da düzenlemek zorunda kaldım. Ama işe yarayan tek şey / usr / bin yerine / usr / local / bin'e bakmasını söylemekti. Bunu ekleyerek yaptımexport PATH=/usr/local/bin:$PATH
Alison

3
İşe Bunun için, eklemek gerekir /usr/local/opt/openssl/bin, olmadan/openssl için, ucunda ön : PATH, son değil ait PATH=/usr/local/opt/openssl/bin:$PATH kullanma /usr/local/opt/opensslyerine /usr/local/Cellar/openssl/$versionvasıtasıyla otomatik kalmadan $ PATH içinde en yukarı güncel sürümünü tutacağız her yükselttiğinizde değiştirmek için.
Mark Reed

Saatlerce aptallıktan sonra @ MarkReed'in ek notlarıyla birlikte benim için hile yaptı
Naomi See

Bunu kullanabildim ve benim için çalıştırabildim. Teşekkür ederim. 1.0sq openssl sürümü var.
Karthik NG

8

Benzer bir vakam var. Demlemek için openssl'yi kurup mitmproksi kurmak için pip kullanmam gerekiyor. Aynı şikayeti alıyorum brew link --force. Ulaştığım çözüm aşağıdadır: (demlemek için kuvvet bağlantısı olmadan)

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

Bu, soruyu doğrudan ele almaz. Herkes pip kullanıyor ve openssl lib gerektirir durumunda tek astar bırakın.

Not: /usr/local/opt/openssl/libyollar şu yollarla elde edilir:brew info openssl


Bu pysqlcipher yüklemek için yararlı bulundu
drtf

Kurulum için kullanışlıdır cryptography. PKG_CONFIG_PATHDeğişkeni kaçırıyordum
Sagar

7

Bu benim için çalıştı:

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

Bu benim için çalıştı, Mac OS High Sierra phpbrew ile PHP 7.2.1 derlemeye çalışıyorum - Teşekkürler!
Bruno de Oliveira

6

Edwardthesecond Yukarıdaki çözüm benim için Sierra üzerinde de çalıştı

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

Daha önce yaptığım diğer adımlar:

  • demlemek yoluyla openssl yükleme

    brew install openssl
    
  • homebrew tarafından önerilen şekilde openssl eklemek

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

Benim için iyi çalıştı, la parçasını atladı './configure && make'
David 'mArm' Ansermot

2

Varsayılan olarak, homebrew bana OpenSSL sürüm 1.1 verdi ve bunun yerine 1.0 sürümünü arıyordum. Bu benim için çalıştı.

1.0 sürümünü yüklemek için:

brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

Sonra üzerinden yolumun symlink çalıştı ama bana aşağıdaki hatayı verdi:

ln -s /usr/local/Cellar/openssl/1.0.2t/include/openssl /usr/bin/openssl
ln: /usr/bin/openssl: Operation not permitted

Son olarak, openssl'i demlemek için brew switch komutunu kullanarak 1.0 sürümüne gelin:

brew switch openssl 1.0.2t
Cleaning /usr/local/Cellar/openssl/1.0.2t
Opt link created for /usr/local/Cellar/openssl/1.0.2t

1

Not: bu artık nedeniyle çalışmıyor https://github.com/Homebrew/brew/pull/612

Bugün de aynı sorunu yaşadım. Ben kaldırıldı (unbrewed ??) openssl 1.0.2 ve ayrıca 1.0.1 homebrew ile yükledim. Dotnet yeni / restore / run sonra iyi çalıştı.

Openssl 101 yükleyin:
demlemek yüklemek homebrewleri / versiyonları / openssl101
Bağlama:
--force homebrewleri / versiyonları / openssl101 demlemek bağlantı


2
Bunu başardın! 1.0.2'nin bağlantı kurmak istemediği anlaşılıyor. Sonraki soru, .netcore'un neden toplulukta önerilmeyen bir şey önerdiğidir.
daviddeath

1.0.2 birkaç gün önce başka bir mac'ta benim için çalıştı, bu yüzden belki de yeni bir demleme veya openssl değişikliği var. Her neyse, nokta net çekirdek için biz
iyiyiz

1
@Bartonjs tarafından gönderilen github bağlantısı demlemenin sadece birkaç gün önce güncellendiğini gösteriyor. Taahhüdüne baktığımızda, değişiklik `` HOMEBREW_PREFIX.to_s == "/ usr / local" && keg.name == "openssl" `olduğundan, 1.0.1 sürümünün farklı bir HOMEBREW_PREFIX kullandığını tahmin ediyorum.
daviddeath

11
benim için çalışmadı, hala hata veriyorRefusing to link: openssl101 Linking keg-only openssl101 means you may end up linking against the insecure, deprecated system OpenSSL while using the headers from Homebrew's openssl101. Instead, pass the full include/library paths to your compiler e.g.: -I/usr/local/opt/openssl101/include -L/usr/local/opt/openssl101/lib
dark_ruby

6
Homebrew devs tarafından github.com/Homebrew/brew/pull/612
Joshka

1

Ruby 2.6.5'in daha yeni bir sürümünü yüklemeye çalışırken aynı sorunu yaşadım. Https://github.com/kelaberetiv/TagUI/issues/86 sorunu yardımcı oluyor. Bu, macOS catalina Sürüm 10.15.1 için

Temel olarak, update and upgradehomebrew yaptım ve openssl yükledim ve yakut yükledim.

brew update && brew upgrade
brew install openssl

Sonra bu 2 simgeyi oluşturun

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/

sonra ruby ​​2.6.5 yükledi


0

benim için bu işe yaradı ...

./Bash_profile dosyasını düzenledim ve aşağıdaki komutu ekledim

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


0
export https_proxy=http://127.0.0.1:1087 http_proxy=http://127.0.0.1:1087 all_proxy=socks5://127.0.0.1:1080

benim için çalışıyor

ve bence tüm sorunları çözebilir. Failed to connect to raw.githubusercontent.com port 443: Connection refused

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.