最新新配置了一台服务器。安装 的时候直接使用了最新的Python 3.7最新版本。

安装成功,编译成功。但是用pip 安装包的时候提示:pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available。

已经习惯了用pip安装各种包,突然不能用,还是非常 不习惯 。果断寻找解决方案。

搜索了一些资料,发现原因是python3.7为了安全性考虑,要求使用openssl 1.0.2之后的版本。但是服务器安装的时候,版本是1.0.1。

openssl是什么东西可以百度一下,其实就是加密传输相关的一些基础库。但是在Linux里面广泛使用。几乎所有的服务器都需要它支持。

可以通过openssl version查看SSL库版本号。

于是想到升级OpenSSL。此处坑来了。yum安装这些基础库最简单快捷,但是包括阿里云最新的yum镜像里面,也是使用的1.0.1的openssl。所以用yum 是无法升级的,需要手动编译。

于是安装最新的1.0.2希望能解决这个问题:

wget http://www.openssl.org/source/openssl-1.0.2j.tar.gz
tar -xzf openssl-1.0.2j.tar.gz
cd openssl-1.0.2j
./config
./config -t
make
make install
openssl version #查看版本

编译成功也能正常使用,但是pip依然不能使用,需要重装Python。于是

wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
tar -xvJf Python-3.7.0.tar.xz
cd Python-3.7.0
./configure --with-ssl --enable-optimizations --with-openssl=/usr/local/openssl
make && make install

还是失败。于是在Make的时候仔细看了一下,发现另有错误信息。

Could not build the ssl module!
Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().
LibreSSL 2.6.4 and earlier do not provide the necessary APIs, https://github.com/libressl-portable/portable/issues/381

还是找不到openssl 1.0.2。不知道是不是编译的流程有问题。按理说最简单的包应该没有什么问题。估计问题出在openssl安装好了之后,相关的系统的lib库没有更新。

于是继续搜索了一次。发现如果安装Open SSL 1.0.2。某些程序会报错。还有说安装openssl的时候,安装配置需要改

./config

改为

./config shared zlib

由于要赶时间使用。所以先用了简单方案。换回Python3.6.6使用。

安装方法:

wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz
tar xzf Python-3.6.6.tgz
cd Python-3.6.6
./configure --enable-optimizations

make
make install

然后使用

curl https://bootstrap.pypa.io/get-pip.py | python3

安装pip,之后可以正常使用。

后续又搜索了一下安装和升级Openssl的方法。

1、安装依赖

yum install -y zlib

2、编译和安装

wget http://www.openssl.org/source/openssl-1.0.2j.tar.gz
tar -xzf openssl-1.0.2j.tar.gz
cd openssl-1.0.2j
./config shared zlib

./config -t
make
make install
openssl version #查看版本

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

但是没有进行一波测试。因为线上已经使用python3.6在跑服务了。

理论上应该可行。

另外有意思的是python3.7官方推荐使用LibRessl进行SSL加密传输

https://www.libressl.org/

但是却没有相关的文档 ,怎么编译到python3.7里面。还是说直接安装了就会自动使用libressl,尚未可知。

最新文章

  1. 我刚知道的WAP app中meta的属性
  2. Mac中体验ASP.NET 5 beta2的K gen代码生成
  3. Nodejs的模块实现
  4. bootstrap-dropdown
  5. Maven 实用命令和技巧
  6. Hadoop CDH5 集群管理
  7. LICEcap GIF 屏幕录制工具
  8. https+ssl详解
  9. 检测iOS的APP性能的一些方法
  10. 100%会用到的angularjs的知识点【新手可mark】
  11. (转)Linux性能调优之虚拟内存篇
  12. Linux 安装配置 JDK 8
  13. 浅谈web网站架构演变过程(转)
  14. SHDocVw, AxSHDocVw的引用
  15. multipleOutputs Hadoop
  16. VB.NET 使用ADODB連接資料庫滙出到EXCEL
  17. MVC5 + EF6 完整教程 (转)
  18. Confluence 6 删除垃圾内容
  19. javascript 关键字高亮显示实现代码
  20. jQuery中click事件多次触发解决方案

热门文章

  1. 纯CSS3滑动开关按钮
  2. MySQL性能优化之max_connections参数
  3. BeatSaber节奏光剑插件开发官方教程1-创建一个插件模板
  4. 《Language Implementation Patterns》之 语言翻译器
  5. 堆与堆排序、Top k 问题
  6. maven更换下载镜像源-解决下载慢问题
  7. 通过wifi连接android设备的方法
  8. scala学习手记5 - 元组与多重赋值
  9. angularjs笔记(1)
  10. D3.js学习笔记(二)——使用绑定在DOM上的数据