1. 简介

OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。

2. 查看当前版本OpenSSL路径

which openssl     //查看当前使用的openssl,因为需要在升级openssl之后,我们需要使用软链接将其链接回此路径

0fdf1ad5e349f1b45a788553062f3226.png

方法一源码手动安装步骤:

依赖安装

注意:安装openssl依赖于zlib和perl-CPAN,否则会报下方3.3步骤中的错误

zlib的安装可以点击:详解CentOS 8.2图文源码安装zlib 1.2.11

perl-CPAN的安装:yum install -y perl-CPAN

3.1 获取安装包

在http://www.openssl.org/source/上可以获取当前最新的版本,

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

如果以上地址无法下载或者下载慢的话,可以从以下地址下载对应的openssl文件并且上传到个人服务器进行后续操作

http://download.youceba.com/dir/25806543-41266762-c1884c

3.2 解压

tar -xzvf openssl-1.1.1h.tar.gz

cd openssl-1.1..1h

3.3 配置

./config –help

# 配置参数选项

–openssldir=OPENSSLDIR #配置文件目录,默认是/usr/local/ssl

–prefix=DIR #安装目录,默认为 openssldir目录

[no-]threads #是否编译支持多线程的库。默认支持

[no-]shared #是否生成动态连接库。默认生成的是静态库。

我的配置选项命令是:

./config shared –openssldir=/data/install/openssl –prefix=/data/install/openssl

一定记得加上–shared选项, 否则openssh编译的时候会找不到新安装的openssl的library, 会报错: openssl的 header和library版本不匹配,如图示:

4df2c10d1d4fb08865b56730569e8b67.png

如果是干净的系统安装的话,报错如下,缺少依赖库perl-CPAN:

[root@iZ2ze5w0d1f4lq5p7d2wh0Z openssl-1.1.1h]# ./config shared --openssldir=/data/install/openssl --prefix=/data/install/openssl
Operating system: x86_64-whatever-linux2
Configuring OpenSSL version 1.1.1h (0x1010108fL) for linux-x86_64
Using os-specific seed configuration
Creating configdata.pm
Creating Makefile
Can't locate Getopt/Long.pm in @INC (you may need to install the Getopt::Long module) (@INC contains: . /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at configdata.pm line 15524.
BEGIN failed--compilation aborted at configdata.pm line 15524.
Compilation failed in require.
BEGIN failed--compilation aborted.

解决方案:见上述“依赖安装”注意事项

3.4 编译和安装

make && make install

3.5 修改系统配置,写入openssl库文件的搜索路径

  • 查看openssl的路径

which openssl

  • 查看依赖的库,ldd后面跟which openssl查询出的路径

譬如:ldd /usr/bin/openssl

9b9298759fe32a16ebe203fb295e8da7.png

如果有错误信息的话,譬如没有找到openssl的链接库(libssl.so.1.1、libcrypto.so.1.1)并且执行openssl version也会报错:

error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

或者显示的版本不是自己安装的版本的话,譬如显示如下:

OpenSSL 1.1.1c FIPS 28 May 2019

那么就需要进行以下操作:

  • 添加内容,将源码编译的openssl路径下的lib加入到默认搜索路径: /data/install/openssl/lib到/etc/ld.so.conf文件中

echo “/data/install/openssl/lib/” >> /etc/ld.so.conf

  • 使修改后的/etc/ld.so.conf生效

ldconfig -v

OpenSSL在编译安装时自带了其依赖的库文件,默认系统会到/usr/lib、/usr/lib64下寻找所有的库文件,系统中默认是没有上述两个库的,需要将OpenSSL自带的库加入到系统环境。

  • 设置openssl命令的软链接

mv /usr/bin/openssl /usr/bin/openssl.old

ln -s /data/install/openssl/bin/openssl  /usr/bin/openssl

  • 验证是否安装成功

openssl version -a

1f8905cd6d59b6acf281c7eadb97de97.png

方法二安装:

yum -y install openssl openssl-devel

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