linux下安装/升级openssl且python3.0版本无法导入ssl模块

问题1:

在安装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

 


问题2:

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

问题便解决了

 

 

你可能感兴趣的:(linux,python,linux,openssl)