使用Homebrew在OS X上更新OpenSSL

Joa*_*him 75 svn macos homebrew openssl

我正在使用MacOS X 10.7.5,由于握手失败,我需要更新的OpenSSL版本.互联网上有几个教程,我尝试了以下内容:

brew install openssl
brew link openssl --force
Run Code Online (Sandbox Code Playgroud)

然而,它不起作用:

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
Run Code Online (Sandbox Code Playgroud)

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

小智 82

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

  • 这个不起作用,因为`brew link --force openssl警告:拒绝链接:openssl链接keg-only openssl意味着你可能在使用Homebrew的openssl的头文件时最终链接到不安全的,已弃用的系统OpenSSL.相反,将完整的include/library路径传递给编译器,例如:-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib` (79认同)
  • @TimoLehto你能解决这个问题吗?面临同样的问题,似乎无法在任何地方找到解决方案 (6认同)
  • @TimoLehto不知道这是"良好做法"还是安全,但你总是可以创建一个从/ usr/local/bin到/ usr/local/opt/openssl/bin/openssl的链接.这可以使用以下命令完成:`ln -s/usr/local/opt/openssl/bin/openssl/usr/local/bin/openssl`.要明确:我不能向你保证这是一种安全或正确的处理方式. (3认同)
  • 我已经安装了`1.0.2h_1`,但我完全处于同样的情况,但`openssl version -a`仍然给我`OpenSSL 0.9.8zg 2015年7月14日'.有什么建议? (2认同)
  • 关于这个问题的更多信息:http://stackoverflow.com/questions/38670295/homebrew-refusing-to-link-openssl (2认同)

Mar*_*ith 12

在终端中,运行:

export PATH=/usr/local/bin:$PATH
brew link --force openssl
Run Code Online (Sandbox Code Playgroud)

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

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

帽子提示@Olaf的答案和@Felipe的评论.有些人 - 比如我自己 - 可能会有一些相当混乱的PATH变量.

  • 它只是说"拒绝链接:openssl" (7认同)

Luk*_*kas 9

在mac上用brew安装openssl但/usr/local/bin在其他brew安装的bin所在的地方没有找到任何东西.在这里找到我的新鲜openssl:

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

像这样运行:

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

我不想更新OS X openssl,而某些操作系统或其他第三方应用程序可能依赖于旧版本.

我也不介意更长的路径而不仅仅是 openssl

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


Gre*_*egT 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日".


fre*_*esh 5

要回答有关更新openssl的问题,我按照以下步骤将我Mac上的版本成功更新到最新的openssl版本1.0.1e.

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

当你到达终端命令的步骤makemake install时一定要使用sudo makesudo make install(我必须经历两次步骤,因为我没有使用sudo而且没有更新).

希望这可以帮助

  • 截至目前的FYI,已知1.0.1e(特别是1.0.1a-f)存在严重的安全漏洞.未来的读者,请确保升级到至少1.0.1g http://heartbleed.com/ (3认同)
  • ***减去一个***:*"......一定要使用sudo make ..."* - 你没有使用特权.你只需要`make`然后再根据需要`sudo make install`.你还引用了一个可怕的参考.它将`/ usr`中的Apple的OpenSSL 0.9.8替换为更新的1.0.x. 这是一件非常糟糕的事情,因为没有二进制兼容性. (2认同)