在安装python以及各种模块时发现,经常会报出ssl版本不支持错误,后面发现原因:
本地openssl 1.0.1以下的版本不支持TLSV1.1 TLSV1.2(出于安全考虑,很多被调用的HTTPS已经不支持TLSV1.1以下的版本了)
所以解决方式是吧openssl版本要大于等于1.0.1
备注:进入http://www.openssl.org/source/ 查看最新版本
1、将下载的压缩包放在根目录,
2、在文件夹下解压缩,命令:tar -xzf openssl-1.0.2j.tar.gz,得到openssl-1.0.2j文件夹
3、进入解压的目录:cd openssl-1.0.2j
4、设定Openssl 安装,( --prefix )参数为欲安装之目录,也就是安装后的档案会出现在该目录下:
执行命令: ./config --prefix=/usr/local/openssl
5、执行命令./config -t
6.执行make,编译Openssl
这里如果出现如下错误
make[1]: gcc: Command not found
上网查才发现我安装的CentOS7中没有GCC编译器
保证系统网络畅通以后,执行命令 yum -y install gcc 安装GCC(注意,一定要忘了顺畅,不然安装不了)
7、安装 Openssl:
make install
8、执行以下命令
[root@localhost /]# cd /usr/local
[root@localhost local]# ldd /usr/local/openssl/bin/openssl
会出现类似如下信息:
9、查看路径
...]# which openssl
查看版本
...]# openssl version
升级openssl环境至openssl-1.0
1、查看源版本
[root@zj ~]# openssl version -a
OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
2、下载openssl-1.0.2k.tar.gz
wget http://www.openssl.org/source/openssl-1.0.2k.tar.gz
3、更新zlib
yum install -y zlib
4、解压安装
tar zxf openssl-1.0.2k.tar.gz
cd openssl-1.0.2k
./config shared zlib
make
make install
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
echo “/usr/local/ssl/lib” >> /etc/ld.so.conf
ldconfig -v
5、查看是否升级成功
[root@zj ~]# openssl version -a
OpenSSL 1.0.1g 7 Apr 2014
openssl已经安装的情况下,python从2.0升级到3.0的版本,发现python3.0版本无法导入ssl模块,python2.0版本正常,
原因就是python3在安装的过程中无法使用openssl,根据网上的一些博客的做法,要进入到python源码包解压后的那个目录下的Modules/Setup,注意Setup这个文件,只有在python完成安装后才会生成这个文件。
1、先查看openssl安装包,是否发现缺少openssl-devel包
[root@localhost ~]# rpm -aq|grep openssl
openssl-0.9.8e-20.el5
openssl-0.9.8e-20.el5
[root@localhost ~]#
2、如果缺少,使用yum安装openssl-devel
[root@localhost ~]# yum install openssl-devel -y
查看安装结果
[root@localhost ~]# rpm -aq|grep openssl
openssl-0.9.8e-26.el5_9.1
openssl-0.9.8e-26.el5_9.1
openssl-devel-0.9.8e-26.el5_9.1
openssl-devel-0.9.8e-26.el5_9.1
3、重新编译python
修改Setup文件
vi /usr/local/Python-3.6.3/Modules/Setup
找到下面这一块并修改:
#Socket module helper for socket(2)
_socket socketmodule.c timemodule.c
#Socket module helper for SSL support; you must comment out the other
#socket line above, and possibly edit the SSL variable:
SSL=/usr/local/ssl
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
然后重新编译:
make
make install
问题便解决了