我想使用 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 版本...
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
接下来发出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