使用自制软件在OS X上更新OpenSSL


81

我正在使用MacOS X 10.7.5,由于握手失败,我需要更新的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。


1
很高兴它没有用。0.9.8r版没有遇到HeartBleed错误。如果您在2013年3月成功升级,则您创建的所有SSL证书都会受到威胁,您现在必须再次对其进行密钥更改。有关受影响的版本,请参见heartbleed.com。
Houman 2014年

3
这个问题似乎与主题无关,因为它与编程或开发无关。请在帮助中心中查看我可以询问哪些主题。也许超级用户Apple Stack Exchange是一个更好的选择。
2015年

Answers:


89

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


2
我已经安装了1.0.2h_1,但是我处于相同的情况,但是openssl version -a仍然给我OpenSSL 0.9.8zg 14 July 2015。有什么建议?
Pmpr

84
这是行不通的,因为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
Timo

6
@TimoLehto您能够解决此问题吗?我面临着同样的问题,似乎无法在任何地方找到解决方案
Tuhina Singh

3
@TimoLehto不知道这是否是“好的做法”或什至是安全的,但是您始终可以创建从/ usr / local / bin到/ usr / local / opt / openssl / bin / openssl的链接。可以使用以下命令完成此操作:ln -s /usr/local/opt/openssl/bin/openssl /usr/local/bin/openssl。需要明确的是:我不能向您保证这是一种安全或正确的处理方法。
brunodd

2
有关此问题的更多信息:stackoverflow.com/questions/38670295/…–
ekkis

12

在终端中,运行:

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

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

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

@Olaf的答案和@Felipe的评论的提示。有些人(例如我本人)可能会有一些非常混乱的PATH变量。


9
它只是说Refusing to link: openssl
rogerdpack

12

在带有brew的mac上安装了openssl,但/usr/local/bin在其他brew安装的垃圾桶所在的位置上找不到任何内容。在这里找到我的新openssl:

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

像这样运行它:

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

我不想更新OS X openssl,而某些OS东西或其他第三方应用程序可能依赖较旧的版本。

我也不介意走更长的路 openssl

在此为所有正在寻找brew安装的openssl位置的Google员工编写此代码。


6

我遇到了这个问题,发现安装了较新的版本openssl确实可以,但是我的PATH安装设置不正确-我$PATH将端口路径放置在我的brew路径之前,因此始终可以找到较旧的版本openssl

对我来说,解决方法是将路径brew(/ usr / local / bin)放在我的前端$PATH

要找出要从何处加载openssl,请运行which openssl并记录输出。这将是您运行系统时使用的版本的位置openssl。它将brew位于“ / usr / local / bin”路径之外的其他位置。更改您的名称$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

当您到达终端命令makemake install的步骤时,确保使用sudo makesudo make install(我必须分两次进行操作,因为我没有sudo且没有更新)。

希望这可以帮助


3
到目前为止,已知FYI 1.0.1e(特别是1.0.1a-f)具有严重的安全漏洞。未来的读者,请确保您至少升级到1.0.1g heartbleed.com
SapphireSun

旧版本仍表现出对我来说:stackoverflow.com/questions/22974590/...
quantumpotato

2
减一 “ ...一定要使用sudo make ...” -您没有特权。您只是make然后sudo make install如果需要的话。您还引用了一个可怕的参考。它将Apple的OpenSSL 0.9.8替换/usr为更新的1.0.x。这样做确实很不好,因为没有二进制兼容性。
jww '16

3

我在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

1

在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
  1. 安装端口: https://guide.macports.org/
  2. 安装或升级openssl软件包:sudo port install opensslsudo port upgrade openssl
  3. 就是这样,运行openssl version以查看结果。

2
问题是关于Homebrew ... macports不是homebrew ... OP表示他们不喜欢使用mac端口。
韦德·威廉姆斯

新版本中的@WadeWilliams mac不允许您openssl使用进行更新Homebrew,我的意思是您可以使用安装或更新它,Homebrew但不能对其进行优先级设置。因此,Homebrew您可以使用macports 优先级对其进行更新,而不必使用 对其进行更新。
Morteza Sepehri Niya
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.