使用 Homebrew 在 OS X 上更新 OpenSSL

Posted

技术标签:

【中文标题】使用 Homebrew 在 OS X 上更新 OpenSSL【英文标题】:Update OpenSSL on OS X with Homebrew 【发布时间】:2013-02-17 14:27:59 【问题描述】:

我使用的是 MacOS X 10.7.5,由于handshake failures,我需要更新的 OpenSSL 版本。网上有几个教程,我尝试了以下:

brew install openssl
brew link openssl --force

然而,它不起作用:

openssl version
OpenSSL 0.9.8r 8 Feb 2011

brew unlink openssl && brew link openssl --force
Unlinking /usr/local/Cellar/openssl/1.0.1e... 1139 links removed
Linking /usr/local/Cellar/openssl/1.0.1e... 1139 symlinks created

SVN 问题也没有解决。有任何想法吗?我宁愿不尝试 MacPorts 方式,因为它可能会干扰 Homebrew。

【问题讨论】:

很高兴它没有工作。 0.9.8r 版没有出现 HeartBleed 错误。如果您在 2013 年 3 月成功升级,那么您创建的任何 SSL 证书都会受到威胁,您现在必须重新对其进行重新加密。有关受影响的版本,请参见 heartbleed.com。 这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User 或Apple Stack Exchange 会是一个更好的提问地点。 @jww 这是 ***,希望对您有所帮助。会有一些问题以灰色阴影显示。我已经停止问这个问题,因为有人投票支持结束一个问题而不试图了解开发人员。 【参考方案1】:

如果您使用 Homebrew,/usr/local/bin 应该已经在 $PATH 的前面,或者至少在 /usr/bin 之前。如果您现在在终端窗口中运行 brew link --force openssl,请打开一个新窗口并在其中运行 which openssl。它现在应该在 /usr/local/bin 下显示 openssl

【讨论】:

我已经安装了1.0.2h_1,但我的情况完全相同,但openssl version -a 仍然给我OpenSSL 0.9.8zg 14 July 2015。有什么建议吗? 这个不行,因为brew link --force openssl Warning: Refusing to link: openssl Linking keg-only openssl means you may end up linking against the insecure, deprecated system OpenSSL while using the headers from Homebrew's openssl. Instead, pass the full include/library paths to your compiler e.g.: -I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib @TimoLehto 你能解决这个问题吗?我面临同样的问题,似乎无法在任何地方找到解决方案 @TimoLehto 不知道这是否是“良好做法”甚至安全,但您始终可以创建从 /usr/local/bin 到 /usr/local/opt/openssl/bin 的链接/openssl。这可以使用以下命令完成:ln -s /usr/local/opt/openssl/bin/openssl /usr/local/bin/openssl。需要说明的是:我不能向您保证这是一种安全或正确的处理方式。 关于这个问题的更多信息:***.com/questions/38670295/…【参考方案2】:

使用 brew 在 mac 上安装了 openssl,但在 /usr/local/bin 上找不到其他 brew 安装的 bin 所在的位置。在这里找到我的新 openssl:

/usr/local/opt/openssl/bin/openssl

像这样运行它:

/usr/local/opt/openssl/bin/openssl version

我不想更新 OS X openssl,而某些 OS 内容或其他 3rd 方应用程序可能依赖于旧版本。

我也不介意比openssl更长的路径

在这里为所有正在寻找 brew 安装的 openssl 位置的 Google 员工写这篇文章。

【讨论】:

【参考方案3】:

在终端中,运行:

export PATH=/usr/local/bin:$PATH
brew link --force openssl

如果收到警告,您可能必须先取消链接 openssl:brew unlink openssl

这确保我们为这种情况链接了正确的 openssl。 (并且不会与 .profile 混淆)

@Olaf 的回答和@Felipe 的评论的提示。有些人——比如我自己——可能有一些非常混乱的 PATH 变量。

【讨论】:

它只是说Refusing to link: openssl【参考方案4】:

我遇到了这个问题,发现安装较新的openssl 确实有效,但我的PATH 设置不正确——我的$PATH 将端口路径放在我的 brew 路径之前,所以它总是找到了旧版本的openssl

我的解决方法是将brew (/usr/local/bin) 的路径放在我的$PATH 前面。

要找出您从哪里加载 openssl,请运行 which openssl 并记下输出。当您运行openssl 时,它将是您的系统正在使用的版本的位置。它会在“/usr/local/bin”的brewpath 之外的某个地方。更改您的$PATH,关闭该终端选项卡并打开一个新选项卡,然后运行which openssl。您现在应该看到不同的路径,可能在 /usr/local/bin 下。现在运行openssl version,您应该会看到您安装的新版本“OpenSSL 1.0.1e 2013 年 2 月 11 日”。

