Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.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
Python 3.x 使用自定义openssl在python 3.8.0中安装加密的问题_Python 3.x_Linux_Pip_Cryptography_Paramiko - Fatal编程技术网

Python 3.x 使用自定义openssl在python 3.8.0中安装加密的问题

Python 3.x 使用自定义openssl在python 3.8.0中安装加密的问题,python-3.x,linux,pip,cryptography,paramiko,Python 3.x,Linux,Pip,Cryptography,Paramiko,我参与了一个编译Python3.8和一组库的项目,这些库将部署在RHEL6和RHEL7的混合机器中。此外,由于RHEL6和RHEL7(主要是在/lib64中找到的某些库)的不同,如果我在RHEL7框中编译它,我的python安装在RHEL6框中不起作用,但反过来可以起作用。所以我现在尝试在RHEL6机器中编译这些东西,打包并全面部署 请注意,我正在编译Python3.8,这些库是气隙机器,所以我只是将源代码从另一台机器传输到构建机器 我遇到的第一个问题是,Python3.8抱怨ssl库的旧版本,

我参与了一个编译Python3.8和一组库的项目,这些库将部署在RHEL6和RHEL7的混合机器中。此外,由于RHEL6和RHEL7(主要是在/lib64中找到的某些库)的不同,如果我在RHEL7框中编译它,我的python安装在RHEL6框中不起作用,但反过来可以起作用。所以我现在尝试在RHEL6机器中编译这些东西,打包并全面部署

请注意,我正在编译Python3.8,这些库是气隙机器,所以我只是将源代码从另一台机器传输到构建机器

我遇到的第一个问题是,Python3.8抱怨ssl库的旧版本,我使用下面链接中概述的步骤解决了这个问题

这就是我遇到问题的地方。我使用了我之前编译的openssl来构建Python3.8,并使用它来编译密码,注意下面的链接

加密技术安装得很好,但它仍然指向本机libssl,而不是我编译的新更新libssl

在生成控制盘的部分中,我打开了调试模式,并注意到这些命令

  running build_ext
  generating cffi module 'build/temp.linux-x86_64-3.8/_padding.c'
  creating build/temp.linux-x86_64-3.8
  generating cffi module 'build/temp.linux-x86_64-3.8/_constant_time.c'
  generating cffi module 'build/temp.linux-x86_64-3.8/_openssl.c'
  building '_openssl' extension
  creating build/temp.linux-x86_64-3.8/build
  creating build/temp.linux-x86_64-3.8/build/temp.linux-x86_64-3.8
  gcc -pthread -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/apps/ops/python3/include/python3.8 -c build/temp.linux-x86_64-3.8/_openssl.c -o build/temp.linux-x86_64-3.8/build/temp.li
nux-x86_64-3.8/_openssl.o -Wconversion -Wno-error=sign-conversion

看起来生成的_openssl.o只使用了操作系统的本机库,尽管我看到我的交换机很快就正确地显示出来了

  gcc -pthread -shared -Wl,-rpath,/apps/ops/python3/openssl/lib -Wl,-rpath,/apps/ops/python3/openssl/lib -Wl,-rpath,/apps/ops/python3/openssl/lib build/temp.linux-x86_64-3.8/build/temp.linux
-x86_64-3.8/_openssl.o -lssl -lcrypto -o build/lib.linux-x86_64-3.8/cryptography/hazmat/bindings/_openssl.abi3.so
  building '_constant_time' extension
  gcc -pthread -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/apps/ops/python3/include/python3.8 -c build/temp.linux-x86_64-3.8/_constant_time.c -o build/temp.linux-x86_64-3.8/build/t
emp.linux-x86_64-3.8/_constant_time.o
  gcc -pthread -shared -Wl,-rpath,/apps/ops/python3/openssl/lib -Wl,-rpath,/apps/ops/python3/openssl/lib -Wl,-rpath,/apps/ops/python3/openssl/lib build/temp.linux-x86_64-3.8/build/temp.linux
-x86_64-3.8/_constant_time.o -o build/lib.linux-x86_64-3.8/cryptography/hazmat/bindings/_constant_time.abi3.so
  building '_padding' extension
  gcc -pthread -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/apps/ops/python3/include/python3.8 -c build/temp.linux-x86_64-3.8/_padding.c -o build/temp.linux-x86_64-3.8/build/temp.li
nux-x86_64-3.8/_padding.o
  gcc -pthread -shared -Wl,-rpath,/apps/ops/python3/openssl/lib -Wl,-rpath,/apps/ops/python3/openssl/lib -Wl,-rpath,/apps/ops/python3/openssl/lib build/temp.linux-x86_64-3.8/build/temp.linux
-x86_64-3.8/_padding.o -o build/lib.linux-x86_64-3.8/cryptography/hazmat/bindings/_padding.abi3.so
请看下面的输出。我在这里完全搞不清楚这是怎么回事,还是这根本不可行,我必须考虑另一种解决方案

(env) [user1@devhost wheelhouse]$ python -c "from cryptography.hazmat.backends.openssl.backend import backend;print('Loaded: ' + backend.openssl_version_text());print('Linked Against: '
 + backend._ffi.string(backend._lib.OPENSSL_VERSION_TEXT).decode('ascii'))"
/home/user1/tmp/env/lib/python3.8/site-packages/cryptography/hazmat/bindings/openssl/binding.py:159: CryptographyDeprecationWarning: OpenSSL version 1.0.1 is no longer supported by the Open
SSL project, please upgrade. The next version of cryptography will drop support for it.
  warnings.warn(
Loaded: OpenSSL 1.0.1e-fips 11 Feb 2013
Linked Against: OpenSSL 1.0.1e 11 Feb 2013

(env) [user1@devhost wheels]$ python -c 'import ssl; print (ssl.OPENSSL_VERSION)'
OpenSSL 1.0.2t  10 Sep 2019

你读过吗。似乎您需要用新的
OpenSSL
版本重新编译Python,因为
Cryptography
不想与其他版本链接。也许
Cryptography
会询问
Python
OpenSSL
在哪里。我已经用本地版本的OpenSSL编译了我的Python,它链接得很好。我只是很难说服加密技术指向Openssl python3所知道的同一本地版本。我相当肯定这与cffi有关,但我不太了解这个模块,所以我正在努力解决它。