centos7 arm服务器编译安装openssl 1.1.1版本

前言

        在centos7中,默认安装的openssl版本是1.0.2,太低了,在python项目开发中,由于需要用到requests包,这时候就会出现如下错误“ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+”:

解决办法就只能通过升级openssl到1.1.1版本。

解决

文章最后提供一份免安装的openss1.1.1压缩包,只需要解压后建立软连接。

 1、环境准备

下载openssl1.1.1版本:下载地址

也可以通过wget命令下载,注意由于是https请求,需要添加--no-check-certificate

wget --no-check-certificate https://www.openssl.org/source/openssl-1.1.1t.tar.gz
2、解压
tar -xvf openssl-1.1.1t.tar.gz
3、构建
cd openssl-1.1.1t/
./config enable-ssl3 shared --prefix=/usr/local/openssl-1.1.1/

这里添加enable-ssl3 shared的目的:

OpenSSL 1.1.0 版本之后,默认禁用了SSLv3协议,只支持TLSv1.0及以上版本。但Python在构建ssl模块时,仍然需要SSLv3的支持。所以在编译OpenSSL时需要显式添加enable-ssl3配置来启用SSLv3协议。

如果不添加这个配置,编译Python时会出现您遇到的错误:

Could not build the ssl module! 
Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().

这是因为Python试图调用OpenSSL的X509_VERIFY_PARAM_set1_host()函数,但这个函数是在OpenSSL 1.0.2版本引入的。而默认编译的OpenSSL 1.1.0及以上版本又禁用了SSLv3,所以Python无法构建ssl模块。

1、它会启用SSLv3协议,这样Python可以调用OpenSSL的SSLv3相关函数来构建ssl模块。
2、它会构建OpenSSL的早期兼容版本,这样Python可以调用像X509_VERIFY_PARAM_set1_host()这样的函数。

4、编译
make && make install
5、编译成功后建立软连接
# 备份系统的openssl
mv /usr/bin/openssl /usr/bin/oopenssl.bak

ln -s /usr/local/openssl-1.1.1/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl-1.1.1/lib/libssl.so.1.1 /usr/lib64/
ln -s /usr/local/openssl-1.1.1/lib/libcrypto.so.1.1  /usr/lib64/
export LD_LIBRARY_PATH=/usr/local/oepnssl-1.1.1/lib:$LD_LIBRARY_PATH
6、版本验证
openssl version

如下图:

完毕!!!

下载地址:centos7的arm服务器编译后的openssl-1.1.1

这里提供一份编译后的openssl-1.1.1压缩包,理论上可以只需要直接进行上面5、6步,就可以升级成功,当然这种方式慎用,有问题在正常按教程编译。

你可能感兴趣的:(aarch64Linux,服务器,运维)