macOS 上的 OpenSSL 1.0.2m

Posted

技术标签:

【中文标题】macOS 上的 OpenSSL 1.0.2m【英文标题】:OpenSSL 1.0.2m on macOS 【发布时间】:2020-04-07 19:23:02 【问题描述】:

为了构建一个特定的库,我需要带有开发包的 openssl 库版本 1.0.2m。我正在使用 macOS。使用 brew install openssl 安装最新版本 1.1.1d。

【问题讨论】:

【参考方案1】:

由于 OpenSSL 1.0.2 将在 2019 年底结束生命周期,因此不再通过 Homebrew 提供。 Homebrew 2.2.0 announcement中提到了这一点。

从源代码自己构建和安装 OpenSSL 1.0.2 相当简单。您可以从Old 1.0.2 Releases 页面下载所需的版本,然后按照INSTALL 中的说明进行操作。


也可以恢复旧的公式并从中安装,但我不能保证它的效果如何。以下步骤确实完成了安装过程:

$ git clone https://github.com/Homebrew/homebrew-core.git
$ cd homebrew-core
$ git checkout 75b57384 Formula/openssl.rb
$ brew install Formula/openssl.rb

对我来说,这表明:

Warning: openssl 1.1.1d is available and more recent than version 1.0.2m.
==> Downloading https://homebrew.bintray.com/bottles/openssl-1.0.2m.high_sierra.bottle.tar.gz

然后愉快地继续前进。最后的快速尝试让人相信它运行良好:

$ /usr/local/opt/openssl/bin/openssl version
OpenSSL 1.0.2m  2 Nov 2017

如果您不想直接使用git,也可以尝试下载该版本的openssl.rb from gitHub.com 并在其上运行brew install


如果您想知道那个提交哈希是从哪里来的,我碰巧知道这个公式曾经被称为 -- 惊喜 -- openssl.rb(但使用 git 来查询已删除的文件也可以)。因此,我查看了Formula/openssl.rb 的历史记录,发现:

$ git log -- Formula/openssl.rb
...
commit 75b573845a17aaf3f7c84dc58e97cf5fe39a502b
Author: BrewTestBot <brew-test-bot@googlegroups.com>
Date:   Thu Nov 2 17:20:33 2017 +0000

    openssl: update 1.0.2m bottle.

【讨论】:

