Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Ubuntu中将OpenSSL从1.0.2g升级到1.1.0g,并让python识别新的OpenSSL_Ssl_Openssl_Ubuntu 16.04_Tls1.2_Pyopenssl - Fatal编程技术网

如何在Ubuntu中将OpenSSL从1.0.2g升级到1.1.0g,并让python识别新的OpenSSL

如何在Ubuntu中将OpenSSL从1.0.2g升级到1.1.0g,并让python识别新的OpenSSL,ssl,openssl,ubuntu-16.04,tls1.2,pyopenssl,Ssl,Openssl,Ubuntu 16.04,Tls1.2,Pyopenssl,我有ubuntu16.04。它有OpenSSL 1.0.2g。我需要使用OpenSSL 1.1.0g。请注意,OpenSSL 1.1.0g安装在我的另一台机器上Ubuntu 18。但是我需要在Ubuntu 16.04中运行python程序,但是我需要特定的OpenSSL 1.1.0g。我做到了: sudo apt-get upgrade sudo apt-get update 但是我的Ubuntu机器中的OpenSSL没有得到更新。我如何更新它 我使用pythonsocket、ssl模块在端口

我有
ubuntu16.04
。它有
OpenSSL 1.0.2g
。我需要使用
OpenSSL 1.1.0g
。请注意,OpenSSL 1.1.0g安装在我的另一台机器上
Ubuntu 18
。但是我需要在Ubuntu 16.04中运行python程序,但是我需要特定的OpenSSL 1.1.0g。我做到了:

sudo apt-get upgrade
sudo apt-get update
但是我的Ubuntu机器中的
OpenSSL
没有得到更新。我如何更新它

我使用python
socket、ssl
模块在端口443中建立TLS连接。如果我将旧的
openssl1.0.2g
更新为
openssl1.1.0g
,python会自动识别
openssl1.1.0g

升级
OpenSSL
的原因是我需要运行python程序ssl socket,但我需要该程序使用
OpenSSL 1.1.0g

当我尝试时:

sudo apt-get install openssl
并通过以下方式检查OpenSSL版本:
OpenSSL版本-a
我得到了旧版本的OpenSSL 1.0.2g


如何在我的
Ubuntu 14.06
机器上获得新版本
OpenSSL 1.1.0g

为什么你不能在Ubuntu 16.04上运行OpenSSL 1.1.0g,只需更新:

您的
ubuntu18
具有
OpenSSL 1.1.0g
,因为其存储库中提供的版本。有时,它在存储库系统上有一个以上版本的包。但是,看起来Ubuntu 16.04根本没有您需要的版本。这就是为什么你不能,也不能仅仅通过更新就在
ubuntu16.04
上运行
openssl1.1.0g
。存储库上可用的版本为

以及如何做到这一点:

您需要手动安装它,或者为
ubuntu16.04
找到一个存储库,使
OpenSSL 1.1.0g
在系统上可用。我不确定是否有可用的存储库,因此如果要手动安装,请执行以下操作:

wget https://www.openssl.org/source/old/1.1.0/openssl-1.1.0g.tar.gz
tar xzvf openssl-1.1.0g.tar.gz
cd openssl-1.1.0g
./config
make
sudo make install

openssl version -a
就是这样

警告:通过安装系统中不可用的OpenSSL新版本,默认情况下,您引入的版本与系统维护提供的更新不兼容。你需要自己照顾它。也许,根据您的场景,只需使用默认需要的OpenSSL版本的
Ubuntu18
就值得了。这是最简单、最安全的方法

希望一切顺利。
祝你好运

以下是我如何从源代码安装最新版本的openssl

#安装编译源代码所需的make和包
apt get install-y libfindbin libs perl build-sential
#下载源代码
wgethttps://github.com/openssl/openssl/archive/refs/tags/OpenSSL_1_1_1k.tar.gz -O openssl.tar.gz
#提取源代码
tar-xf openssl.tar.gz
#转到源代码文件夹
cd openssl-openssl_1_1_1k
#配置以编译它
./config--libdir=/usr/local/lib
#使用4个parelel作业编译
make-j4
#安装编译代码
sudo制作安装
#移动较旧的可执行文件
sudo mv/usr/bin/openssl/usr/bin/openssl-1.0.2g
#创建指向更新版本openssl的软符号链接
sudo ln-s/usr/local/bin/openssl/usr/bin/openssl
#使安装在/usr/local/lib的新库可见
sudoldconfig

非常感谢您抽出时间回答。我确实按照您提到的步骤从存储库中安装了它。安装似乎很成功。但同样,当我检查版本时,显示的是旧版本。我放弃了OpenSSL,将我的设备格式化为Ubuntu18。谢谢,它成功了!当然,最好的建议是升级到Ubuntu18ThankyouEdson。顺便说一句,在完成了所有的制作/安装之后,如果你看到这一点,就像我在Ubuntu 16.04.6 x86_64上看到的一样,
$openssl版本-加载共享库时出现openssl:错误:libssl.so.1.1:无法打开共享对象文件:没有这样的文件或目录
然后使用ldconfig或只需键入以下行:
导出LD\u LIBRARY\u PATH=/usr/local/lib/
非常欢迎@ywu。感谢您的贡献。@edson.a.soares从上的这个命令
make
它对我不起作用。我的是Ubuntu 16.04 LTS。
ln-s/usr/local/bin/openssl/usr/bin/openssl
?!?!?天哪,不!!!!永远不要使用操作系统提供的二进制文件。您认为下一次更新操作系统时会发生什么,而
openssl
二进制文件是更新的一部分?