如何安装 OpenSSL 1.1.1 和 libSSL 包?

如何安装 OpenSSL 1.1.1 和 libSSL 包?

我想使用 OpenSSL1.1.1 版本进行代码开发。目前我在 Ubuntu 18.04 机器上使用 Openssl 1.1.0g。

如果我使用命令下载软件包sudo apt install libssl-dev,那么我会得到 OpenSSL 1.1.0g 版本,

如果我使用命令下载软件包sudo apt install libssl1.0-dev,那么我会得到 OpenSSL 1.0.2n 版本,

如何下载 OpenSSL 1.1.0 和 libssl 包?

注意:我不想单独下载 OpenSSL 包并在外部构建它。我应该使用 Ubuntu 包下载。

答案1

事实上你的问题是重复的,同样的问题已经出现在在 Ubuntu 18.04 中将 openssl 1.1.0 升级到 1.1.1

正如@Kevin Bowen 所回答的那样,openssl 1.1.1 不在当前的 Ubuntu 存储库中,您需要手动下载、编译和安装最新的 OpenSSL 版本。

我在本节开头也建议了同样的事情comments。我总是喜欢安装在 中/opt,所以我也在本comments节中建议了这一点。

如果你不想做,那么你将永远被困住!

什么是 OpenSSL?

OpenSSL 是一个命令行加密工具包,实现了安全套接字层(SSL v2/v3)和传输层安全性(TLS v1)网络协议以及它们所需的相关加密标准。

大多数使用TLS / SSL协议的网络通信应用程序和工具可能都安装了一些 OpenSSL 工具。如果您要使用依赖于最新版本 OpenSSL 的应用程序和软件包,则可能必须在 Ubuntu 系统上手动安装它。

OpenSSL 依赖于 OpenSSL 项目的两个重要库:

  • 为 SSLv3 和 TLS 提供客户端和服务器端实现。
  • 库加密提供 SSL/TLS 所需的通用加密和 X.509 支持,但从逻辑上讲不是其一部分。

Ubuntu 自带的 OpenSSL 默认工具包不是最新的。要获取最新版本,您必须自行下载并安装

openssl 1.1.1b在 Ubuntu 18.04 上安装最新版本的指南。

步骤1 :下载 openssl 1.1.1b

从 Ubuntu 源包下载最新的 openssl 1.1.1b 版本...

OpenSSL 加密和 SSL/TLS 工具包

在此处输入图片描述 Figure-1: Download openssl 1.1.1b

您还可以通过运行以下命令轻松安装 openssl 1.1.1b 包...

获得 https://www.openssl.org/source/openssl-1.1.1b.tar.gz

第2步 :从 tar.gb 包安装 Openssl

现在创建/opt/openssl目录:

$ sudo mkdir /opt/openssl 在此处输入图片描述 Figure-2: Create folder for openssl under /opt directory.

现在您已经将适合您系统的正确存档包下载到~/Downloads文件夹中,请运行以下命令进行安装Openssl

$ sudo tar xfvz ~/Downloads/openssl-1.1.1b.tar.gz --directory /opt/openssl

在此处输入图片描述 Figure-3: Extraction into /opt/openssl is complete.

$ perl --version 在此处输入图片描述 Figure-4: Perl version.

导出LD_LIBRARY_PATH具有以下值的环境变量:

$ export LD_LIBRARY_PATH=/opt/openssl/lib

通过以下命令验证是否LD_LIBRARY_PATH设置了正确的值:

$ echo $LD_LIBRARY_PATH

在此处输入图片描述 Figure-5: Value of environment variable LD_LIBRARY_PATH is /opt/openssl/lib.

发出config命令:

 $ cd /opt/openssl/openssl-1.1.1b
 $ sudo ./config --prefix=/opt/openssl --openssldir=/opt/openssl/ssl

在此处输入图片描述 Figure-6: config command

接下来发出make命令:

$ sudo make

发出make test命令检查可能的错误:

$ sudo make test

在此处输入图片描述 Figure-7: Bingo! All tests successful.

发出make install命令:

$ sudo make install

openssl二进制位于哪里?

发出以下命令:

$ sudo updatedb                              # rebuild library cache
$ locate openssl | grep /opt/openssl/bin

在此处输入图片描述 Figure-8: Locate openssl binary.

该目录/usr/bin还包含一个早期版本的二进制文件。这个二进制文件openssl的存在会给我们带来麻烦,所以我们必须检查一下!unwanted openssl/usr/bin/openssl

发出以下命令来处理/usr/bin/openssl二进制:

$ cd /usr/bin
$ ls -l openssl
$ sudo mv openssl openssl.old       # rename earlier version openssl to openssl.old

在此处输入图片描述 Figure-9: Rename earlier version of openssl binary to openssl.old.

步骤3:设置PATH环境变量

