在 jenkins 上执行接口自动化脚本时,会报 “Can't connect to HTTPS URL because the SSL module is not available” 的错误。
原因:通常我们的的接口是 https 协议的,python 执行 https 请求时,需要用到 SSL。而 python 不会自动使用系统的 SSL,而是用自己的,所以,我在 jenkins 的服务器上安装了 openssl,依然会报这个错。
查了许多资料,理出了原因,找到了解决方法。
python 有个 Setup 配置文件,在它的 socket module 配置项中默认指定了 SSL 的目录为 “/usr/local/ssl”,而实际上我把 openssl 安装在了 /usr/local/openssl-1.0.2r 目录下。 知道原因后,就容易解决了。
一、如果你还没安装 openssl,先做如下操作。
cd /usr/local/openssl-1.0.2r #进入openssl目录
./config --prefix=/usr/local/openssl-1.0.2r --openssldir=/usr/local/openssl-1.0.2r
make
make install
二、修改 python 的 ssl 目录,重新编译安装 python(之前已经安装过 python3 了):
先修改 ssl 目录,进入到 “Python-X.X.X/Modules” (X.X.X 是你安装的 python 版本号),编辑 Setup 文件,找到如下配置:
把注释去掉(去掉前面的 #),修改 ssl 的默认路径:
_socket socketmodule.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/openssl-1.0.2r #修改openssl目录
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
重新编译安装 python3:
cd ~/Python-X.X.X #进入python安装目录
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/openssl-1.0.2r/lib
./configure --prefix=/usr/local/python3 --with-openssl=/usr/local/openssl-1.0.2r #/usr/local/python3 是我python3的安装目录
make
make install
执行成功后,在 jenkins 上再次执行接口自动化 job,终于是蓝色的啦!问题解决!
在安装第三方库,设置镜像源为 https 的时候也会报这个错误,解决方法一样。
如果对你有帮助,点赞哦~~