【讨论】:

【参考方案5】:

为了回答您关于更新 openssl 的问题,我按照以下步骤成功将我的 Mac 上找到的版本更新到最新的 openssl 版本 1.0.1e。

我按照此处找到的步骤操作:http://foodpicky.com/?p=99

当您到达终端命令 ma​​kema​​ke install 的步骤时,请务必使用 sudo makesudo make install(我不得不一步一步完成两次,因为我没有 sudo 并且没有更新)。

希望对你有帮助

【讨论】:

仅供参考,截至今天,已知 1.0.1e(特别是 1.0.1a-f)存在严重的安全漏洞。未来的读者,请确保您至少升级到 1.0.1g heartbleed.com 旧版本还在为我显示:***.com/questions/22974590/… 减一"...一定要使用 sudo make..." - 你不要不要使用特权。如果需要,您只需 makesudo make install。你还引用了一个可怕的参考。它用更新的 1.0.x 替换了 /usr 中的 Apple OpenSSL 0.9.8。这是一件非常糟糕的事情,因为没有二进制兼容性。【参考方案6】:

我在 OSX10.11 上运行 php56 的本地服务器上安装一些 Wordpress 插件时遇到问题。他们通过 SSL 连接外部 API 失败。

安装 openSSL 并没有解决我的问题。但后来我发现 CURL 也需要重新安装。

这解决了我使用 Homebrew 的问题。

brew rm curl && brew install curl --with-openssl

brew uninstall php56 && brew install php56 --with-homebrew-curl --with-openssl

【讨论】:

【参考方案7】:

在 mac OS X Yosemite 上,使用 brew 安装后将其放入

/usr/local/opt/openssl/bin/openssl

但在尝试链接时不断收到错误“链接仅桶装 openssl 意味着您最终可能会链接不安全”

所以我只是通过提供完整路径来链接它

ln -s /usr/local/opt/openssl/bin/openssl /usr/local/bin/openssl

所以现在当我这样做时

$ openssl version -a

显示的是 OpenSSL 1.0.2o 版本。

所以我猜它成功了!

【讨论】:

【参考方案8】:

试试:

mkdir homebrew && curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew

之后尝试:

brew install homebrew/portable-ruby/portable-openssl

【讨论】:

【参考方案9】:

在 OSX Big Sur 上,我遇到了非常令人沮丧的错误,因为所有解决方案都依赖于使用 brew install。但运行brew install 总是返回如下错误:

Error: 
  homebrew-core is a shallow clone.
To `brew update`, first run:
  git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow
This command may take a few minutes to run due to the large size of the repository.
This restriction has been made on GitHub's request because updating shallow
clones is an extremely expensive operation due to the tree layout and traffic of
Homebrew/homebrew-core and Homebrew/homebrew-cask. We don't do this for you
automatically to avoid repeatedly performing an expensive unshallow operation in
CI systems (which should instead be fixed to not use shallow clones). Sorry for
the inconvenience!

但我无法运行该命令,因为 git 失败了:

% git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow
dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
  Referenced from: /usr/local/libexec/git-core/git-remote-https
  Reason: image not found

最后,解决方案是重新安装 git。

brew reinstall git

然后根据需要更新符号链接:

brew link --overwrite git

【讨论】:

【参考方案10】:
    安装端口:https://guide.macports.org/ 安装或升级openssl包:sudo port install opensslsudo port upgrade openssl 就是这样,运行openssl version 来查看结果。

【讨论】:

问题是关于 Homebrew...macports 不是 homebrew...OP 声明他们不喜欢使用 mac 端口。 @WadeWilliams mac 在新版本中不允许您使用Homebrew 更新openssl,我的意思是您可以使用Homebrew 安装或更新它,但您不能优先考虑它。因此,您可以使用macports 更新它并优先考虑它,而不是使用Homebrew 更新它。

以上是关于使用 Homebrew 在 OS X 上更新 OpenSSL的主要内容,如果未能解决你的问题,请参考以下文章

Mac OS X 解决HomeBrew更新慢的问题

Mac上Homebrew的使用——Homebrew 使 OS X 更完整

sh 翻译:“OS X 10.10 Yosemite本地开发环境,Apache,PHP和MySQL与Homebrew”:0更新Homebrew

sh 使用HomeBrew和所有库​​和支持在OS X上安装FFMPEG

sh 使用HomeBrew和所有库​​和支持在OS X上安装FFMPEG

Mac OS X 包管理工具 Homebrew 安装与使用