CentOS7编译安装OpenSSL v1.1.1

3,259 阅读1分钟

CentOS7编译安装OpenSSL v1.1.1

1. 背景

使用pip安装urllib3一直报错: "ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with OpenSSL 1.0.2k-fips"。 决定进行OpenSSL版本升级到1.1.1+。

  • CentOS 7默认仅支持OpenSSL 1.0.2版本,因此没办法原生支持很多新版本的特性,比如TLS 1.3等。事实上,OpenSSL已经官方淘汰了老版本的1.0.2支持。
  • 很多内置的环境都依赖老版本的OpenSSL 1.0.2, 因此安装OpenSSL 1.1.1之后可能会导致系统里其他组件失效或损坏,建议备份好数据后谨慎操作。

2. 升级OpenSSL步骤

升级OpenSSL版本到1.1.1+需要编译安装,以下是具体步骤:

  1. 下载OpenSSL源代码。

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

    这里我们使用的是最新版本,也可以选择其他版本。

  2. 解压源代码包。

    tar -zxvf latest.tar.gz
    tar zxvf openssl-1.1.1g.tar.gz  
    cd openssl-1.1.1
    
  3. 编译安装OpenSSL。

    ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib
    make -j 8 
    make install
    

    --prefix=/usr/local/openssl ,表示将OpenSSL安装在/usr/local/openssl

    shared zlib ,表示编译OpenSSL时启用动态链接库和zlib压缩库支持。

  4. 配置环境变量。

    echo "export PATH=/usr/local/openssl/bin:$PATH" >> /etc/profile
    echo "export LD_LIBRARY_PATH=/usr/local/openssl/lib:\$LD_LIBRARY_PATH" >> /etc/profile
    source /etc/profile
    
  5. 验证OpenSSL版本号。

    openssl version
    #如果成功安装,则会输出类似于以下的版本号:
    OpenSSL 1.1.1g  21 Apr 2020
    

升级OpenSSL版本可能会导致一些问题,建议在备份系统后进行操作,并在升级前仔细考虑是否必要升级。

5. python安装urllib3

wget 'https://www.python.org/ftp/python/3.8.16/Python-3.8.16.tar.xz' .
tar xvJf Python-3.8.16.tar.xz
cd Python-3.8
./configure --prefix=/usr/local/python-3.8 --with-ssl=/usr/local/openssl/lib  
make -j 8
make install

#pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
#/usr/local/python/bin/pip3.8  install --upgrade pip 

pip3.8  install urllib3
pip3.8  install openai