Openssl需要设置PATH环境变量,设置方式如下图所示。

openssl.sh在目录下创建一个名为的文件/etc/profile.d/

$ sudo touch /etc/profile.d/openssl.sh
$ sudo vi /etc/profile.d/openssl.sh

添加以下内容:

#!/bin/sh
export PATH=/opt/openssl/bin:${PATH}
export LD_LIBRARY_PATH=/opt/openssl/lib:${LD_LIBRARY_PATH}

保存并关闭文件。使用以下命令使其可执行。

$ sudo chmod +x /etc/profile.d/openssl.sh

然后,通过运行以下命令永久设置环境变量:

 $ source /etc/profile.d/openssl.sh

注销或重新启动系统。

现在,检查PATH环境变量:

$ echo $PATH

在此处输入图片描述 Figure-10: PATH envirnement variable having /opt/openssl/bin directory

$ which openssl 在此处输入图片描述 Figure-11: The binary 'openssl' is under '/opt/openssl/bin' directory

现在,检查openssl version使用命令:

$ openssl version

在此处输入图片描述 Figure-12: openssl latest version

现在,使用命令行工具检查 openssl 版本:

$ openssl

在此处输入图片描述 Figure-13: Check version through 'openssl' command line.

LD_LIBRARY_PATH如果设置不正确会发生什么情况?

$ openssl

在此处输入图片描述 Figure-14: Error thrown by 'openssl' command line when 'LD_LIBRARY_PATH' is not properly set.

如上所述Step-3,您必须设置LD_LIBRARY_PATH为正确的值,即 /opt/openssl/lib

$ export LD_LIBRARY_PATH=/opt/openssl/lib:$LD_LIBRARY_PATH

概括:

此方法手动下载、提取、编译和安装最新的 OpenSSL 版本 1.1.1b。

答案2

请在 Ubuntu 22.04 上执行此操作。我通过发出这些命令解决了相同的问题。

#wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.16_amd64.deb
#dpkg -i libssl1.1_1.1.1f-1ubuntu2.16_amd64.deb 

答案3

在 Ubuntu 20.04 上,我想从 1.1.1g 升级到 1.1.1l,但它尚未在其官方存储库中提供。在此过程中,我在升级后尝试使用 wget 时遇到了一个错误,即 openssl 无法验证发行者的权限。

最终我让所有东西都运行起来,以下是命令。

cd ~; mkdir /opt/openssl; mkdir /opt/openssl/ssl; sudo ln -s /etc/ssl/certs /opt/openssl/ssl/certs;
wget https://www.openssl.org/source/openssl-1.1.1l.tar.gz;
wget https://www.openssl.org/source/openssl-1.1.1l.tar.gz.sha256;
tar -zxf openssl-1.1.1l.tar.gz --directory /opt/openssl;
cd /opt/openssl/openssl-1.1.1l;
./config --prefix=/opt/openssl --openssldir=/opt/openssl/ssl;
make;
make test;
sudo make install;
mv /usr/bin/openssl /usr/bin/openssl-1.1.1g;
ln -s /usr/local/bin/openssl /usr/bin/openssl;
ldconfig;

touch /etc/profile.d/openssl.sh;
echo '#!/bin/sh' > /etc/profile.d/openssl.sh;
echo 'export PATH=/opt/openssl/bin:${PATH}' >> /etc/profile.d/openssl.sh;
echo 'export LD_LIBRARY_PATH=/opt/openssl/lib:${LD_LIBRARY_PATH}' >> /etc/profile.d/openssl.sh;

chmod +x /etc/profile.d/openssl.sh; source /etc/profile.d/openssl.sh;
sudo updatedb;
openssl version;

然后进行测试并确保没有出现任何错误:

wget https://www.openssl.org/source/openssl-1.1.1l.tar.gz.sha256

答案4

尝试在 Ubuntu 22.04 上实现此操作,因为我正在安装需要 openssl1.1.1 的软件包。Ubuntu 22.04 附带 openssl3.x。我看到未找到 libcrypto.so.1.1 和 libssl.so.1.1 的错误。

我按照接受的答案,但重启后路径没有保留。我按照已接受答案中的步骤解决了这个问题 -如何安装 OpenSSL 1.1.1 和 libSSL 包?,然后将其与此处的解决方案相结合 -https://stackoverflow.com/questions/8501163/error-while-loading-shared-libraries-libpcre-so-0-cannot-open-shared-object-f#answer-69936048

按照上述步骤操作,然后;

  • 在默认路径中将 libssl.so.1.1 和 libcrypto.so.1.1 与 libssl.so.3 和 libcrypto.so.3 进行符号链接
  • ln -s /opt/openssl/lib/libssl.so.1.1 /usr/lib/x86_64-linux-gnu/libssl.so.1.1
  • ln -s /opt/openssl/lib/libcrypto.so.1.1 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1

相关内容