我花了很长时间才找到可行的解决方案 - 非常感谢! 非常感谢!我在这个问题上浪费了两天时间:( 使用来自***.com/a/61368160/2551154 的 rbenv/tap/openssl@1.0 是一个更好的解决方案,因为它安装为 openssl@1.0 并且不太可能与其他软件包发生冲突。检出旧版本的 openssl.rb 可能会导致冲突。【参考方案2】:

最近由于 openssl 版本从 1.0 到 1.1 的最新更新而苦苦挣扎,并且想将其恢复为旧版本。除了下面给出的解决方案之外,没有其他解决方案对我有用:

brew install rbenv/tap/openssl@1.0 rvm reinstall 1.9.3-p551 --with-openssl-dir='/usr/local/opt/openssl@1.0' gem update --system

【讨论】:

第一个命令单独为我工作,尽管我必须手动修复 /usr/local/opt/openssl/lib 中的符号链接才能被拾取。 太棒了。帮了我很多! @LarsMariusGarshol 如果您不关心也有可用的 OpenSSL 1.1,那就可以了。 我还必须修复符号链接,我知道下次MacOS更新时我必须回到这里,所以我将粘贴符号链接命令ln -s /usr/local/opt/openssl@1.0 /usr/local/opt/openssl【参考方案3】:

除了下载特定版本的Formula/openssl.rb,您还可以使用here 中提到的具有特定提交SHA 的文件的原始引用。

所以对于 1.0.2t 版本的最后更新,SHA 是 8b9d6d688f483a0f33fcfc93d433de501b9c3513

commit 8b9d6d688f483a0f33fcfc93d433de501b9c3513
Author: BrewTestBot <homebrew-test-bot@lists.sfconservancy.org>
Date:   Sat Sep 28 19:38:49 2019 +0000

    openssl: update 1.0.2t bottle.

所以我会执行以下命令来安装 1.0.2t。

brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/8b9d6d688f483a0f33fcfc93d433de501b9c3513/Formula/openssl.rb

【讨论】:

对我来说,该命令导致错误:"Calling Installation of openssl from a GitHub commit URL is disabled! Use 'brew extract openssl' to stable tap on GitHub instead." :/【参考方案4】:

1- 下载文件:

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

2 - 使用下载的文件运行 brew:

brew install openssl.rb

【讨论】:

这成功了!我必须首先通过“brew install wget”安装 wget,它在此过程中更新了很多软件包。然后我能够“brew switch openssl 1.0.2t” 附加评论(超过 500 万无法编辑)。对于 php5.6(不幸的是,旧项目仍然需要,不要问),我还必须“wget raw.githubusercontent.com/Homebrew/homebrew-core/…”来获取 icu4c 64.2 并使用“brew switch icu4c 64.2”切换到它。【参考方案5】:

其他解决方案将不起作用,因为您将收到此错误"Calling Installation of openssl from a GitHub commit URL is disabled! Use 'brew extract openssl' to stable tap on GitHub instead.",以下步骤将解决它:

    先去本地安装homebrew
cd /usr/local/Homebrew/
    Homebrew 2.5 删除了直接从 git repos 安装公式的选项,因此我们需要检查旧版本
git checkout 2.3.0
    安装 openssl 最新 1.0.x 版本
HOMEBREW_NO_AUTO_UPDATE=1 brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb
    返回当前版本的自制软件
git co -
    告诉 brew 使用旧版本的 openssl 这样你就可以选择使用哪个版本,如果你都安装了
brew switch openssl 1.0.2t

【讨论】:

cocheckout 的常用别名。如果您还没有设置,请运行git checkout -o 以切换到当前版本的自制软件。 更好的解决方案就是使用:brew install rbenv/tap/openssl@1.0【参考方案6】:

更新 - 我想我一直在投票,因为我只是发布了一个没有解决方案的链接。所以这里是解决方案:

下载 OpenSSL V1.0 的 this 公式(已修补以与 arm64 处理器一起使用) 安装它brew install openssl@1.0.rb 将此版本添加到 PATH 的开头。 注意:确保 RVM 是您的 shell 配置文件 (.zshrc / .bashrc) 中的最后一个 PATH 变量更改echo 'export PATH="/opt/homebrew/opt/openssl@1.0/bin:$PATH"' &gt;&gt; ~/.zshrc 导出一些需要的环境变量
 export LDFLAGS="-L/opt/homebrew/opt/openssl@1.0/lib"
 export CPPFLAGS="-I/opt/homebrew/opt/openssl@1.0/include"
 export PKG_CONFIG_PATH="/opt/homebrew/opt/openssl@1.0/lib/pkgconfig"
重新加载你的shell配置source ~/.zshrc 验证您的 openssl 版本
> openssl version
OpenSSL 1.0.2u  20 Dec 2019
禁用 RVM 自动库rvm autolibs disable 导出一些环境变量以避免编译错误
export RUBY_CFLAGS=-DUSE_FFI_CLOSURE_ALLOC
export optflags="-Wno-error=implicit-function-declaration"
安装 Ruby
rvm install 2.3.0 --with-openssl-dir=/opt/homebrew/opt/openssl@1.0

Ref

【讨论】:

【参考方案7】:

也许这不是一个完美的主意,但它解决了我的问题(找不到 libssl.1.0.0.dylib 图像):

sudo ln -s /usr/lib/libssl.dylib /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
sudo ln -s /usr/lib/libcrypto.dylib /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib

希望它对你有用!

见this reply

【讨论】:

不要这样做!使用系统库的符号链接是危险的。 MacOS 的新版本也使用 LibreSSL 而不是 OpenSSL。使用:brew install rbenv/tap/openssl@1.0【参考方案8】:

这是 openssl@1.0.2 的 linux-brew 公式

brew install https://raw.githubusercontent.com/Homebrew/linuxbrew-core/20ab55b304597c6c47149dc0e50bd5f7ea45b678/Formula/openssl.rb

【讨论】:

以上是关于macOS 上的 OpenSSL 1.0.2m的主要内容,如果未能解决你的问题,请参考以下文章

openssl安装与使用(MacOS)

openssl安装与使用(MacOS)

openssl安装与使用(MacOS)

如何为特定部署 macOS 版本编译 OpenSSL 库?

在 MacOS Sierra 上找不到 OpenSSL

macOS Big Sur下pecl安装swoole报需要openssl库解决方法