linux Centos升级openssl
1. 下载安装wget
yum -y install wget
2. 获取openssl源码包
wget https://www.openssl.org/source/openssl-1.1.1t.tar.gz
# 或前往官方下载后使用xftp传入服务器
# 官方链接:https://www.openssl.org/source/
3. 安装openssl 所需依赖
yum -y install gcc gcc-c++ openssl-devel libstdc++* libcap* wget pam-devel zlib-devel perl
4. 解压编译openssl
# 解压下载好的openssl源码包并进入其目录
tar -vxf openssl-1.1.1t.tar.gz
第一个方法
cd openssl-1.1.1t
# 配置
./config --prefix=/usr/local/openssl threads zlib shared enable-camellia
# --prefix : 指定安装目录
# threads/no-threads : 是否编译支持多线程的库。默认支持。
# zlib | zlib-dynamic | no-zlib : 使用静态的zlib压缩库 | 使用动态的zlib压缩库 | 不使用zlib压缩功能。
# shared | no-shared : 是否生成动态连接库。
# enable-camellia : 算法
# 编译安装
make && make install
5. 替换旧版openssl
# 备份旧版openssl
mv /usr/bin/openssl /usr/bin/openssl.bak-$(date +%m%d)
# 新版openssl软链接到旧openssl位置
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
# /etc/ld.so.conf 文件记录了编译时使用的动态链接库的路径,告诉链接器去哪个路径下寻找链接时需要用到的库,如果找不到,就会提示链接错误。
echo "/usr/local/openssl/lib">>/etc/ld.so.conf
# ldconfig 命令用于在默认搜寻目录 /lib 和 /usr/lib 以及动态库配置文件 /etc/ld.so.conf 内所列的目录下,搜索出可共享的动态链接库。
ldconfig
6. 查看openssl版本
openssl version
注:
安装完openssl后使用 ssh -V 查看依然是旧版openssl, 是因为openssh是rpm/yum安装的调用的openssl依旧是旧版,不影响使用。
如果看不顺眼可以编译升级新版openssh解决。
第二个方法
mv openssl-1.1.1t /usr/local/openssl
# 进入解压后的openssl文件夹
cd /usr/local/openssl
# 将openssl安装在/usr/local/openssl
./config threads zlib shared enable-camellia
# 编译安装
make && make install
查找一下libssl.so.1.1的位置,然后连接到/usr/lib64/libssl.so.1.1即可。如下我的位置是在/usr/local/lib64/libssl.so.1.1,连接到/usr/lib64/libssl.so.1.1就可以了。
[root@localhost ~]# find / -name libssl.so.1.1
/usr/local/lib64/libssl.so.1.1
[root@localhost ~]# ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
[root@localhost ~]# ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
[root@localhost ~]# openssl version
OpenSSL 1.1.1t
下面是详细版步骤
1. 查看Linux 系统版本
[root@bogon ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
图 1 查看Linux系统版本
2. 查看openssl版本
[root@bogon ~]# openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017
图 2 查看openssl版本
3. 查看openssl路径
[root@bogon ~]# which openssl
/usr/bin/openssl
图 3 查看openssl路径
4. 下载Openssl
目前最新版本是1.1.1,可以通过修改版本号的方式下载最新版本,最新版本可以在这个网站下载:
[root@bogon ~]# wget http://www.openssl.org/source/openssl-1.1.1t.tar.gz
tar -zxvf openssl-1.1.1t.tar.gz
图 4 下载openssl-1.1.1t.tar.gz
5. 安装依赖
[root@bogon ~]# yum install -y zlib
[root@bogon ~]# yum install –y zlib-devel
[root@bogon ~]# yum install –y gcc
6. 安装Perl
6.1. 下载Perl
官方网站下载新版本的源码包:
wget https://www.cpan.org/src/5.0/perl-5.36.0.tar.gz
[root@bogon ~]# wget https://www.cpan.org/src/5.0/perl-5.37.9.tar.gz
图 5 下载perl-5.37.9.tar.gz
6.2. 解压Perl
[root@bogon ~]# tar -zxvf perl-5.37.9.tar.gz
6.3. 建立文件目录,以供安装时使用
[root@bogon ~]# mkdir /usr/local/perl
6.4. 配置Perl参数
进入perl-5.37.9.tar.gz的解压目录,执行:
[root@bogon ~]# cd perl-5.37.9
[root@bogon perl-5.37.9]# ./Configure -des -Dprefix=/usr/local/perl -Dusethreads –Uversiononly
6.5. 编译
[root@bogon perl-5.37.9]# make && make install
6.7. 查看版本
[root@bogon perl-5.37.9]# perl –v
图 6 查看perl版本
7. 安装Openssl
7.1. 解压Openssl
[root@bogon perl-5.28.2]# cd
[root@bogon ~]# tar -zxvf openssl-1.1.1t.tar.gz
7.2. 调用zlib共享库
[root@bogon ~]# cd openssl-1.1.1t
[root@bogon openssl-1.1.1t]# ./config --prefix=/usr/local/openssl shared zlib
图 7 配置openssl
7.3. 编译
[root@bogon openssl-1.1.1b]#make && make install
7.5. 备份当前Openssl
[root@bogon openssl-1.1.1b]# mv /usr/bin/openssl /usr/bin/openssl.bak-$(date +%m%d)
[root@bogon openssl-1.1.1b]# mv /usr/lib64/openssl /usr/lib64/openssl.bak-$(date +%m%d)
7.6. 使用新版Openssl
[root@bogon openssl-1.1.1b]# ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
[root@bogon openssl-1.1.1b]# ln -s /usr/local/openssl/include/openssl/ /usr/include/openssl
8. 更新动态链接库数据
[root@bogon openssl-1.1.1b]# echo "/usr/local/openssl/lib/" >> /etc/ld.so.conf
9. 重新加载动态链接库
[root@bogon openssl-1.1.1b]# ldconfig -v
10. 查看安装后最新版本
[root@bogon openssl-1.1.1b]# openssl version
[root@bogon openssl-1.1.1b]# openssl version -a
图 8 openssl版本查看
11. 可能存在的异常
openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
这是由于openssl库的位置不正确造成的。
解决方法:
在root用户下执行:
ln -sf /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -sf /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1