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
    wgethttps://www.openssl.org/source/openssl-1.1.1g.tar.gz  
    

    这儿我们运用的是最新版别,也能够挑选其他版别。

  2. 解压源代码包。

    tar -zxvf latest.tar.gz
    tarzxvf openssl-1.1.1g.tar.gz  
    cdopenssl-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