参考资料 https://help.aliyun.com/document_detail/52154.html https://www.cnblogs.com/xyb930826/p/6077348.html

1、更新源

对于阿里云的 Linux/CentOS 服务器,以 root 权限运行以下命令:

  1. sudo yum update openssl

对于 Ubuntu Server/Debain 服务器,以 root 权限运行以下命令:

  1. sudo apt-get update
  2. sudo apt-get upgrade

2、使用编译安装更新 OpenSSL

下载最新版本 OpenSSL(以 openssl-1.1.1l 为例)。

  1. wget https://www.openssl.org/source/openssl-1.1.1l.tar.gz
  2. tar zxvf openssl-1.1.1l.tar.gz
  3. cd openssl-1.1.1l

2.1、默认路径安装

  1. ./config shared zlib
  2. make
  3. make install

2.2、指定路径安装

适用于第三方模块安装,如pyhton需要openssl的时候
./configure--prefix=/usr/local/python3 --with-openssl=/usr/local/openssl-1.1.1l

  1. ./config --prefix=/usr/local/openssl-1.1.1l shared zlib
  2. make
  3. make install

3、替换旧版 OpenSSL

  1. mv /usr/bin/openssl /usr/bin/openssl.old
  2. mv /usr/include/openssl /usr/include/openssl.old
  3. ln -s /usr/local/bin/openssl /usr/bin/openssl
  4. ln -s /usr/local/include/openssl/ /usr/include/openssl

4、检查 OpenSSL 版本

  1. openssl version -a

系统会返回 OpenSSL 版本信息,如下所示。

  1. OpenSSL 1.1.1l 24 Aug 2021
  2. built on: Mon Sep 27 11:15:23 2021 UTC
  3. platform: linux-x86_64
  4. options: bn(64,64) rc4(16x,int) des(int) idea(int) blowfish(ptr)
  5. compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DZLIB -DNDEBUG
  6. OPENSSLDIR: "/usr/local/ssl"
  7. ENGINESDIR: "/usr/local/lib64/engines-1.1"
  8. Seeding source: os-specific

遇到的安装问题

在Centos7上编译安装openssl后,运行openssl version出现如下错误:
openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
这是由于openssl库的位置不正确造成的。
解决方法:

  1. ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
  2. ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1